1樓:匿名使用者
微控制器有比較指令cmp的嗎,請回答者再看看書吧。可以用cjne指令,它有比較功能,如cjne a,#data,label 當a<#data時,進製位置一,就可以判斷了。程式如下:
clr c ;先把進製位清零,以防誤判cjne a,#data,no_equ ;不等則轉到no_equ,相等則直接順序執行
....... ;執行相等時的程式no_equ:
jc lower ;繼續判斷,小於則跳轉到 lower,大於則順序執行
.......
lower:
......end
2樓:匿名使用者
不要想複雜了,兩個cmp就可以啦
cmp r0,r2
jb abc
cmp r1,r3
jb abc
jmp nobelow
abc:
...nobelow:...
3樓:匿名使用者
還是自己看書學習吧 這個簡單的問題 多看幾遍自然會了
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樓:匿名使用者
微控制器比較大小可以用減法指令來實現, 比如比較兩個數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
8樓:匿名使用者
微控制器實驗中,用組合語言程式設計比較兩個數大小,主要用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 ;
怎麼用c51微控制器組合語言程式設計實現兩個數的比較,不相等則繼續執行,相等則跳轉?
9樓:匿名使用者
緊跟在你的cjne指令後根據你的比較方式再加一條判c指令再次判斷或轉移就行了。
10樓:匿名使用者
cjne指令。***pare,jump if not equal。
11樓:興藍諾
cjne a,b,tiao(如果a與b不一樣就跳到位址標號tiao執行指令b,若一樣就繼續執行下一條指令a)
指令atiao:指令b
51彙編實現比較三個數的大小並排序
12樓:做而論道
假設有三個數存在40h、41h、42h單元中。
先在三個數字中,找乙個最大的,放在40h。
再在餘下的兩個數字中,找乙個最大的,放在41h。
13樓:匿名使用者
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
14樓:匿名使用者
;氣泡排序
*** 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
微控制器組合語言中比較指令
15樓:
剛好也有這麼個困惑,已經解決了,拿出來分享下
比較轉移指令 cjnz
cjne a,#data,rel
cjne a,direct,rel
cjne rn,#data,rel
cjne @ri,#data,rel
第一條指令的功能是將a中的值和立即數data比較,如果兩者相等,就次序執行(執行本
指令的下一條指令),如果不相等,就轉移,同樣地,我們能將rel理解成標號,即:cjnea,
#data,標號。這樣利用這條指令,我們就能判斷兩數是否相等,這在很多場合是非常有用的。
但有時還想得知兩數比較之後哪個大,哪個小,本條指令也具有這樣的功能,如果兩數不相等,則cpu還會反映出哪個數大,哪個數小,這是用cy(進製位)來實現的。如果前面的
數(a中的)大,則cy=0,不然cy=1,因此在程式轉移後再次利用cy就可判斷出a中的數
比data大還是小了。
例: mov a,r0
cjne a,#10h,l1
mov r1,#0ffh
ajmp l3
l1: jc l2
mov r1,#0aah
ajmp l3
l2: mov r1,#0ffh
l3: sjmp l3
jc是判cy是0,還是1進行轉移,如果cy=1,則轉移到jc後面的標號處
執行,如果cy=0則次序執行(執行它的下面一條指令)。
分析一下上面的程式,如果(a)=10h,則次序執行,即r1=0。如果(a)不等於10h,則轉
到l1處繼續執行,在l1處,再次進行判斷,如果(a)>10h,則cy=1,將次序執行,即執
行mov r1,#0aah指令,而如果(a)<10h,則將轉移到l2處指行,即執行mov r1,#0ffh
指令。因此最終結果是:本程式執行前,如果(r0)=10h,則(r1)=00h,如果(r0)>10h,
則(r1)=0aah,如果(r0)<10h,則(r1)=0ffh。
弄懂了這條指令,其它的幾條就類似了,第二條是把a當中的值和直接位址中的值比較,第
三條則是將直接位址中的值和立即數比較,第四條是將間址定址得到的數和立即數比較,這
裡就不詳談了,下面給出幾個對應的例程。
cjne a,10h ;把a中的值和10h中的值比較(注意和上題的區別)
cjne 10h,#35h ;把10h中的值和35h中的值比較
cjne @r0,#35h ;把r0中的值作為位址,從此位址中取數並和35h比較
51微控制器倒序指令組合語言,51微控制器的指令是組合語言嗎
func 版 mov r0,0 權 mov r7,8 loop rlc a xch a,r0 rrc a xch a,r0 djnz r7,loop mov a,r0ret 51微控制器的指令是組合語言嗎?組合語言 assembly language 是一種用於電子計算機 微處理器版 微控制器或其他...
51微控制器學習使用C語言好還是組合語言好
微控制器用c語言還是組合語言好?當然是c語言了,那是因為如下原因 1 c語言是高階語言,移植性好,易於維護 2 程式設計靈活,隨心所欲 3 語言層次分明,思路清晰,可讀性強。4.c語言是目前最流行的微控制器程式語言,例程 多,便於參考,微控制器技術發展之快,應用之廣,學習群體日益龐大,這和keil ...
PIC微控制器c語音變成組合語言,微控制器大神進,如何將C語言變
有個組合語言轉換器 你自己找找 這個轉化也不是很精確 很容易是自己迷糊,建議還是用c好,現在還用彙編 out了 如何用keil uvision2把c語言的微控制器程式轉換為組合語言 彙編是不可能用軟體自動轉成c語言的,想轉成c就自己寫,反正是自己的程式,程式流程內是不用變容的。keil uvisio...