微控制器指令表

2021-12-21 13:27:29 字數 7230 閱讀 5935

1樓:匿名使用者

微控制器指令功能一覽表

助記符 ** 說明

mov a,rn e8~ef 暫存器a

mov a,direct e5 dircet 直接位元組送a

mov a,@ri er~e7 間接ram送a

mov a,#data 74 data 立即數送a

mov rn,a f8~ff a送暫存器

mov rn,dircet a8~af dircet 直接位元組送暫存器

mov rn,#data 78~7f data 立即數送暫存器

mov dircet,a f5 dircet a送直接位元組

mov dircet,rn 88~8f dircet 暫存器送直接位元組

mov dircet1,dircet2 85 dircet1 dircet2 直接位元組送直接位元組

mov dircet,@ro 86~87 間接ram送直接位元組

mov dircet,#data 75 dircet data 立即數送直接位元組

mov @ri,a f6~f7 a送間接ram

mov @ri,#data 76~77 data 直接位元組送間接ram

mov @ri,#data 76~77 data 立即數送間接ram

mov dptr,#data16 90 data 15~8 16位常數送資料指標

data7~0

movc a,@a+dptr 93 由((a)+(dptr))定址的程式存貯

器位元組選a

movc a,@a+pc 83 由((a)+(pc));定址的程式存貯器位元組送a

movx a,@ri e2~e3 送外部資料(8位地址)送a

movx a,@dptr e0 送外部資料(16位地址)送a

movx @ri,a f2~f3 a送外部資料(8位地址)

movx @dptr,a f0 a送外部資料(16位地址)

push dircet c0 dircet 直接位元組進棧,sp加1

pop dircet d0 dircet 直接位元組退棧,sp減1

xch a,rn c8~cf 交換a和暫存器

xch a,dircet c5 dircet 交換a和直接位元組

xch a,@ri c6~c7 交換a和間接ram

xch a,@ri d6~d7 交換a和間接ram的低位

swap a c4

算術操作 (a的二個半位元組交換)

add a,rn 28~2f 暫存器加到a

add a,dircet 25 dircet 直接位元組加到a

add a,@ri 26~27 間接ram加到a

add a,#data 24data 立即數加到a

add a,rn 38~3f 暫存器和進位位加到a

add a,dircet 35dircet 直接位元組和進位位加到a

add a,@ri 36~37 間接位元組和進位位加到a

add a,data 34 data 立即數和進位位加到a

add a,rn 98~9f a減去暫存器和進位位

add a,dircet 95 dircet a減去直接位元組和進位位

add a,@ri 36~37 間接ram和進位位加到a

add a,data 34 data 立即數和進位位加到a

subb a,rn 98~9f a減去暫存器和進位位

subb a,dircet 95 dircet a減去直接位元組和進位位

subb a,@ri 96~97 a減去間接ram和進位位

subb a,#data 94 data a減去立即數和進位位

inc a 04 a加1

inc rn 08~0f 暫存器加1

inc dircet 05 dircet 直接位元組加1

inc @ri 06~07 間接ram加1

dec a 14 a減1

dec rn 18~1f 暫存器減1

dec dircet 15 dircet 直接位元組減1

dec @ri 16~17 間接ram減1

inc dptr a3 資料指標加1

mul ab a4 a乘以b

div ab 84 a除以b

da a d4 a的十進位制加法調整

邏輯操作

anl a,rn 58~5f 暫存器「與」到a

anl a,dircet 55 dircet 直接位元組「與」到a

anl a,@ri 56~57 間接ram「與」到a

anl a,#data 54 data 立即數「與」到a

anl dircet a 52 dircet a「與」到直接位元組

anl dircet,#data 53 dircet data 立即數「與」到直接位元組

orl a,rn 48~4f 暫存器「或」到a

orl a,dircet 45 dircet 直接位元組「或」到a

orl a,@ri 46~47 間接ram「或」到a

orl a,#data 44 data 立即數「或」到a

orl dircet,a 42 dircet a「或」到直接位元組

orl dircet,#data 43 dircet data 立即數「或」到直接位元組

xrl a,rn 68~6f 暫存器「異或」到a

xrl a,dircet 65 dircet 直接位元組「異或」到a

xrl a,@ri 66~67 間接ram「異或」到a

xrl a,#data 64 data 立即數「異或」到a

xrl dircet a 62 dircet a「異或」到直接位元組

xrl dircet,#data 63 dircet data 立即數「異或」到直接位元組

clr a e4 清零

cpl a f4 a取反

rl a 23 a左環移

rlc a 33 a通過進位左環移

rr a 03 a右環移

rrc a 13 a通過進位右環移

