| | 語 法 | DAA | 編 碼 | | | | | | 操作內(nèi)容 | if [A<3::0> > 9].OR.[DC=1] then A<3::0> + 6 -> A<3::0>; if [A<7::4> > 9].OR.[C=1] then A<7::4> + 6 -> A<7::4>; | 受影響的標(biāo)志 | C進(jìn)位標(biāo)志 | 說 明 | DAA用來調(diào)整在累加器中的8位的2進(jìn)位數(shù)值﹐使累加器中的數(shù)值變成10進(jìn)位的表示法﹐分別用兩個(gè)4位來表示十位及個(gè)位。 | 舉例說明 | 做一個(gè)十進(jìn)位加法運(yùn)算 6+9 MOV A,@0x6 MOV 0x10,A MOV A,@0x9 ADD A,0x10 ;A = 0xf DAA ;A = 15H (packed BCD) |
| | | | 語 法 | DECA R | 編 碼 | | | | | | 操作內(nèi)容 | R-1 --> A | 受影響的標(biāo)志 | Z零標(biāo)志 | 說 明 | 遞減R寄存器的值﹐并且將結(jié)果存入A寄存器中。 | 舉例說明 | 說明如何作一個(gè)計(jì)數(shù)16次的循環(huán) STATUS == 3 ﹔狀態(tài)寄存器 Z_FLAG == 2 ﹔零標(biāo)志在狀態(tài)暫存中是BIT2 MOV A,@0x10 MOV 0x10,A LOOP: DECA 0x10 MOV 0x10,A JBS STATUS,Z_FLAG JMP LOOP |
| | | | 語 法 | DEC R | 編 碼 | | | | | | 操作內(nèi)容 | R-1 --> R | 受影響的標(biāo)志 | Z﹔零標(biāo)志 | 說 明 | 將所指定的R寄存器內(nèi)含值減1。 | 舉例說明 | 說明如何作一個(gè)計(jì)數(shù)16次的循環(huán)
STATUS == 3 ; 狀態(tài)寄存器 Z_FLAG == 2 ﹔零標(biāo)志在狀態(tài)暫存中是BIT2 MOV A,@0x10 MOV 0x10,A LOOP: DEC 0x10 JBS STATUS,Z_FLAG JMP LOOP |
| | 語 法 | DJZA R | 編 碼 | | | | | | 操作內(nèi)容 | R - 1 --> A, skip if 0 | 受影響的標(biāo)志 | 無 | 說 明 | 將所指定R寄存器的內(nèi)含值減1﹐并將結(jié)果存於A寄存器上﹔如果結(jié)果為0﹐則下一個(gè)指令將被跳過。 | 舉例說明 | HERE: DJZA 0x9 CONT: MOV A,0x10 SKIP: ADD A,@10 在執(zhí)行DJZA指令之前 PC = address HERE 在執(zhí)行DJZA指令之后 A=R 9-1 if A = 0, PC = address SKIP if A ¹ 0, PC = address CONT |
| | 語 法 | DJZ R | 編 碼 | | | | | | 操作內(nèi)容 | R - 1 --> R, skip if 0 | 受影響的標(biāo)志 | 無 | 說 明 | 將所指定R寄存器的內(nèi)含值減1﹐并將結(jié)果存回R寄存器上﹔如果結(jié)果為0﹐則下一個(gè)指令將被跳過。 | 舉例說明 | MOV A,@100 MOV 0x10,A LOOP: · · · DJZ 0x10 ;寄存器R 10遞減﹐ 若結(jié)果不等于 ;0 , 執(zhí)行JMP指令﹐若結(jié)果等于0﹐ ;JMP指令不執(zhí)行 JMP LOOP |
| | 語 法 | INCA R | 編 碼 | | | | | | 操作內(nèi)容 | R + 1 --> A | 受影響的標(biāo)志 | Z﹔零標(biāo)志 | 說 明 | 將被指定R寄存器的內(nèi)含值加1,并將結(jié)果儲(chǔ)于A寄存器中。 | 舉例說明 | MOV A,@0x11 MOV 0x10,A ;R 10 = 0x11 INCA 0x10 ;A = 0x12 |
| | 語 法 | INC R | 編 碼 | | | | | | 操作內(nèi)容 | R + 1 --> R | 受影響的標(biāo)志 | Z﹔零標(biāo)志 | 說 明 | 將被指定R寄存器的內(nèi)含值加1﹐並且將結(jié)果再存回R寄存器中。 | 舉例說明 | MOV A,@0x11 MOV 0x10,A ;R 10 = 0x11 INC 0x10 ;R 10 = 0x12 |
| | 語 法 | INT | 編 碼 | | | | | | 操作內(nèi)容 | PC + 1 --> [Top of Stack] 0001H --> PC | 受影響的標(biāo)志 | 無 | 說 明 | 軟件中斷指令﹐首先將下一個(gè)位址存入堆棧中﹐然后將0x01載入程序寄存器中。 | 舉例說明 | ORG 0x001 JMP SET_INT · · SET_INT﹕ · · RET
MAIN﹕ · · HERE﹕ INT CONT﹕ CLRA
執(zhí)行INT指令之前 PC = address HERE
執(zhí)行INT指令之后 PC = 0001H [Top of Stack] = address CONT |
| MOVe IOC R to the A register | 語 法 | IOR R | 編 碼 | | | | | | 操作內(nèi)容 | IOCR --> A | 受影響的標(biāo)志 | 無 | 說 明 | 將控制寄存器IOCR中的值移到寄存器A中。 | 舉例說明 | IOR 0xf ;取得 IOCF 中的內(nèi)容﹐并載入A中 MOV 0x10,A ;儲(chǔ)存在寄存器 0x10中 |
| | 語 法 | IOW R | 編 碼 | | | | | | 操作內(nèi)容 | A <-- IOCR | 受影響的標(biāo)志 | 無 | 說 明 | 將A寄存器(累加器)的內(nèi)容載入控制寄存器IOCR中。 | 舉例說明 | 將port6設(shè)定成輸出口。 MOV A,@0 IOW 0x6 |
| | 語 法 | JMP k | 編 碼 | | | | | | 操作內(nèi)容 | k --> PC(9::0) R3(7::5) --> PC(12::10) | 受影響的標(biāo)志 | 無 | 說 明 | 當(dāng)執(zhí)行一個(gè)跳轉(zhuǎn)指令﹐指令后所描述的執(zhí)行位址會(huì)載入程序計(jì)數(shù)器中。 | 舉例說明 | HERE JMP BRANCH
執(zhí)行JMP指令之前 PC = address HERE
執(zhí)行JMP指令之后 PC = address BRANCH |
| | 語 法 | JZA R | 編 碼 | | | | | | 操作內(nèi)容 | R+1 --> A, skip if result = 0 | 受影響的標(biāo)志 | 無 | 說 明 | 將所選定的寄存器R的內(nèi)容加1﹐并將結(jié)果存于A寄存器﹐若結(jié)果為0﹐則跳過下一個(gè)指令。 | 舉例說明 | Port 6輸出遞減的二進(jìn)位數(shù)值。 MOV A,@x00 LOOP: MOV 0x6,A MOV 0x10,A JZA 0x10 JMP LOOP |
| | 語 法 | JZ R | 編 碼 | | | | | | 操作內(nèi)容 | R+1 --> R, skip if result = 0 | 受影響的標(biāo)志 | 無 | 說 明 | 將所選定的寄存器R的內(nèi)容加1﹐并將結(jié)果存於R寄存器﹐若結(jié)果為0﹐則跳過下一個(gè)指令。 | 舉例說明 | HERE: JZ 0x10 CONT: MOV A,0x10 SKIP: ADD A,@10 執(zhí)行JZ指令之前 PC = address HERE 執(zhí)行JZ指令之后 R 10 = R 10-1 if R 10 = 0, PC = address SKIP if R 10 ¹ 0, PC = address CONT |
語 法 | | 語 法 | JBC R,b | 編 碼 | | | | | | 操作內(nèi)容 | if R(b) = 0, skip | 受影響的標(biāo)志 | 無 | 說 明 | 如果寄存器R的位 “b” 是“0”,則跳過下一個(gè)指令。 | 舉例說明 | 測試0x10寄存器的bit0﹐若是為”0”則port5的bit0設(shè)成”0”﹔若0x10寄存器的bit0為”1”﹐則port5的bit0設(shè)成”1”。
JBC 0x10,0 BS 0x5,0 JBS 0x10,0 BC 0x5,0 |
| | 語 法 | JBS R,b | 編 碼 | | | | | | 操作內(nèi)容 | if R(b) = 1, skip | 受影響的標(biāo)志 | 無 | 說 明 | 如果寄存器R的位 “b” 是“1”,則跳過下一個(gè)指令。 | 舉例說明 | HERE JBC 0x9,3 CONT MOV A,@10 SKIP ADD A,0x10 執(zhí)行JBC指令之前 PC = address HERE 執(zhí)行JBC指令之后 if R9(3) = 0, PC = address CONT if R9(3) ¹ 0, PC = address SKIP
|
語 法 | | 語 法 | MOV R,A | 編 碼 | | | | | | 操作內(nèi)容 | A --> R | 受影響的標(biāo)志 | 無 | 說 明 | 將A寄存器中的值載入寄存器R中。 | 語 法 | MOV A,R | 編 碼 | | | | | | 操作內(nèi)容 | R --> A | 受影響的標(biāo)志 | Z (零標(biāo)志) | | 將R寄存器中的值載入A寄存器﹐如果A寄存器的結(jié)果為零﹐就會(huì)將Z標(biāo)志設(shè)成1﹔否則將Z標(biāo)志清為0。 | | | 語 法 | MOV A, k | 編 碼 | | | | | | 操作內(nèi)容 | k --> A | 受影響的標(biāo)志 | 無 | 說 明 | 將立即k載入A寄存器中。 | 舉例說明 | 將A Move data from accumulator to register MOV A,@0x11 ;將立即值載入A寄存器中 MOV 0x10,A ;將A中的內(nèi)容載入0X10中 MOV A,9 ;將寄存器9的值載入A中 |
| | | | 語 法 | NOP | 編 碼 | | | | | | 操作內(nèi)容 | No Operation | 受影響的標(biāo)志 | None | 說 明 | 不做任何工做﹐用來做時(shí)間的延遲。 | | | 舉例說明 | P50輸出3 ms的突波. (system clock = 2MHz)
BS 0x5,0x0 ;P50輸出為high NOP ;延遲兩個(gè)指令周期 NOP BC 0x5,0x0 ;P50輸出為low |
| | | | 語 法 | OR A,R | 編 碼 | | | | | | 操作內(nèi)容 | AÚR --> A | 受影響的標(biāo)志 | Z 零標(biāo)志 | 說 明 | 將A寄存器中的值和R寄存器中的值OR在一起﹐在存入A寄存器中。 | | | 語 法 | OR R,A | 編 碼 | | | | | | 操作內(nèi)容 | AÚR --> R | 受影響的標(biāo)志 | Z 零標(biāo)志 | 說 明 | 將A寄存器中的值和R寄存器中的值OR在一起﹐在存入R寄存器中。 | | | 語 法 | OR A, k | 編 碼 | | | | | | 操作內(nèi)容 | AÚk --> A | 受影響的標(biāo)志 | Z 零標(biāo)志 | 說 明 | 將A寄存器中的值和立即值k﹐OR在一起﹐在存入A寄存器中。 | | | 舉例說明 | 將port6的值和0x10寄存器的值﹐OR在一起﹐并將結(jié)果輸出到port6。 MOV A,0x6 ;將port6的值載入A中 OR A,0x10 ;OR,A和0x10的值﹐存入A中 MOV 0x6,A ;將A的值輸出到port6 說明右式應(yīng)該如何完成﹕R 10 = R 11 OR R 12. MOV A,0x11 MOV 0x10,A MOV A,0x12 OR 0x10,A ;R 10=R 11 OR R 12說明右式應(yīng)該如何完成﹕ A = A OR 0xF0. MOV A,@0x03 ;A = 0x03 OR A,0xF0 ;A = 0xF3 |
|
|