| | 語 法 | RET | 編 碼 | | | | | | 操作內(nèi)容 | [Top of Stack] --> PC | 受影響的標(biāo)志 | 無 | 說 明 | 從子程序中返回﹐堆棧最上面的數(shù)值載入程序計(jì)數(shù)器(Program counter)。 | 舉例說明 | TEST: · · · RET
· · · CALL TEST HERE: ADD A,@0x1 · · · 在呼叫RET指令之前。 堆棧的頂端Top of Stack = address HERE 在呼叫RET指令之后。 程序計(jì)數(shù)器PC = address HERE |
| | 語 法 | RETL k | 編 碼 | | | | | | 操作內(nèi)容 | k --> A [Top of Stack] --> PC | 受影響的標(biāo)志 | 無 | 說 明 | 從子程序返回﹐并將立即值載入A寄存器(累加器)中。 堆棧最頂端的數(shù)值載入程序計(jì)數(shù)器中。 | | 建立一個(gè)7段顯示器轉(zhuǎn)換表﹐並用port6驅(qū)動(dòng)7段顯示器。
;REGISTER DEFINE PC == 2
| | TRANS: ADD PC,A RETL 0XFC RETL 0XC0 RETL 0XEA RETL 0XF2 RETL 0X66 RETL 0XB6 RETL 0XBE RETL 0XE0 RETL 0XFE RETL 0XF6 | | | MAIN: · · · MOV A,0x10 ;將寄存器的內(nèi)含值載入A中 CALL TRANS MOV 0x6,A ;輸出到7段顯示器 · · · | | | | | | | |
| | 語 法 | RLCA R | 編 碼 | | | | | | 操作內(nèi)容 | R(n) --> A(n+1), R(7) --> C, C --> A(0) | 受影響的標(biāo)志 | C﹔進(jìn)位標(biāo)志 | 說 明 | 將所指定的寄存器的內(nèi)容﹐連同進(jìn)位標(biāo)志一起向左移1位﹐并將結(jié)果存於A寄存器。 | 舉例說明 | 將指定的寄存器放向左移1位﹐并將結(jié)果由port6輸出。 BIT_BUF == 0x10 RLCA BIT_BUF MOV 0x6,A |
| | 語 法 | RLCA R | 編 碼 | | | | | | 操作內(nèi)容 | R(n) --> R(n+1), R(7) --> C, C --> R(0) | 受影響的標(biāo)志 | C﹔進(jìn)位標(biāo)志 | 說 明 | 將所指定的寄存器的內(nèi)容﹐連同進(jìn)位標(biāo)志向左移1個(gè)位原﹐結(jié)果存在原先的寄存器。 | 舉例說明 | 將0X10寄存器的內(nèi)容向左移1個(gè)位﹐進(jìn)位標(biāo)志并不包含在內(nèi)。
RLCA 0x10 ﹔寄存器的bit7移到進(jìn)位標(biāo)志 ﹔中。并將結(jié)果存於A寄存器
RLC 0x10 ﹔將0x10寄存器的值向左移1 ﹔位﹐此時(shí)執(zhí)行的結(jié)果如上圖。 |
| | 語 法 | RRCA R | 編 碼 | | | | | | 操作內(nèi)容 | R(n) --> A(n-1), R(0) --> C, C --> A(7) | 受影響的標(biāo)志 | C﹔進(jìn)位標(biāo)志被影響 | 說 明 | R寄存器的內(nèi)含值又移1-bit﹐右移時(shí)包含C(進(jìn)位標(biāo)志) ﹐如下圖﹐并將結(jié)果存于A寄存器。 | 舉例說明 | 將指定的寄存器放向右移1位﹐并將結(jié)果由port6輸出。 BIT_BUF == 0x10 RRCA BIT_BUF MOV 0x6,A |
| | 語 法 | RRC R | 編 碼 | | | | | | 操作內(nèi)容 | R(n) --> R(n-1), R(0) --> C, C --> R(7) | 受影響的標(biāo)志 | C﹔進(jìn)位標(biāo)志 | 說 明 | 所指定的寄存器的內(nèi)容﹐連帶著進(jìn)位標(biāo)志接向右移1位﹐如下圖。 | 舉例說明 | CLR 0x3,0 ;clear C flag MOV 0x10,A ;R 10 = 00001111 RRC 0x10 ;R 10 = 00000111, C = 1 |
| | | | 語 法 | SUB A,R | 編 碼 | | | | | | 操作內(nèi)容 | R-A --> A | 受影響的標(biāo)志 | Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會(huì)受影響 | 說 明 | 將R寄存器中的值減去A寄存器中的值﹐再存回A寄存器中。 | | | 語 法 | SUB R,A | 編 碼 | | | | | | 操作內(nèi)容 | R-A --> R | 受影響的標(biāo)志 | Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會(huì)受影響 | 說 明 | 將R寄存器中的值減去A寄存器中的值﹐再存回R寄存器中。 | | | 語 法 | SUB A, k | 編 碼 | | | | | | 操作內(nèi)容 | k-A --> A | 受影響的標(biāo)志 | Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會(huì)受影響 | 說 明 | 將立即值k的值減去A寄存器中的值﹐再存回A寄存器中。 | | | 舉例說明 | 說明如何完成A = 0x99-0x55的計(jì)算式 MOV A,@0x99 MOV 0x10,A ;R 10 = 0x99 MOV A,@0x55 SUB A,0x10 ;A = 0x44 說明如何完成 A = 0x02 - A 的計(jì)算式 MOV A,@0x01 ;A = 0x01 SUB A,@0x02 ;A = 0x02 - 0x01 = 0x01 ;C flag = 1 , 進(jìn)位標(biāo)志C = ; 1﹐相減結(jié)果為正值。 |
| | 語 法 | SWAPA R | 編 碼 | | | | | | 操作內(nèi)容 | R(3::0) --> A(7::4) R(7::4) --> A(3::0) | 受影響的標(biāo)志 | 無 | 說 明 | 將所選定的寄存器﹐高4位以及低4位﹐互換﹐并將結(jié)果存于A寄存器。 | 舉例說明 | 將port6的內(nèi)容﹐高4位以及低4位互換。 |
| | 語 法 | SWAP R | 編 碼 | | | | | | 操作內(nèi)容 | R(3::0) <--> R(7::4) | 受影響的標(biāo)志 | 無 | 說 明 | 將所選定的寄存器﹐高4位以及低4位﹐互換。 | 舉例說明 | MOV A,@0x43 MOV 0x10,A ;R10 = 0x43 SWAP 0x10 ;R10 = 0x34 | | |
| | | | 語 法 | XOR A,R | 編 碼 | | | | | | 操作內(nèi)容 | A Å R --> A | 受影響的標(biāo)志 | Z ﹔零標(biāo)志 | 說 明 | 將A寄存器的值和R寄存器的值XOR在一起﹐并且將結(jié)果存入A寄存器中。 | | | 語 法 | XOR R,A | 編 碼 | | | | | | 操作內(nèi)容 | A Å R --> R | 受影響的標(biāo)志 | Z ﹔零標(biāo)志 | 說 明 | 將A寄存器的值和R寄存器的值XOR在一起﹐并且將結(jié)果存入R寄存器中。 | | | 語 法 | XOR A, k | 編 碼 | | | | | | 操作內(nèi)容 | A Å k --> A | 受影響的標(biāo)志 | Z ﹔零標(biāo)志 | 說 明 | 將A寄存器的值和R寄存器的值XOR在一起﹐并且將結(jié)果存入A寄存器中。 | 舉例說明 | 測(cè)試0x10寄存器內(nèi)含值是否為0x55﹐如果0x10寄存器的內(nèi)含值不為0x55﹐就跳到ERROR這支子程序。 STATUS == 3 Z_FLAG == 2 MOV A,@0x55 XOR A,0x10 JBS STATUS,Z_FLAG JMP ERROR 下面的指令敘述﹐完成R 10 = R 11 XOR R 12 MOV A,0x11 MOV 0x10,A MOV A,0x12 XOR 0x10,A ;R 10 = R 11 XOR R 12下面的指令敘述﹐完成 A = A XOR 0xF0. MOV A,@0x00 ;A = 0x00 XOR A,@0xF0 ;A = 0xF0 |
|