控制程式轉移

acall addr 11 *1 addr(a7~a0) 絕對子程式呼叫

lcall addr 16 12 addr(15~8) 長子程式呼叫

addr(7~0)

ret 22 子程式呼叫返回

reti addr 11 32 中斷呼叫返回

ajmp addr 11 △1 addr(a7~a6) 絕對轉移

ljmp addr 16 02addr(15~8) 長轉移

addr(7~0)

sjmp rel 80 rel 短轉移,相對轉移

jmp @a+dptr 73 相對於dptr間接轉移

jz rel 60 rel a為零轉移

jnz rel 70 rel a為零轉移

cjne a,dircet,rel b5 dircet rel 直接位元組與a比較,不等則轉移

cjne a,#data,rel b4 data rel 立即數與a比較,不等則轉移

cjne a,rn,#data,rel b8~bf data rel 立即數與暫存器比較,不等則轉移

cjne @ri,#data,rel b6~b7 data rel 立即數與間接ram比較,不等則轉移

djnz rn,rel d8~df rel 暫存器減1,不為零則轉移

djnz dircet,rel b5 dircet rel 直接位元組減1,不為零則轉移

nop 00 空操作

*=a10a9a8l

△=a10a9a80

布林變數操作

clr c c3 清零進位

clr bit c2 清零直接位

setb c d3 置位進位

setb bit d2 置位直接位

cpl c b3 進位取反

cpl bit b2 直接位取反

anl c,bit 82 dit 直接數「與」到進位

anl c,/bit b0 直接位的反「與」到進位

orl c,bit 72 bit 直接位「或」到進位

orl c,/bit a0 bit 直接位的反「或」到進位

mov c,bit a2 bit 直接位送進位

mov bit,c 92 bit 進位送直接位

jc rel 40 rel 進位位為1轉移

jnc rel 50 rel 進位位為0轉移

jb bit,rel 20 bit rel 直接位為1相對轉移

jnb bit,rel 30 bit rel 直接位為0相對轉移

jbc bit,rel 10 bit rel 直接位為1相對轉移,然後清零該位

[1]. 迴圈移位指令(4條)

rl a ;累加器a中的內容左移一位

rr a ;累加器a中的內容右移一位

rlc a ;累加器a中的內容連同進位位cy左移一位

rrc a ;累加器a中的內容連同進位位cy右移一位

[2]. 累加器半位元組交換指令(1條)

swap a ; 累加器中的內容高低半位元組互換

[3]. 求反指令(1條)

cpl a ; 累加器中的內容按位取反

[4]. 清零指令(1條)

clr a ; 0→(a),累加器中的內容清0

[5]. 邏輯與操作指令(6條)

anl a,data ;累加器a中的內容和直接地址單元中的內容執行與邏輯操作。結果存在暫存器a中。

anl data,#data ;直接地址單元中的內容和立即數執行與邏輯操作。結果存在直接地址單元中。

anl a,#data ;累加器a的內容和立即數執行與邏輯操作。結果存在累加器a中。

anl a,rn ;累加器a的內容和暫存器rn中的內容執行與邏輯操作。結果存在累加器a中。

anl data,a ;直接地址單元中的內容和累加器a的內容執行與邏輯操作。結果存在直接地址單元中。

anl a,@ri ;累加器a的內容和工作暫存器ri指向的地址單元中的內容執行與邏輯操作。結果存在累加器a中。

[6]. 邏輯或操作指令(6條)

這組指令的作用是將兩個單元中的內容執行邏輯或操作。如果直接地址是i/o地址,則為「讀—修改—寫」操作。

orl a,data ;累加器a中的內容和直接地址單元中的內容執行邏輯或操作。結果存在暫存器a中。

orl data,#data ;直接地址單元中的內容和立即數執行邏輯或操作。結果存在直接地址單元中。

orl a,#data ;累加器a的內容和立即數執行邏輯或操作。結果存在累加器a中。

orl a,rn ;累加器a的內容和暫存器rn中的內容執行邏輯或操作。結果存在累加器a中。

orl data,a ;直接地址單元中的內容和累加器a的內容執行邏輯或操作。結果存在直接地址單元中。

orl a,@ri ;累加器a的內容和工作暫存器ri指向的地址單元中的內容執行邏輯或操作。結果存在累加器a中。

[7]. 邏輯異或操作指令(6條)

xrl a,data ;累加器a中的內容和直接地址單元中的內容執行邏輯異或操作。結果存在暫存器a中。

xrl data,#data ;直接地址單元中的內容和立即數執行邏輯異或操作。結果存在直接地址單元中。

