EM78指令系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. EM78 指令概述
EM78 系列单片机共有的 47 条(EM78P447 和 451、458 有 48 条) 指令,其寬度为 13 位。每一个指令码可分割成两部份,第一部分为标示指令功能的运算码( OPCODE ) ,第二 部份則指出运算時所需之參数,亦即运算码( OPERAND ) 。而指令的类型大致可分为下列四 种:
深圳博巨兴有限公司
EM78 指令系统
目
录
EM78 指令系统.................................................................................................................................. 1 1. 程序基本格式..................................................................................................................... 2 2. EM78 指令概述..................................................................................................................3 3. EM78 指令寻址方式..........................................................................................................4 3.1. 立即数寻址.........................................................................................................4 3.2. 直接寻址.............................................................................................................4 3.3. 间接寻址.............................................................................................................4 3.4. 位寻址.................................................................................................................5 4. EM78 基本指令说明..........................................................................................................5 5. EM78 扩展指令说明........................................................................................................18 6. 指 令 速 查 表...............................................................................................................21
1. ADD 加
ADD A,R 0 0011 10rr rrrr A+R→A D,C,DC 无 实现 A=R11+R12: MOV A,0X11 ADD A,0X12 ADD R,A 0 0011 11rr rrrr A+R→R Z,C,DC 无 实现 R10=R11+R12: MOV A,0X11 MOV 0X10,A MOV A,0X12 ADD 0X10,A ADD A,K 1 1111 kkkk kkkk A+K→A Z,C,DC 无 实现 A=0X01+0X01: MOV A,@0X01 ADD A,@0X01 AND A,R 0 0010 10rr rrrr A&R→A
深圳博巨兴有限公D:
0X04 A, 0X04 A, 0X3F 0X03, 2 AGAIN
3.4. 位寻址
这种位寻址是对寄存器中的任一位(bit)进行操作。 例:BS 0x12,2 ;将寄存器 0x12 的第 2 位置为“1”。
4. EM78 基本指令说明
075583038396对标志位影响举例mov0x10a语法mov010000rrrrrr操作寄存器内容移至a中结果为0标志置1举例mova0x10语法mov010001rrrrrr操作说明源寄存器与目的寄存器应为同一寄存器主要用于获得标志举例mov0x100x10语法mov1000kkkkkkkk操作说明将立即数8位送入a举例mova0x11nop空指令语法nop编码000000000000操作空操作对标志位影响说明空操作用于延时举例p50输出3s的脉冲系统时钟2mhzbs0x50x0
3.2. 直接寻址
若是使用者要存取寄存器的内容,可以在运算码上直接描述。 � 例:將寄存器 0X20 的内容,COPY 到寄存器 0X21 中。 MOV A, 0X20 MOV 0X21, A
3.3. 间接寻址
这种寻址方式是通过寄存器 R4 来实现的, R4 的 bit0-5 是用来选择寄存器 (地址: 00-06, 0F-3F) 若是使用者所需要存取的寄存器,有位址相邻的特性,使用間接寻址是很方便的。 � 例:写一个程序,將寄存器 0X20 ~ 0X3F 的值都填 0。 MOV A, @0X20 MOV 0X04, A AGAIN: CLR 0 ;設定 A = 0X20。 ;設定間接寻址寄存器(0X04) ;的內含值為 0X20 ;清除 0X04 所指的寄存器。 ;递增間接寻址寄存器(0X04) 4 ;設定 A=0X04 寄存器的值。 ;比較間接寻址的位址是否 ;以到 0X3F。若是則結束。 ;否則在继续。
1
深圳博巨兴有限公司
EM78 指令系统
1. 程序基本格式
;******************************************; ; 项目名称:BJX_XXXX 某某项目名 V1 ; 设计者:XX ; 完成日期:XXXX 年 X 月 XX 日 ; 芯片型号:EMC78Pxxx ; 振荡类型:RC/CRYSTAL 振荡 ; 频率:100kHz ; WDT:开/关 ; 中断类型:定时器/计数器(TCC)使用 ;******************************************; ;========EM78 常量定义======================; User_Id equ @0x88 ; ;========EM78 专用寄存器地址定义============; include "em78pxxx.h" ;专用寄存器头文件见头文件包 include "expand_instruction.h" ;========EM78 一般寄存器定义================; Event_Counter equ 0x10 ;========EM78 一般控制位定义================; System_Status equ 0x20 ;系统状态标置 Half equ 0 ;半秒标志 ;===========================================; org 0 ;上电复位程序入口 jmp System_Initialize ;===========================================; org 8 ;中断服务程序入口 jmp Tcc_Interrupt_Serve ;===========================================; org 30 ;系统初始化 System_Initialize: ; { ;…
5
语法 编码 操作 对标志位影响 说明 举例
语法 编码 操作 对标志位影响 说明 举例
语法 编码 操作 对标志位影响 说明 举例
2.
AND
语法 编码 操作
与
深圳博巨兴有限公司
对标志位影响 说明 举例
Z 无 P6 口和 R10 寄存器相与,结果输出至 P6 口: MOV A,0X6 ;P6 口输入 AND A,0X10 ;相与 MOV 0X6,A ;P6 口输出 AND R,A 0 0010 11rr rrrr A&R→R Z 无 实现 R10=R11&R12: MOV A,0X11 MOV 0X10,A MOV A,0X12 AND 0X10,A AND A,K 1 1010 kkkk kkkk A&K→A Z 无 无 BC R,b 0 100b bbrr rrrr 0→R(b) 无 R 寄存器第 b 位清 0 MOV A,@0X0F MOV 0X10,A ;R10=00001111 BC 0X10,3 ;R10=00000111 BS R,b 0 101b bbrr rrrr 1→R(b) 无 R 寄存器第 b 位置 1 置 C 标志为 1: BS 0X3,0 CALL K 1 00kk kkkk kkkk PC+1→[栈顶],K→PC(9::0), R3(7::5)→PC(12::10) 无
2
深圳博巨兴有限公司
; } ;===========================================; Main: ;主程序开始 ; { nop wdtc ;===================================; Table Event_Counter ;执行事件处理 jmp Scan_Key ;0 ;… jmp … ;x ;===================================; clr Event_Counter ;x -> 0 ;… jmp Main; ; } ;===========================================; ; 中断程序开始 Tcc_Interrupt_Serve: Save_Environment_Mac ;… Restore_Environment_Mac ;===========================================; ; 子程序开始 ;--------------------------------; 程序名: Scan_Key ; 功能: 按键扫描 ; 输入变量: ; 输出变量:Key_Flag ;---------------------------------Scan_Key: ;… ret ;----------------------------------;-----子程序 Scan_Key 结束----;-----------------------------------
3
深圳博巨兴有限公司
(1)控制型指令( control operation ) : 如 INT...等等。 (2)面向寄存器(字节操作)型指令( register oriented ) : 如 MOV A, Reg_B ; move Reg_B to A ADD 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 A XOR @0xFF ;Xor A with 0xFF 一般而言,EM78 系列八位微控制器除了對 PC (Program Counter)做 “写” 的指令如 (MOV PC, A),需二个指令周期外,其他的指令只需一个指令周期, 。
3. EM78 指令寻址方式
关于对寄存器的存取,必須要先说明寄存器的位址,说明暫存的位址的方式称做寻址方 式,EM78 的寻址方式有两种,一种为直接寻址,一种为間接寻址。
3.1. 立即数寻址
这种方式就是操作数为立即数,可直接从指令中获取。 例:MOV A,@0x16 ;将常数 0x16 送给寄存器 A