微控制器組合語言中共有多少種註記符

2021-05-25 21:23:16 字數 5990 閱讀 3234

1樓:生活如歌

指令中大約43種助記符,不包含偽指令。

movmovc

movx

push

popxch

xchd

addaddc

subb

incdec

muldiv

daanl

orlxrl

cplclr

setb

rlrr

rlcrrc

swap

ajmp

ljmp

sjmp

jmpjz

jnzjc

jncjb

jnbjbc

cjne

djnz

acall

lcall

retretinop

2樓:匿名使用者

51微控制器彙編指令速查表

指令格式 功能簡述 位元組數 週期

一、資料傳送類指令

mov a, rn 暫存器送累加器 1 1

mov rn,a 累加器送暫存器 1 1

mov a ,@ri 內部ram單元送累加器 1 1

mov @ri ,a 累加器送內部ram單元 1 1

mov a ,#data 立即數送累加器 2 1

mov a ,direct 直接定址單元送累加器 2 1

mov direct ,a 累加器送直接定址單元 2 1

mov rn,#data 立即數送暫存器 2 1

mov direct ,#data 立即數送直接定址單元 3 2

mov @ri ,#data 立即數送內部ram單元 2 1

mov direct ,rn 暫存器送直接定址單元 2 2

mov rn ,direct 直接定址單元送暫存器 2 2

mov direct ,@ri 內部ram單元送直接定址單元 2 2

mov @ri ,direct 直接定址單元送內部ram單元 2 2

mov direct2,direct1 直接定址單元送直接定址單元 3 2

mov dptr ,#data16 16位立即數送資料指標 3 2

movx a ,@ri 外部ram單元送累加器(8位地址) 1 2

movx @ri ,a 累加器送外部ram單元(8位地址) 1 2

movx a ,@dptr 外部ram單元送累加器(16位地址) 1 2

movx @dptr ,a 累加器送外部ram單元(16位地址) 1 2

movc a ,@a+dptr 查表資料送累加器(dptr為基址) 1 2

movc a ,@a+pc 查表資料送累加器(pc為基址) 1 2

xch a ,rn 累加器與暫存器交換 1 1

xch a ,@ri 累加器與內部ram單元交換 1 1

xchd a ,direct 累加器與直接定址單元交換 2 1

xchd a ,@ri 累加器與內部ram單元低4位交換 1 1

swap a 累加器高4位與低4位交換 1 1

pop direct 棧頂彈出指令直接定址單元 2 2

push direct 直接定址單元壓入棧頂 2 2

二、算術運算類指令

add a, rn 累加器加暫存器 1 1

add a, @ri 累加器加內部ram單元 1 1

add a, direct 累加器加直接定址單元 2 1

add a, #data 累加器加立即數 2 1

addc a, rn 累加器加暫存器和進位標誌 1 1

addc a, @ri 累加器加內部ram單元和進位標誌 1 1

addc a, #data 累加器加立即數和進位標誌 2 1

addc a, direct 累加器加直接定址單元和進位標誌 2 1

inc a 累加器加1 1 1

inc rn 暫存器加1 1 1

inc direct 直接定址單元加1 2 1

inc @ri 內部ram單元加1 1 1

inc dptr 資料指標加1 1 2

da a 十進位制調整 1 1

subb a, rn 累加器減暫存器和進位標誌 1 1

subb a, @ri 累加器減內部ram單元和進位標誌 1 1

subb a, #data 累加器減立即數和進位標誌 2 1

subb a, direct 累加器減直接定址單元和進位標誌 2 1

dec a 累加器減1 1 1

dec rn 暫存器減1 1 1

dec @ri 內部ram單元減1 1 1

dec direct 直接定址單元減1 2 1

mul ab 累加器乘暫存器b 1 4

div ab 累加器除以暫存器b 1 4

三、邏輯運算類指令

anl a, rn 累加器與暫存器 1 1

anl a, @ri 累加器與內部ram單元 1 1

anl a, #data 累加器與立即數 2 1

anl a, direct 累加器與直接定址單元 2 1

anl direct, a 直接定址單元與累加器 2 1

anl direct, #data 直接定址單元與立即數 3 1

orl a, rn 累加器或暫存器 1 1

orl a,@ri 累加器或內部ram單元 1 1

orl a,#data 累加器或立即數 2 1

orl a,direct 累加器或直接定址單元 2 1

orl direct, a 直接定址單元或累加器 2 1

orl direct, #data 直接定址單元或立即數 3 1

xrl a, rn 累加器異或暫存器 1 1

xrl a,@ri 累加器異或內部ram單元 1 1

xrl a,#data 累加器異或立即數 2 1

