1樓:匿名使用者
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
2樓:做而論道
設內部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
3樓:匿名使用者
subb a,b
jnb cy ,d0 ;d0是a>b
51彙編實現比較三個數的大小並排序
4樓:做而論道
假設有三個數存在40h、41h、42h單元中。
先在三個數字中,找一個最大的,放在40h。
再在餘下的兩個數字中,找一個最大的,放在41h。
5樓:匿名使用者
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
6樓:匿名使用者
;氣泡排序
*** 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
微控制器的組合語言 如何判斷兩個無符號數的大小
7樓:匿名使用者
誰跟你說圖上是判斷有符號數大
小的程式???
這程式就是比較無符號數大小的,只不內過加了資料容搬運而已。
查了一下pic的subwf指令,的確是比較有符號數的。
如果要比較無符號數,可先判定兩個數的最高位是否同號:若異號,則最高位為1者大;若同號,再用subwf減法判定大小,參考書上這個例程。
微控制器用組合語言怎樣判斷幾個數的大小?
8樓:匿名使用者
在彙編語句中沒有直接的大小運算功能,要想實現比大小,只能是減法運算然後判斷進位位是否為1,來實現。如果貴多個數,就要多次運算不停地跳轉迴圈!
微控制器 組合語言 兩數比較大小
9樓:匿名使用者
微控制器有比較指令cmp的嗎,請回答者再看看書吧。可以用cjne指令,它有比較功能,如cjne a,#data,label 當a<#data時,進位位置一,就可以判斷了。程式如下:
clr c ;先把進位位清零,以防誤判cjne a,#data,no_equ ;不等則轉到no_equ,相等則直接順序執行
....... ;執行相等時的程式no_equ:
jc lower ;繼續判斷,小於則跳轉到 lower,大於則順序執行
.......
lower:
......end
10樓:匿名使用者
不要想複雜了,兩個cmp就可以啦
cmp r0,r2
jb abc
cmp r1,r3
jb abc
jmp nobelow
abc:
...nobelow:...
11樓:匿名使用者
還是自己看書學習吧 這個簡單的問題 多看幾遍自然會了
微控制器組合語言裡 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...
在51微控制器中使用組合語言如何將8位2進位制數轉
太高深了,真沒看懂 難道8位2進位制不是2位16進位制?是不是要顯示成字元啊?比如0101 1010,在顯示器上顯示0x5a 在微控制器組合語言 程式設計中 其實 8位2進位制數 就可以直接 看成 2位16進位制數,只是 與 10進位制數 有轉換關係,組合語言中 也是通用的 如mov a,11111...
如何在51微控制器使用c語言跟組合語言
如何用keil在 baic中嵌入彙編 要在duc檔案zhi中要嵌入彙編dao的地方用 pragma a 和 pragma enda 分隔開來內 具體請查容看 keil c 手冊裡有介紹 在c檔案中要嵌入彙編的地方用 pragma a 和 pragma enda 分隔開來 要問什麼啊,是程式呢,還是哪...