xrl a,#data ;累加器a的內容和立即數執行邏輯異或操作。結果存在累加器a中。

xrl a,rn ;累加器a的內容和暫存器rn中的內容執行邏輯異或操作。結果存在累加器a中。

xrl data,a ;直接地址單元中的內容和累加器a的內容執行邏輯異或操作。結果存在直接地址單元中。

xrl a,@ri ;累加器a的內容和工作暫存器ri指向的地址單元中的內容執行邏輯異或操作。結果存在累加器a中

控制轉移類指令分析

[1]. 無條件轉移指令(4條)

ljmp addr16 ;addr16→(pc),給程式計數器賦予新值(16位地址)

ajmp addr11 ;(pc)+2→(pc),addr11→(pc10-0)程式計數器賦予新值(11位地址),(pc15-11)不改變

sjmp rel ;(pc)+ 2 + rel→(pc)當前程式計數器先加上2再加上偏移量給程式計數器賦予新值

jmp @a+dptr ;(a)+ (dptr)→(pc),累加器所指向地址單元的值加上資料指標的值給程式計數器賦予新值

[2]. 條件轉移指令(8條)

jz rel ; a=0,(pc)+ 2 + rel→(pc),累加器中的內容為0,則轉移到偏移量所指向的地址,否則程式往下執行

jnz rel ; a≠0,(pc)+ 2 + rel→(pc),累加器中的內容不為0,則轉移到偏移量所指向的地址,否則程式往下執行

cjne a, data, rel ; a≠(data),(pc)+ 3 + rel→(pc),累加器中的內容不等於直接地址單元的內容,則轉移到偏移量所指向的地址,否則程式往下執行

cjne a, #data, rel ; a≠#data,(pc)+ 3 + rel→(pc),累加器中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程式往下執行

cjne rn, #data, rel ; a≠#data,(pc)+ 3 + rel→(pc),工作暫存器rn中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程式往下執行

cjne @ri, #data, rel ; a≠#data,(pc)+ 3 + rel→(pc),工作暫存器ri指向地址單元中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程式往下執行

布林變數操作指令分析

[1]. 位傳送指令(2條)

mov c,bit ;bit→cy,某位資料送cy

mov bit,c ;cy→bit,cy資料送某位

[2]. 位置位復位指令(4條)

clr c ; 0→cy,清cy

clr bit ; 0→bit,清某一位

setb c ; 1→cy,置位cy

setb bit ; 1→bit,置位某一位

[3]. 位運算指令(6條)

anl c,bit ;(cy)∧(bit)→cy

anl c,/bit ;(cy)∧( )→cy

orl c,bit ;(cy)∨(bit)→cy

orl c,/bit ;(cy)∧()→cy

cpl c ;()→cy

cpl bit ;()→bir

[4]. 位控制轉移指令(5)

jc rel ; (cy)=1轉移,(pc)+2+rel→pc,否則程式往下執行,(pc)+2→pc。

jnc rel ; (cy)=0轉移,(pc)+2+rel→pc,否則程式往下執行,(pc)+2→pc。

jb bit, rel ; 位狀態為1轉移。

jnb bit, rel ; 位狀態為0轉移。

jbc bit, rel ; 位狀態為1轉移,並使該位清「0」。

微控制器RET指令怎麼執行,在微控制器中,RET和RETI分別是什麼返回指令

往堆疊中寫入暫存器地址,修改堆疊指標指向這個地址,然後ret就跳到所需的地址去 子程式執行完後,返回被呼叫地方 的指令。在中斷中返回應用reti ret,子bai 程式返回指令 把棧頂的內 du容送到pc暫存器中zhi,不影響標dao志 通常用在回acall或lcall呼叫子程式的答末尾。sp pc...

微控制器加法指令只怎麼執行的,51微控制器的加法指令到底怎麼加啊,例如12A4H 0FE7H

a,30h是將30h記憶體中數加a放到a的儲存單元。84h 8dh,d是13,加4為17,0到15即0到f這16個數,結果為1,進位標誌c為有效,然後加進8 8 c 17,還是保留1並進位,所以最後是11h。psw是微控制器內部標誌暫存器,是微控制器執行必不可少的基本運算基礎,cy是進位標誌,是位元...

關於微控制器彙編的十進位制調整指令,微控制器組合語言十進位制調整da

是不是做加法,凡是遇到上述情況都得修正?是bcd碼的加法,就必須修正。那為什麼我看到的某些加法運算沒有修正啊?那就不是bcd碼的加法。一般時,是用四位二進位制數,表示一位16進位制數 0 16 即0000 1111。bcd碼,是用四位二進位制數,表示一位十進位制數 0 9 即0000 1001。如果...