xrl a,direct 累加器異或直接定址單元 2 1

xrl direct, a 直接定址單元異或累加器 2 1

xrl direct, #data 直接定址單元異或立即數 3 2

rl a 累加器左迴圈移位 1 1

rlc a 累加器連進位標誌左迴圈移位 1 1

rr a 累加器右迴圈移位 1 1

rrc a 累加器連進位標誌右迴圈移位 1 1

cpl a 累加器取反 1 1

clr a 累加器清零 1 1

四、控制轉移類指令類

accall addr11 2kb範圍內絕對呼叫 2 2

ajmp addr11 2kb範圍內絕對轉移 2 2

lcall addr16 2kb範圍內長呼叫 3 2

ljmp addr16 2kb範圍內長轉移 3 2

sjmp rel 相對短轉移 2 2

jmp @a+dptr 相對長轉移 1 2

ret 子程式返回 1 2

ret1 中斷返回 1 2

jz rel 累加器為零轉移 2 2

jnz rel 累加器非零轉移 2 2

cjne a ,#data ,rel 累加器與立即數不等轉移 3 2

cjne a ,direct ,rel 累加器與直接定址單元不等轉移 3 2

cjne rn,#data ,rel 暫存器與立即數不等轉移 3 2

cjne @ri ,#data,rel ram單元與立即數不等轉移 3 2

djnz rn ,rel 暫存器減1不為零轉移 2 2

djnz direct ,rel 直接定址單元減1不為零轉移 3 2

nop 空操作 1 1

五、布林操作類指令

mov c, bit 直接定址位送c 2 1

mov bit, c c送直接定址位 2 1

clr c c清零 1 1

clr bit 直接定址位清零 2 1

cpl c c取反 1 1

cpl bit 直接定址位取反 2 1

setb c c置位 1 1

setb bit 直接定址位置位 2 1

anl c, bit c邏輯與直接定址位 2 2

anl c, /bit c邏輯與直接定址位的反 2 2

orl c, bit c邏輯或直接定址位 2 2

orl c, /bit c邏輯或直接定址位的反 2 2

jc rel c為1轉移 2 2

jnc rel c為零轉移 2 2

jb bit,rel 直接定址位為1轉移 3 2

jnb bit,rel 直接定址為0轉移

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

3樓:匿名使用者

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

4樓:做而論道

設內部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

5樓:匿名使用者

subb a,b

jnb cy ,d0 ;d0是a>b

微控制器組合語言中 cy ac ov 分別是什麼意思?

6樓:仰望角45度

你說的 cy ac ov 是psw(程式狀態字暫存器)中的標誌位。

cy:進位標誌位;

當cy=1時,表示操作結果最高位(位7)有進位或借位。

cy=0時,表示操作結果最高位(位7)沒有進位或借位。

ac:半進位標誌位;

該位表示當進行加法或減法運算時,低半位元組向高半位元組是否有進位或借位;

當ac=1時,表示低半位元組向高半位元組有進位或借位;

ac=0時,表示低半位元組向高半位元組沒有進位或借位;

ov:溢位標誌位,

該位表示在進行有符號數的加減法時是否發生溢位;

當0v=1時,表示有符號數運算結果發生了溢位,ov=0時,表示有符號數運算結果沒有溢位。

可以參考!

希望以上的回答對你有幫助!謝謝!

51微控制器外部中斷組合語言問題

主程式是 流水燈0到7依次點亮 流水燈7到0依次點亮,反覆迴圈。外部中斷程式是 燈全亮 全滅3次。但是,程式沒有開中斷的指令,中斷程式是不會執行的。start 在下面新增 setb ea 開總中斷.setb ex0 開int0中斷.clr it0 設定int0為電平觸發.mov a,00h 外部中斷...

51微控制器組合語言的理解,坐等,求高手

mov 30h,250這條指令,是3位元組 2週期指令,機器碼是 75 30 fa 先取指,再執行。在第一個機器週期取到指令的前兩個位元組 75 30,在第二個機器週期的前半週期取到指令的第三個位元組 fa 250 第二個機器週期的後半週期執行該指令的操作,即將立即數250傳送到30h單元。按上述過...

準備學51微控制器的組合語言,求大神幫我分析下這段程式各個指令

程式註釋已經很詳細了,這裡說說功能吧。程式功能很簡單,就是當兩個鍵同時按下時,接通電磁鐵3毫秒,然後等待鍵釋放,如此迴圈。求組合語言大神,幫我翻譯一段程式,是8051微控制器的一段程式,每步是幹什麼的 越詳細越好!謝謝!rs equ p3.3 rw equ p3.4 e equ p3.5 分別bai...