1樓:做而論道
假設有三個數存在40h、41h、42h單元中。
先在三個數字中,找一個最大的,放在40h。
再在餘下的兩個數字中,找一個最大的,放在41h。
2樓:匿名使用者
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
3樓:匿名使用者
;氣泡排序
*** 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
51微控制器 用組合語言怎麼程式設計:幾個有符號數的比較大小
4樓:匿名使用者
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
5樓:做而論道
設內部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
6樓:匿名使用者
subb a,b
jnb cy ,d0 ;d0是a>b
微控制器 組合語言 兩數比較大小
7樓:匿名使用者
微控制器有比較指令cmp的嗎,請回答者再看看書吧。可以用cjne指令,它有比較功能,如cjne a,#data,label 當a<#data時,進位位置一,就可以判斷了。程式如下:
clr c ;先把進位位清零,以防誤判cjne a,#data,no_equ ;不等則轉到no_equ,相等則直接順序執行
....... ;執行相等時的程式no_equ:
jc lower ;繼續判斷,小於則跳轉到 lower,大於則順序執行
.......
lower:
......end
8樓:匿名使用者
不要想複雜了,兩個cmp就可以啦
cmp r0,r2
jb abc
cmp r1,r3
jb abc
jmp nobelow
abc:
...nobelow:...
9樓:匿名使用者
還是自己看書學習吧 這個簡單的問題 多看幾遍自然會了
微控制器實驗中,怎麼用匯編比較大小?
10樓:匿名使用者
微控制器比較大小可以用減法指令來實現, 比如比較兩個數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
11樓:匿名使用者
微控制器實驗中,用組合語言程式設計比較兩個數大小,主要用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 ;
基於80c51的時鐘,怎樣用組合語言實現24小時與24小時的時間切換
按鍵的檢測自己寫 假設24小時的時間存在bh24 mov r0,bh24 cjne r0,0,not zero push r0 push r1 push r2 mov r0,24 not zero mov a,r0 sub a,12 anl a,080h 算數完成以後,如果a 0x80則是上午 cj...
求大神解答,用51微控制器組合語言實現紅綠燈的程式,不是路口的,大概註釋下就好
程式實現功能 西南北路口直行與轉彎交替通行,數碼管顯示直行通行倒計時,紅綠黃燈顯示包括人行道在內的道路交通狀態。某一方向道路擁擠時,可以人工控制調節東西南北方向通行時間。緊急情況時,各路 通燈顯示紅燈,數碼管保持資料不變。工作暫存器及儲存單元分配 1.工作暫存器 r2設定為定時器定時中斷次數,r6 ...
如何用組合語言實現微控制器比較轉移
pan clr cy mov 30h,a subb a,10 jb cy,prog1 mov a,30h clr cy subb a,20 jb cy,prog2 mov a,30h clr cy subb a,30 jb cy,prog3 prog1 nop prog2 nop prog3 nop...