微控制器組合語言怎麼去比較倆個數的大小

2021-03-03 22:03:25 字數 4726 閱讀 6573

1樓:匿名使用者

cjne指令,影響cy標誌位,比如,執行cjne a,#data,rel後,當a=data時,cy=0,

微控制器 組合語言 兩數比較大小

2樓:匿名使用者

微控制器有比較指令cmp的嗎,請回答者再看看書吧。可以用cjne指令,它有比較功能,如cjne a,#data,label 當a<#data時,進位位置一,就可以判斷了。程式如下:

clr c ;先把進位位清零,以防誤判cjne a,#data,no_equ ;不等則轉到no_equ,相等則直接順序執行

....... ;執行相等時的程式no_equ:

jc lower ;繼續判斷,小於則跳轉到 lower,大於則順序執行

.......

lower:

......end

3樓:匿名使用者

不要想複雜了,兩個cmp就可以啦

cmp r0,r2

jb abc

cmp r1,r3

jb abc

jmp nobelow

abc:

...nobelow:...

4樓:匿名使用者

還是自己看書學習吧 這個簡單的問題 多看幾遍自然會了

微控制器實驗中,怎麼用匯編比較大小?

5樓:匿名使用者

微控制器比較大小可以用減法指令來實現, 比如比較兩個數a與b的大小,步驟如下:

1、先將借位清0。

2、執行指令subb,也就是a-b。

3、判斷,借位c的狀態,如果c等於1,那麼ab。

舉例如下:

cmpdat:

mov a,30h ;將被減數送累加器aclr c ;清借位subb a,31h ;減法運算

jc cmpd1 ;如果有借位轉

clr p1.0 ;點亮p1.0led燈,說明30h數大retcmdpd1:

clr p1.1 ;點亮p1.1燈,說明31h數大。ret

6樓:匿名使用者

微控制器實驗中,用組合語言程式設計比較兩個數大小,主要用subb減法指令,也可以使用cjne指令。示例程式如下:

;啟動入口

*** 0000h ;復位啟動

ljmp start ;

*** 0100h ;

;;主控程式

start: mov r0,#30h

mov x,#0

mov y,#0

loop: mov a,@r0

clr c

subb a,#111

jnc next

cpl c

mov a,@r0

subb a,y

jc num

mov y,@r0

num: mov a,@r0

subb a,#60

jc incr0

inc x

incr0: inc r0

jmp loop

next: jmp $

;x equ 20h ;

y equ 21h ;

end ;

51微控制器 用組合語言怎麼程式設計:幾個有符號數的比較大小

7樓:匿名使用者

51微控制器中,沒有專門的有符號數比較指令,只能通過一些變通的方法來實現,比如:

比較30h和40h中有符號數的大小,結果放在r2中,大於則為1,等於為0,小於為128:

cmpdat:

mov a,30h

jb acc.7,cmpf1

mov b,a

mov a,40h

jb acc.7,cmpz2 ;30h正,40h負所以30h>40h

cjne a,b,cmpz1 ;均為正,比較大小mov r2,#0

retcmpz1:

jc,cmpz2

cmpz11:

mov r2,#128

retcmpz2:

mov r2,#1

retcmpf1:

anl a,#7fh

mov b,a

mov a,40h

jnb acc.7,cmpf3 ;30h負,40h負sjmp cmpz11 ;30負,40h正,所以30h<40hcmpf3:

anl a,#7fh

cjne a,b,cmpf10 ;兩個均為負數mov r2,#0

retcmpf10:

jc cmpz2 ;30h<40h(負數小者大)sjmp cmpz11 ;30h>40h

8樓:做而論道

設內部ram中的30h和31h單元中有兩個帶符號數,求其中的大數,放在32h單元中。

; mov 32h, 30h ;先取一個放好.

mov a, 30h

clr c

subb a, 31h ;(30h)-(31h)

jnb acc.7, zzz ;差為正數則轉移.

jb ov, _end ;負、且溢位轉至結尾.

sjmp *** ;否則去存31h

zzz:

jnb ov, _end ;差為正、且無溢位轉至結尾.

***:

mov 32h, 31h

_end:

sjmp $end

9樓:匿名使用者

subb a,b

jnb cy ,d0 ;d0是a>b

51彙編實現比較三個數的大小並排序

10樓:做而論道

假設有三個數存在40h、41h、42h單元中。

先在三個數字中,找一個最大的,放在40h。

再在餘下的兩個數字中,找一個最大的,放在41h。

11樓:匿名使用者

51微控制器實現比較三個數的大小,並將數由小到大分別存入40h、41h、42h單元中

*** 0000h

ajmp main

*** 0100h

main: mov 30h,#98h

mov 31h,#88h

mov 32h,#78h

mov a,30h

cjne a,31h,***p1

***p1: jc b1

cjne a,32h,***p2

***p2: jc a1

mov 42h,30h

mov a,31h

cjne a,32h,a2

a2: jc a3

mov 41h,31h

mov 40h,32h

sjmp $

a3: mov 41h,32h

mov 40h,31h

sjmp $

a1: mov 42h,32h

mov 41h,30h

mov 40h,31h

sjmp $

b1: mov a,31h

cjne a,32h,***p3

***p3: jc b3

mov 42h,31h

mov a,30h

cjne a,32h,***p4

***p4: jc b3

mov 41h,30h

mov 40h,32h

sjmp $

b3: mov 42h,32h

mov 41h,31h

mov 40h,30h

sjmp $ ;

b2: mov 42h,32h ;

mov 41h,31h ;

mov 40h,30h ;

sjmp $end

12樓:匿名使用者

;氣泡排序

*** 0000h

sjmp main

*** 0030h

main: mov 30h,#65hmov 31h,#61h

mov 32h,#66h

mov r0,#30h

mov r3,#2

mov r4,#2

loop: mov a,@r0

inc r0

mov b,@r0

cjne a,b,k1

k1:jc l1

djnz r3,loop

djnz r4,l2

sjmp l3

l1:xch a,@r0

dec r0

mov @r0,a

inc r0

djnz r3,loop

djnz r4,l2

sjmp l3

l2:mov r0,#30h

mov r3,#1

ljmp loop

l3: nop

end;懸劍

;yinweiyounidecunzai

微控制器組合語言裡 db,微控制器組合語言裡 DB

微控制器匯bai 編語言中的db是以位元組du為單位定zhi義一個資料段,一dao般用於查表程式中,舉例回 說明 display mov dptr,tab mov a,r2 movc a,a dptr mov p0,a rettab 共陰極答數碼管顯示 表db 3fh,06h,5bh,4fh,66h...

微控制器中斷返回指令,微控制器組合語言指令中中斷返回指令RET和RETI有什麼不同?

程式結構錯誤。mov th0,65536 50000 256 定時50毫秒 mov tl0,65536 50000 256mov ie,82h setb tr0 主程式,到這,就沒有了,這那行?timer 下面就是 定時器中斷服務程式mov th0,65536 50000 256 初脈衝50ms m...

如何在51微控制器使用c語言跟組合語言

如何用keil在 baic中嵌入彙編 要在duc檔案zhi中要嵌入彙編dao的地方用 pragma a 和 pragma enda 分隔開來內 具體請查容看 keil c 手冊裡有介紹 在c檔案中要嵌入彙編的地方用 pragma a 和 pragma enda 分隔開來 要問什麼啊,是程式呢,還是哪...