51微控制器用組合語言怎麼程式設計幾個有符號數的比較大小

2021-03-07 10:26:32 字數 4009 閱讀 8136

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 分隔開來 要問什麼啊,是程式呢,還是哪...