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

2021-03-07 10:26:32 字數 5006 閱讀 8901

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語言,挺不錯的,簡單易懂,零基礎也可以學。藍屏 兄弟如...