




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EM78xxxxx指令系统1. EM78xxxxxx指令概述EM78 系列单片机共有的 47 条(EM78P447和451、458有48条) 指令,其寬度为 13 位.每一个指令码可分割成两部份,第一部分为标示指令功能的运算码( OPCODE ),第二部份則指出运算時所需之參数,亦即运算码( OPERAND ).而指令的类型大致可分为下列四种:(1)控制型指令( control operation ): 如INT.等等.(2)面向寄存器(字节操作)型指令( register oriented ): 如MOV A, Reg_B ; move Reg_B to AADD Reg_B, A ; add Reg_B with A, and; save in Reg_B. 等等.(3)位操作型指令( bit oriented ): 如BC,JBS.等等.(4)常数型指令( constant operation ):如MOV A, 0x55 ; move 0x55 to AXOR 0xFF ;Xor A with 0xFF一般而言,EM78 系列八位微控制器除了對 PC (Program Counter)做 “写” 的指令如 (MOV PC, A),需二个指令周期外,其他的指令只需一个指令周期,.2. EM78指令寻址方式关于对寄存器的存取,必須要先说明寄存器的位址,说明暫存的位址的方式称做寻址方式,EM78的寻址方式有两种,一种为直接寻址,一种为間接寻址.2.1. 立即数寻址这种方式就是操作数为立即数,可直接从指令中获取.例:MOV A,0x16 ;将常数0x16送给寄存器A2.2. 直接寻址若是使用者要存取寄存器的内容,可以在运算码上直接描述.l 例:將寄存器0X20的内容,COPY到寄存器0X21中.MOV A, 0X20MOV 0X21, A2.3. 间接寻址这种寻址方式是通过寄存器R4来实现的,R4的bit0-5是用来选择寄存器(地址:00-06,0F-3F)若是使用者所需要存取的寄存器,有位址相邻的特性,使用間接寻址是很方便的.l 例:写一个程序,將寄存器0X20 0X3F的值都填0.MOV A, 0X20MOV 0X04, AAGAIN:CLR 0INC 0X04MOV A, 0X04XOR A, 0X3FJBS 0X03, 2JMP AGAINEND:2.4. 位寻址这种位寻址是对寄存器中的任一位(bit)进行操作.例:BS 0x12,2 ;将寄存器0x12的第2位置为“1”.3. EM78指令说明1. ADD 加语法 ADD A,R编码 0 0011 10rr rrrr操作 A+RA对标志位影响 D,C,DC说明 无举例 实现A=R11+R12:MOV A,0X11ADD A,0X12语法 ADD R,A编码 0 0011 11rr rrrr操作 A+RR对标志位影响 Z,C,DC说明 无举例 实现R10=R11+R12:MOV A,0X11MOV 0X10,AMOV A,0X12ADD 0X10,A语法 ADD A,K编码 1 1111 kkkk kkkk操作 A+KA对标志位影响 Z,C,DC说明 无举例 实现A=0X01+0X01:MOV A,0X01ADD A,0X012. AND 与语法 AND A,R编码 0 0010 10rr rrrr操作 A&RA对标志位影响 Z说明 无举例 P6口和R10寄存器相与,结果输出至P6口:MOV A,0X6 ;P6口输入AND A,0X10 ;相与MOV 0X6,A ;P6口输出语法 AND R,A编码 0 0010 11rr rrrr操作 A&RR对标志位影响 Z说明 无举例 实现R10=R11&R12:MOV A,0X11MOV 0X10,AMOV A,0X12AND 0X10,A语法 AND A,K编码 1 1010 kkkk kkkk操作 A&KA对标志位影响 Z说明 无举例 无3. BC 位清0语法 BC R,b编码 0 100b bbrr rrrr操作 0R(b)对标志位影响 无说明 R寄存器第b位清0举例 MOV A,0X0FMOV 0X10,A ;R10=00001111BC 0X10,3 ;R10=000001114. BS 位置1语法 BS R,b编码 0 101b bbrr rrrr操作 1R(b)对标志位影响 无说明 R寄存器第b位置1举例 置C标志为1:BS 0X3,05. CALL 子程序调用语法 CALL K编码 1 00kk kkkk kkkk操作 PC+1栈顶,KPC(9:0),R3(7:5)PC(12:10)对标志位影响 无说明 当调用子程序时,首先将返回地址入栈,由K指定的10位地址装入PC(9:0),页面选择位PS2,PS1,PS0装入PC(12:10)举例 HERE:CALL SUBRTNCONT:MOV A,10指令执行前,PC为HERE地址,执行后,PC为SUBRTN地址,栈顶为CONT地址6. CLRA 清累加器A语法 CLRA编码 0 0000 1000 0000操作 0A对标志位影响 1Z说明 无举例 CLRA7. CLR 清寄存器语法 CLR R编码 0 0000 11rr rrrr操作 0R对标志位影响 1Z说明 无举例 CLR 0X108. COMA R寄存器取补,存于A语法 COMA R编码 0 0100 10rr rrrr操作 A对标志位影响 Z说明 无举例 P6口输入,取补后再由P6口输出:MOV A,0X6MOV 0X10,ACOMA 0X10MOV 0X6,A9. COM R取补语法 COM R编码 0 0100 11rr rrrr操作 R对标志位影响 Z说明 无举例 COM 0X1010. CONTR 读CONT寄存器语法 CONTR编码 0 0000 0001 0100操作 CONTA对标志位影响 无说明 无举例 CONTR11. CONTW 写CONT 寄存器语法 CONTW编码 0 0000 0000 0010操作 A寄存器值送入CONT寄存器对标志位影响 无说明 无举例 MOV A,0X83CONTW ;0X83为10000011 ;分频系数1:16,预分频器分配给TCC ;TCC加1由TCC引脚低到高变化触 ;发,TCC信号源为内部时钟,禁止 ;中断,P7内部上拉禁止.12. DAA 十进制调整语法 DAA编码 0 0000 0000 0001操作 若A9或DC=1则A+6- A若A9或C=1则A+6- A对标志位影响 C说明 该指令对累加器中的8位数值进行调整(该值为两个组合BCD数之和)产生两位十进制数,每位由4位2进制数表示举例 执行6+9的十进制加法MOV A,0X6MOV 0X10,AMOV A,0X9ADD A,0X10 ;A=0XFDAA ;A=15H(组合BCD数)13. DECA R减1,存于A语法 DECA R编码 0 0001 10rr rrrr操作 R1A对标志位影响 Z说明 将R寄存器减1,结果存于累加器中举例 说明如何制作一个计数16次的循环:STATUS = 3 ;状态寄存器Z_FLAG = 2 MOV A,0X10 MOV 0X10,ALOOP: DECA 0X10 MOV 0X10,A JBS STATUS,Z_FLAG JMP LOOP14. DEC R 减1语法 DEC R编码 0 0001 11rr rrrr操作 R1R对标志位影响 Z说明 无举例 说明如何制作一个计数16次的循环:STATUS = 3 ;状态寄存器Z_FLAG = 2 MOV A,0X10 MOV 0X10,ALOOP: DEC 0X10 JBS STATUS,Z_FLAG JMP LOOP15. DISI 禁止中断语法 DISI编码 0 0000 0001 0001操作 0INT对标志位影响 无说明 清INT位为0,禁止全局中断举例 DISI ;禁止中断16. DJZA 语法 DJZA R编码 0 0101 10rr rrrr操作 R1A,为0则跳过下一指令对标志位影响 无说明 R寄存器减1,结果存入A,为0则跳过下一指令举例 HERE: DJZA 0X9COUNT: MOV A,0X10SKIP: ADD A,10DJZA指令执行前,PC为HERE地址,执行后,A=R91,若A=0,PC为SKIP地址,若A0,PC为COUNT 地址.17. DJZ 语法 DJZ R编码 0 0101 11rr rrrr操作 R1R,为0则跳过下一指令对标志位影响 无说明 无举例 实现LOOP段程序执行100次:MOV A,100MOV 0X10,ALOOP:DJZ 0X10 ;未执行完100次,JMP LOOP ;则跳回LOOPS18. ENI 中断使能语法 ENI编码 0 0000 0001 0000操作 1INT对标志位影响 无说明 置INT位为1,使能全局中断举例 ENI ;使能中断19. IOR 读控制寄存器语法 IOR R编码 0 0000 0001 rrrr操作 IOCRA对标志位影响 无说明 将控制寄存器内容读出至A寄存器,不可用MOV指令举例 IOR 0XF ;获得IOCF内容MOV 0X10,A ;存入0X10寄存器20. IOW 写控制寄存器语法 IOW R编码 0 0000 0000 rrrr操作 AIOCR对标志位影响 无说明 A寄存器值移入控制寄存器IOCR举例 将P6口奇数位置为内部上拉,P6口控制寄存器为0XDMOV A,0XAAIOW 0XD21. INC R加1语法 INC R编码 0 0101 01rr rrrr操作 R+1R对标志位影响 Z说明 无举例 INC 0X1022. INCA R加1,存于A寄存器语法 INCA R编码 0 0101 00rr rrrr操作 R+1A对标志位影响 Z说明 无举例 对外部中断计数,达到一百次,则设置一些标志:STATUS = 0X03 ;状态寄存器ISR = 0X0F ;中断状态寄存器FLAG = 0X10COUNTER = 0X11A_BUF = 0X12 ;A缓冲器S_BUF = 0X13 ;状态缓冲器TMO_FLG = 0 ;次数达到标志TCIF = 0EXIF = 3Z_FLAG = 2EXT_INT :DISI ;禁止中断BC ISR,EXIF ;EXIF标志清0MOV A_BUF,A ;备份AMOV A,STATUSMOV S_BUF,A ;备份状态寄存器INCA COUNTER ;次数加1MOV COUNTER,AXOR A,100 ;到100次,则TMO_FLGJBC STATUS,Z_FLAG ;标志置1BS FLAG,TMO_FLGMOV A,S_BUFMOV STATUS,A ;恢复状态寄存器MOV A,A_BUF ;恢复A,Z标志可能BC STATUS,Z_FLAG ;会改变,故需JBC S_BUF,Z_FLAG ;要恢复Z标志BS STATUS,Z_FLAGRETI23. INT 软件中断指令语法 INT编码 1 1110 0000 0001操作 PC+1栈顶,001HPC对标志位影响 无说明 执行软件中断时,返回地址(PC+1)入栈,PC为0X001举例 ORG 0X001 JMP SET_INT SET_INT: RETIMAIN: HERE: INTCONT: CLRAINT指令执行前,PC为HERE地址,执行后PC=001H,栈顶为CONT地址24. JBC 位检测,为0则跳过下一指令语法 JBC R,b编码 0 110b bbrr rrrr操作 若R(b)=0,则跳过下一指令对标志位影响 无说明 无举例 检测R10.0的内容,若为0,则P5.0输出0,否则输出1:JBC 0X10,0BS 0X5,0JBS 0X10,0BC 0X5,025. JBS 位检测,为1则跳过下一指令语法 JBS R,b编码 0 111b bbrr rrrr操作 若R(b)=1,跳过下一指令对标志位影响 无说明 无举例 HERE: JBS 0X9,3COUNT: MOV A,0X10SKIP: ADD A,10JBS指令执行前,PC为HERE地址,执行后,若R9(3)=0,PC为COUNT地址,若R9(3)0,PC为SKIP 地址.26. JMP 无条件跳转语法 JMP K编码 1 01kk kkkk kkkk操作 KPC(9:0),R3(7:5)PC(12:10)对标志位影响 无说明 执行无条件跳转时,由K指定的10位地址装入PC(9:0), 页面选择位PS2,PS1,PS0装入PC(12:10)举例 HERE:JMP BRANCH指令执行前,PC为HERE地址,执行后为BRANCH地址27. JZ 语法 JZ R编码 0 0111 11rr rrrr操作 R+1R,结果为0则跳过下一指令对标志位影响 无说明 无举例 HERE: JZ 0X9COUNT: MOV A,0X10SKIP: ADD A,10JZ指令执行前,PC为HERE地址,执行后,R9=R91,若R9=0,PC为SKIP地址,若R90,PC为COUNT 地址.28. JZA语法 JZA R编码 0 0111 10rr rrrr操作 R+1A,结果为0则跳过下一指令对标志位影响 无说明 无举例 实现P6口输出递增的二进制数:MOV A,0LOOP:MOV 0X6,AMOV 0X10,AJZA 0X10JMP LOOP29. MOV 数据转移语法 MOV R,A编码 0 0000 01rr rrrr操作 AR对标志位影响 无说明 无举例 MOV 0X10,A语法 MOV A,R编码 0 0100 00rr rrrr操作 RA对标志位影响 Z说明 R寄存器内容移至A中,结果为0则Z标志置1举例 MOV A,0X10语法 MOV R,R编码 0 0100 01rr rrrr操作 RR对标志位影响 Z说明 源寄存器与目的寄存器应为同一寄存器,主要用于获得Z标志举例 MOV 0X10,0X10语法 MOV A,K编码 1 1000 kkkk kkkk操作 KA对标志位影响 无说明 将立即数(8位)送入A举例 MOV A,0X1130. NOP 空指令语法 NOP编码 0 0000 0000 0000操作 空操作对标志位影响 无说明 空操作,用于延时举例 P50输出3s的脉冲(系统时钟2MHz)BS 0X5,0X0 ;P50输出为高NOP ;延迟两个指令周期NOPBC 0X5,0X0 ; P50输出为低31. OR 或语法 OR A,R编码 0 0010 00rr rrrr操作 ARA对标志位影响 Z说明 无举例 无语法 OR R,A编码 0 0010 01rr rrrr操作 ARR对标志位影响 Z说明 无举例 无语法 OR A,K编码 1 1001 kkkk kkkk操作 AKA对标志位影响 Z说明 无举例 无32. RET 子程序返回语法 RET编码 0 0000 0001 0010操作 栈顶PC对标志位影响 无说明 从子程序返回,栈顶值弹入PC举例 TEST: RET CALL TESTHERE:ADD A,0X2 ;RET执行前,栈顶为HERE地址 ;执行后,HERE地址装入PC33. RETI 中断返回语法 RETI编码 0 0000 0001 0011操作 栈顶PC,1INT对标志位影响 无说明 由中断程序返回,栈顶弹入PC,使能全局中断举例 INTRTN: ;中断子程 RETIMAIN: ;中断发生HERE: ;指令执行前,栈顶为HERE地址;执行后,HERE地址移入PC,INT置134. RETL 查表指令语法 RETL K编码 1 1100 kkkk kkkk操作 KA,栈顶PC对标志位影响 无说明 由子程返回,立即数K载入A,栈顶弹入PC.该指令多用于查表.举例构造7段LED译码表,7段LED连在P6口;寄存器定义PC = 2TRANS: ADD PC,A RETL 0B11111100 RETL 0B01100000 RETL 0B11011010 RETL 0B11110010 RETL 0B01100110 RETL 0B10110110 RETL 0B10111110 RETL 0B11100000 RETL 0B11111110 RETL 0B11110110MAIN: MOV A,0X10 CALL TRANS MOV 0X6,A ;输出至7段LED 35. RLC R寄存器带C 标志循环左移语法 RLC R编码 0 0110 11rr rrrr操作 R(n)R(n+1),R(7)C,CR(0)对标志位影响 C说明 无举例 无36. RLCA R寄存器带C标志循环左移,存于A语法 RLCA R编码 0 0110 10rr rrrr操作 R(n)A(n+1),R(7)C,CA(0)对标志位影响 C说明 R寄存器内容及C标志循环左移,结果存于累加器举例 实现16位数(R10,R11)的左移:RLCA 0X11;将0X11最高位移入C标志RLC 0X10RLC 0X1137. RRC R寄存器带C标志循环右移语法 RRC R编码 0 0110 01rr rrrr操作 R(n)R(n1),R(0)C,CR(7)对标志位影响 C说明 R寄存器带C标志右移举例 MOV A,0X0FBC 0X3,0MOV 0X10,ARRC 0X1038. RRCA R带C 标志循环右移,存于A语法 RRCA R编码 0 0110 00rr rrrr操作 R(n)A(n1),R(0)C,CA(7)对标志位影响 C说明 R寄存器内容及C标志循环右移,结果存于累加器举例 用该指令实现不带C标志的右移,结果输出至P5口:BIT_BUF = 10COUNTER = 11MOV A,8MOV COUNTER,ALOOP:RRCA BIT_BUF ;将最低位移入C标志RRCA BIT_BUFMOV 0X5,AMOV BIT_BUF,ADJZ COUNTERJMP LOOP39. SLEP 休眠语法 SLEP编码 0 0000 0000 0011操作 00HWDT,0预分频器(若分配给WDT),0P,1T对标志位影响 P,T说明 休眠模式下,晶振停振举例 SLEP ;单片机进入休眠模式40. SUB 减语法 SUB A,R编码 0 0001 00rr rrrr操作 RAA对标志位影响 Z,C,DC说明 无举例 SUB A,0X10语法 SUB R,A编码 0 0001 01rr rrrr操作 RAR对标志位影响 Z,C,DC说明 无举例 SUB 0X10,A语法 SUB A,K编码 1 1101 kkkk kkkk操作 KAA对标志位影响 Z,C,DC说明 无举例 计算式A=0X99-0X55的完成:MOV A,0X99MOV 0X10,AMOV A,0X55SUB A,0X10计算式A=0X02-A的完成:MOV A,0X01 ;A=0X01SUB A,0X02 ;A=0X02-0X01=0X01 ;C标志为1,结果为 ;正值41. SWAP R寄存器高低4位交换语法 SWAP R编码 0 0111 01rr rrrr操作 R(3:0)R(7:4)对标志位影响 无说明 无举例 MOV A,0X43 MOV 0X10,A ; R10=0X43SWAP 0X10 ;R10=0X3442. SWAPA R寄存器高低4位交换,结果存入A语法 SWAPA R编码 0 0111 00rr rrrr操作 R(3:0)A(7:4)R(7:4)A(3:0)对标志位影响 无43. WDTC 清WDT语法 WDTC编码 0 0000 0000 0100操作 00HWDT,0预分频器(若分配给WDT),1P,1T对标志位影响 P,T说明 无举例 WDTC ;WDTC清044. XOR 异或语法 XOR A,R编码 0 0011 00rr rrrr操作 ARA对标志位影响 Z说明 无举例 测试0X10寄存器的内容是否为0X55,若不是则跳转到ERROR子程序:STATUS = 3Z_FLAG = 2MOV A,0X55XOR A,0X10JBS STATUS,Z_FLAGJMP ERROR语法 XOR R,A编码 0 0011 01rr rrrr操作 ARR对标志位影响 Z说明 无举例 实现R10=R11R12:MOV A,0X11MOV 0X10,AMOV A,0X12XOR 0X10,A语法 XOR A,K编码 1 1011 kkkk kkkk操作 AKA对标志位影响 Z说明 无举例 实现A=A0XF0:MOV A,0X00XOR A,0XF04. 指 令 速 查 表二 进 制 指 令 十六进制 符 号 操 作 影响标志0 0000 0000 0000 0000 NOP 无操作 无0 0000 0000 0001 0001 DAA 十进制调整A C0 0000 0000 0010 0002 CONTW A CONT 无0 0000 0000 0011 0003 SLEP 0 WDT,停振荡器 T,P0 0000 0000 0100 0004 WDTC 0 WDT T,P0 0000 0000 Rrrr 000r IOW R A IOCR 无 0 0000 0001 0000 0010 ENI 允许 中断 无0 0000 0001 0001 0011 DISI 禁止 中断 无0 0000 0001 0010 0012 RET 堆栈顶 PC中断返回 无0 0000 0001 0011 0013 RETI 堆栈顶 PC, 中断返回 无0 0000 0001 0100 0014 CONTR CONT A 无0 0000 0001 Rrrr 001r IOR R IOCR A 无 0 0000 01rr Rrrr 00rr MOV R,A A R 无0 0000 1000 0000 0080 CLRA 0 A Z0 0000 11rr Rrrr 00rr CLR R 0 R Z0 0001 00rr Rrrr 01rr SUB A, R R-A A Z,C,DC0 0001 01rr Rrrr 01rr SUB R,A R-A R Z,C,DC0 0001 10rr Rrrr 01rr DECA R R-1 A Z0 0001 11rr Rrrr 01rr DEC R R-1 R Z0 0010 00rr Rrrr 02rr OR A,R A VR A Z0 0010 01rr Rrrr 02rr OR R,A A VR R Z0 0010 10rr rrrr 02rr AND A,R A & R A Z0 0010 11rr rrrr 02rr AND R,A A & R R Z0 0011 00rr rrrr 03rr XOR A,R A R A Z0 0011 01rr rrrr 03rr XOR R,A A R R Z0 0011 10rr rrrr 03rr ADD A,R A + R A Z,C,DC0 0011 11rr rrrr 03rr ADD R,A A + R R Z,C,DC0 0100 00rr rrrr 04rr MOV A,R R A Z0 0100 01rr rrrr 04rr MOV R,R R R Z0 0100 10rr rrrr 04rr COMA R /R A Z0 0100 11rr rrrr 04rr COM R /R R Z0 0101 00rr rrrr 05rr INCA R R+1 A Z0 0101 01rr rrrr 05rr INC R R+1 R Z0 0101 10rr rrrr 05rr DJZA R R-1 A, 如果为“0”跳过 无0 0101 11rr rrrr 05rr DJZ R R-1 R, 如果为“0”跳过 无0 0110 00rr rrrr 06rr RRCA R R(n) A(n-1)R(0) C, C A(7) C0 0110 01rr rrrr 06rr RRC R R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山间游步道工程预算方案(3篇)
- 绿化工程刺柏施工方案(3篇)
- 建筑工程节能工作方案(3篇)
- 教育服务创新模式2025年成人教育终身学习体系构建与运营实践
- 道德与法治美育课件
- 工业机器人柔性制造系统2025年应用中的系统集成与调试报告
- 宁波鄞州绿化工程方案(3篇)
- 基因工程实验方案改进(3篇)
- 新型页岩气开采技术2025年对环境保护产业发展的产业政策与法规支持评估报告
- 图书馆安全生产培训活动课件
- 新媒体营销与运营(微课版)PPT全套完整教学课件
- 第四轮教育部学科评估结果汇总【全部学科】Excel版
- 铁道概论PPT完整全套教学课件
- 【人教版】八年级上语文同步练习全集
- 统计学(第三版-董云展)课件01第一章 统计概述
- 项目1-电子商务认知
- 四川省艺术教育特色学校评估细则
- 水运工程质量奖申报培训
- 电视画面构图形式元素
- 光伏电站应急处置卡
- 围墙施工质量验收评定表模板
评论
0/150
提交评论