1樓:匿名使用者
微控制器比較大小可以用減法指令來實現, 比如比較兩個數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
2樓:匿名使用者
微控制器實驗中,用組合語言程式設計比較兩個數大小,主要用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 ;
微控制器 組合語言 兩數比較大小
3樓:匿名使用者
微控制器有比較指令cmp的嗎,請回答者再看看書吧。可以用cjne指令,它有比較功能,如cjne a,#data,label 當a<#data時,進製位置一,就可以判斷了。程式如下:
clr c ;先把進製位清零,以防誤判cjne a,#data,no_equ ;不等則轉到no_equ,相等則直接順序執行
....... ;執行相等時的程式no_equ:
jc lower ;繼續判斷,小於則跳轉到 lower,大於則順序執行
.......
lower:
......end
4樓:匿名使用者
不要想複雜了,兩個cmp就可以啦
cmp r0,r2
jb abc
cmp r1,r3
jb abc
jmp nobelow
abc:
...nobelow:...
5樓:匿名使用者
還是自己看書學習吧 這個簡單的問題 多看幾遍自然會了
51微控制器 用組合語言怎麼程式設計:幾個有符號數的比較大小
6樓:匿名使用者
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
7樓:做而論道
設內部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
8樓:匿名使用者
subb a,b
jnb cy ,d0 ;d0是a>b
微控制器用組合語言怎樣判斷幾個數的大小?
9樓:匿名使用者
在彙編語句中沒有直接的大小運算功能,要想實現比大小,只能是減法運算然後判斷進製位是否為1,來實現。如果貴多個數,就要多次運算不停地跳轉迴圈!
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
微控制器的組合語言 如何判斷兩個無符號數的大小
13樓:匿名使用者
誰跟你說圖上是判斷有符號數大
小的程式???
這程式就是比較無符號數大小的,只不內過加了資料容搬運而已。
查了一下pic的subwf指令,的確是比較有符號數的。
如果要比較無符號數,可先判定兩個數的最高位是否同號:若異號,則最高位為1者大;若同號,再用subwf減法判定大小,參考書上這個例程。
學51微控制器用彙編還是用C語言比較好 先學彙編可以嗎
絕對可以,我就是先學習的組合語言,只有學習了彙編才能真正的了解微控制器。如果不了解微控制器的構造及原理,學c很快就會厭倦。不過c就是簡單點,容易上手,我先學的是彙編,也感覺不是很難。從絕大多數資深微控制器從業人員的經驗來看,學習微控制器從彙編入手,內 逐步過渡到c語言這容麼乙個過程最好。因為組合語言...
微控制器用組合語言程式設計的時候才會用到指令集嗎 ,指令集怎麼運用
指令集怎麼運用?用組合語言程式設計的時候,必須用指令集中的指令。用指令集,就像查字典一樣。用組合語言程式設計的時候才會用到指令集嗎?不程式設計的時候,也可以翻翻看。是的,用彙編程式設計時你將直接用到指令集的彙編形式,用c程式設計編譯後也會生成各類微控制器相應的指令集方式 機器語言了 指令集就是由二進...
想學習微控制器組合語言,怎樣學入門比較快呢
先學c語言,清華大學譚浩強的那個版本就不錯。有了基礎之後再學組合語言會容易一點。找本好點的教材。當然,自己看書總是沒有向別人討教來的容易和方便 有基礎的話自學一點問題也沒有,找一本好的書就可以了,介紹一本郭天祥編的關於微控制器的,那裡面就是用的c語言,挺不錯的,簡單易懂,零基礎也可以學。藍屏 兄弟如...