1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

Similar documents
M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知

Microsoft Word - em78 sub program.doc

Microsoft Word - Ö¸Á.doc

学习MSP430单片机推荐参考书

CH559指令周期.doc

WICE (Statement Syntax) (Assembler arithmetic operations) ( Program directives ) ( Conditional assem

Application Note Format

DPJJX1.DOC

目 录

EMC单片机学习笔记.doc

untitled

微處理機期末專題

untitled

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

D/A DAC ( 1us) (10~20 ) DAC0832 1

Ps22Pdf

第5章:汇编语言程序设计

12232A LED LED LED EL EL CCFL EL CCF

2.5 idlocs PIC idloc idloc 0x1234 ; 0x config idloc HEX errorlevel errorlevel Error (Warning) Message HEX 3-14 errorlevel

Microsoft PowerPoint - chap5.ppt

一、

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2011-论文选集-2.cdr

AVR单片机指令系统.PDF

R/W

1 TPIS TPIS 2 2

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

Microsoft Word - EM78P156K Product Spec v1[1].3 _ _.doc


專題最終版.doc

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

untitled

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

山东2014第四季新教材《会计基础》冲刺卷第二套

決算説明資料

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

instructions.PDF

Chapter 1

AVR单片机的应用.PDF

逢 甲 大 學


AN-8203 FCM8531 用户手册

综 合 1. 纳 税 信 用 管 理 办 法 ( 试 行 )( 公 告 2014 年 第 40 号 ) 重 大 税 收 违 法 案 件 信 息 公 布 办 法 ( 试 行 )( 公 告 2014 年 第 41 号 ) 关 于 取 消 加 工 贸 易 项 下 进 口 钢

目录

2.181% 0.005%0.002%0.005% 2,160 74,180, ,000, ,500,000 1,000,000 1,000,000 1,000,000 2

<4D F736F F D FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63>

四. 夏 族 言 语 不 是 一 音 一 字 五. 禹 传 子 的 生 物 学 意 义 一. 大 禹 治 的 水 是 从 何 而 来 可 能 是 海 浸 大 禹 治 水, 洪 水 滔 天, 神 州 无 净 土! 左 准 绳 右 规 矩, 声 为 律 身 为 度 所 以 大 禹 一 直 被 国 人 尊

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433


寻医问药指南(十七)

《米开朗琪罗传》

2 PIC PIC 1 / CPU PIC MCU PIC RC

untitled

中文手册

ICD ICD ICD ICD ICD


Ps22Pdf

试卷

51 C 51 isp 10 C PCB C C C C KEIL

MDT90P01 4-Bit RISC MCU 使用及注意事项 1. MDT90P01 4-bit RISC MCU PIN MAP: SOT-26 PB0 1 6 PB3 VSS 2 5 VDD PB1 3 4 PB2/RTCC 2. IC 烧入注意事项 : A. 需制作转接座 : Writer

单片机应用编程技巧(专家:邓宏杰)

《计算机应用基础》学习材料(讲义)

Avision

至 尊 法 王 蒋 阳 龙 朵 加 参 尊 者 上 师 瑜 伽 皈 依 境

(给多有拉姆)佛子行三十七颂1——7

《佛子行三十七颂》讲记1

( \223\374\217\334\216\322.xls)

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

电 阻 应 变 式 传 感 器 是 将 被 测 量 的 力, 通 过 它 产 生 的 金 属 弹 性 变 形 转 换 成 电 阻 变 化 的 元 件 由 电 阻 应 变 片 和 测 量 线 路 两 部 分 组 成 电 阻 应 变 片 产 生 的 误 差, 主 要 来 源 于 温 度 的 影 响, 本

<313034A4BDB67DA4C0B56FBA5DB3E65FBD64A5BB2E786C7378>

MSP430 MSP430 F149 MSP430F149 P USART MSP430F PWM 63#

Microsoft Word - 專題封面.doc

Microsoft Word - 永政发〔2016〕48号.doc

Microsoft Word - 3-1_instruction

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>


( CIP).:,3.7 ISBN TB CIP (3) ( ) ISBN O78 : 3.


Microsoft Word - xiuxinduanyu-2-doc.doc

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

<4D F736F F D203130B5A5C6ACBBFACAB5D1E9D6B8B5BCCAE92E646F63>

Microsoft Word - 文档 1

Microsoft PowerPoint - chap4.ppt

(CIP) /,. :, 2003 ISBN TG44 TG936 CIP ( 2003 ) ( 1 : ) : * : : : 0

<4D F736F F D20D5D0B1EACEC4BCFEBCB0C7E5BDE0B7FECEF1BACFCDAC28C2C9CAA6B0E631A3A92E646F6378>

<4D F736F F D20B160A5CEA4A4B0EABCF4BB79A5DCA8D22E646F63>

國立中山大學學位論文典藏.PDF

!!! #!!! $##%!!! $!!!! &!!!! (!! %!! )!!! *!!!!!!! #!!!!! $

"#" " "" " " "# $ " %( )# #( %& ( " % " " # ) *# " # " $ " #(( " " "#+( % " % $ " & # " " $ $ " " $ % & " #$ % $ "& $ "" " ") # #( "( &( %+"(

89,,,,,,,,,,,,,,,,?,???,,,,,,,,,,,,,

!##$ %!!##$ & (!##$ %!!##$ &!##$!##(!##$! "

!"#!" # $% & ($) *! +,-./ 0%)!1"%& 0%2!$!$$$ "$$$$ #$ % $$30!4$4 5,6 *& (+ 0!&" * + 7!!4 & ( )! & ( )! 80)09! 7&! #!1!1$" &&!!%!,-./ 0%)!1"%& 0%2 &1$

秘密大乘佛法(下)

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? Page 2

Page 2 of 12

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE>

Transcription:

1. 介绍 Application Notes EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 * 周期, 其余为单指令周期 ( 部分第一代芯片 JMP CALL RET RETL RETI JBS JBC JZ JZA DJZ DJZA 指令为 2 个指令周期 ) ( * :EM78P134N,EM78P150,EM78P152S,EM78P153S/B/K,EM78P154N,EM78P156E/N/K, EM78P157N,EM78P159N,EM78P163N,EM78P257,EM78P311N,EM78P312N, EM78P447N/S,EM78P451,EM78P458/9,EM78P809N) 2. 符号说明 符号说明 A 累加器 R RAM 寄存器 R(b) 寄存器 R 的第 b 位 b bit 位 (b=0~7) 立即数 ( 二元操作数指令中需以 @ 开头, 以区分于地址操作数, 例 k 如 :MOV A,@0xFF; 单一操作数则不需要 @ 开头, 例如 :JMP 0x1A0; RETL 100 等 ) & 与操作 或操作 异或操作 / 取反操作 AP- -001C-v1.1 05.15.2016 1

3. 指令表格 序号指令 描述 适用指令位数 13bit 15bit 页 1 NOP 空指令 5 2 DAA 十进制调整指令 5 3 CONTW 给 CONT 寄存器赋值 5 4 CONTR 读取 CONT 寄存器的值 6 5 SLEP 睡眠指令 6 6 WDTC 清 WDT 指令 6 7 IOW A 值写入 IOC 寄存器 6 8 IOR 读取 IOC 寄存器的值给 A 7 9 ENI 使能全局中断 7 10 DISI 禁止全局中断 7 11 RET 子程序返回 7 12 RETI 中断返回 8 13 RETL k 带 A 值返回 8 14 MOV R,A A 值给 R 8 15 MOV A,R R 值给 A 9 16 MOV R,R 读取 PORT 状态 9 17 MOV A,K 立即数给 A 9 18 CLRA A 清零 9 19 CLR R R 清零 10 20 SUB A,R R-A->A 10 21 SUB R,A R-A->R 10 22 SUB A,K K-A->A 11 23 DECA R R-1->A 11 24 DEC R R-1->R 11 25 OR A,R A 与 R 相或给 A 12 26 OR R,A R 与 A 相或给 R 12 27 OR A,K A 与 K 相或给 A 12 28 AND A,R A 与 R 相与给 A 13 29 AND R,A A 与 R 相与给 R 13 30 AND A,K A 与 K 相与给 A 13 31 XOR A,R A 与 R 异或给 A 14 32 XOR R,A R 与 A 异或给 R 14 33 XOR A,K A 与 K 异或给 A 14 34 ADD A,R A+R 给 A 15 2 05.15.2016 AP- -001C-v1.1

( 续表 ) 序号指令 描述 适用指令位数 13bit 15bit 页 35 ADD R,A R+A 给 R 15 36 ADD A,K A+K 给 A 15 37 COMA R R 取反给 A 16 38 COM R R 取反 16 39 INC R R+1->R 16 40 INCA R R+1->A 17 41 DJZA R R-1 给 A 若 A=0 跳过下一条指令 17 42 DJZ R R-1 等于 0 跳过下一条指令 17 43 RRCA R 带进位位的 R 值右移一位给 A 18 44 RRC R 带进位位的 R 值右移一位 18 45 RLCA R 带进位位的 R 值左移一位给 A 19 46 RLC R 带进位位的 R 值左移一位 19 47 SWAPA R R 的高 4 位与低 4 位交换后给 A 19 48 SWAP R R 的高 4 位与低 4 位交换 20 49 JZA R R 值加 1 给 A, 如果 A=0 则跳过下一条指令执行 20 50 JZ R R 值加 1 给 R, 如果 R=0 则跳过下一条指令执行 20 51 BC R,b R 的 bit b 清零 21 52 BS R,b R 的 bit b 置 1 21 53 JBC R,b R 的 bit b 为 0 跳过下一条指令执行 21 54 JBS R,b R 的 bit b 为 1 跳过下一条指令执行 22 55 CALL K 调用子程序 K( 一页内 ) 22 56 LCALL K 长调用子程序 K( 任意页 ) 22 57 JMP K 跳到 K( 一页内 ) 23 58 LJMP K 跳到 K( 任意页 ) 23 59 BANK K 切换 bank 23 60 SBANK K 切换特殊控制寄存器 bank 24 61 GBANK K 切换通用寄存器 bank 24 62 TBRD R 读 ROM 指令,(TABPTR) 指向的 ROM 数据给 R ( 结合 HLB 来读取低 8 位还是高 8 24 位数据 ) 63 TBRDA R 读 ROM 指令,(TABPTR) 指向的 ROM 数据的低字节给 A, 高字节给 R ** 25 64 XCH R A 的值与 R 互换 ** 25 65 BTG R,b 位 R(b) 取反 ( 只对 R5~RA 有效 ) ** 25 66 JE R R 与 A 相等则跳过下一条指令 ** 26 67 JGE R R 大于 A 则跳过下一条指令 ** 26 AP- -001C-v1.1 05.15.2016 3

( 续表 ) 序号指令 描述 适用指令位数 13bit 15bit 页 68 JLR R R 小于 A 则跳过下一条指令 ** 26 69 JE K A 与 K 相等则跳过下一条指令 ** 27 70 SJC K 如果有进位 (C=1) 则跳到 k( 地址范围 +127~ -128) ** 27 71 SJNC K 如果无进位 (C=0) 则跳到 k( 地址范围 +127~ -128) ** 27 72 SJZ K 如果为零 (Z=1) 则跳到 k( 地址范围 +127~ -128) ** 28 73 SJNZ K 如果不为零 (Z=0) 则跳到 k( 地址范围 +127~ -128) ** 28 74 ADC A,R 带进位加法, 结果给 A ** 28 75 ADC R,A 带进位加法, 结果给 R ** 29 76 SUBB A,R 带借位减法, 结果给 A ** 29 77 SUBB R,A 带借位减法, 结果给 A ** 29 78 TBWR ROM table 写开始指令 ** 30 79 INT K 软件中断 ** 30 80 INT 软件中断 30 81 RLA R R 的值左移一位给 A ** 31 82 RL R R 的值左移一位 ** 31 83 RRA R R 的值右移一位给 A ** 31 84 RR R R 的值右移一位 ** 31 85 NEG R R 的值转为二进制补码 ( 取反加 1) ** 32 86 RESET 软件复位 ** 32 ( ** : EM88 系列 IC 才有提供, 不提供 EM78 系列 15 位 IC) 4 05.15.2016 AP- -001C-v1.1

4. 指令說明 4.1 NOP(No Operation) NOP 无操作无空操作, 用于延时 P50 输出 3us 脉冲 (MCU 频率 4MHz, 4 个时钟周期 ) BS 0X5,0 ;P50 输出高 NOP NOP BC 0X5,0 ;P50 输出低 4.2 DAA DAA 如果 A 的低 4 位大于 9 或 DC=1, 那么低 4 位 +6; 如果高 4 位大 于 9 或 C=1, 那么高 4 位 +6 C C: 调整结果有进位则 C=1; 否则 C=0 十进制调整指令,A 的值转为 2 位十进制数 执行一个十进制 6+9 的操作 : MOV A,@0X06 MOV 0X10,A MOV A,@0X09 ADD A,0X10 ;A=0X0F DAA ;A=0X15 4.3 CONTW CONTW A CONT 无把 A 值赋给 CONT 寄存器 MOV A,@0B10000011 CONTW AP- -001C-v1.1 ; 向 CONT 寄存器中写入 @0B10000011 05.15.2016 5

4.4 CONTR CONTR CONT A 无把 CONT 寄存器值读到 A CONTR ; 读 CONT 寄存器的值 4.5 SLEP SLEP 0 WDT, 振荡器停止 P T P : P=0 T : T=1 进入 sleep 模式 SLEP ; 进入睡眠模式 4.6 WDTC WDTC 00h WDT,0 WDT Prescaler P,T P : P=1 T : T=1 看门狗时间清零, 如果设置了分频比, 分频比计数也清零 WDTC ; 清 WDT 时间 4.7 IOW 6 05.15.2016 IOW R A IOCR 无 A 值赋给 IOCR 寄存器, 此指令只适用于 IOC page 控制寄存器 通过控制寄存器 IOC6, 将 PORT6 的 IO 口为输入 输出, MOV A,@0XAA IOW IOC6 ;0 为输出,1 为输入 AP- -001C-v1.1

4.8 IOR IOR R IOCR A 无将 IOCR 寄存器的值读到 A, 此指令只适用于 IOC page 控制寄存器 IOR 0XF ; 读取 IOCF 寄存器的值 MOV 0X10,A ; 保存在 0x10 4.9 ENI ENI 1 INT 无使能总中断 ENI ; 使能总中断 4.10 DISI DISI 0 INT 无禁止总中断 DISI ; 禁止总中断 4.11 RET RET 堆栈栈顶值 PC 无子程序返回 AP- -001C-v1.1 05.15.2016 7

TEST: ;TEST 子程序 RET ; 子程序返回 MAIN: CALL TEST ; 调用 TEST 子程序 JMP MAIN 4.12 RETI RETI 堆栈栈顶值 PC;1 INT 位无中断返回, 该指令只可用于中断返回 TCC_INT: RETI ;TCC 中断程序 ; 中断程序返回 4.13 RETL k RETL k k A, 堆栈栈顶值 PC 无立即数 k 赋给 A, 子程序返回 RETL @0X55 ;A 的值为 0X55 并返回 4.14 MOV R,A MOV R,A A R 无 A 值赋给寄存器 R 8 05.15.2016 MOV A,@0x11 MOV 0x10,A ;0X11 给 A ;A 的值给 0X10(R) AP- -001C-v1.1

4.15 MOV A,R MOV A,R R A Z Z: 当 A 为 0 时 Z=1; 否则 Z=0 寄存器 R 的值给 A MOV A,0x19 ;0X19 寄存器的值给 A 4.16 MOV R,R MOV R,R R R Z Z: 当 R=0 时 Z=1;R!=0 时 Z=0 R 的值给 R, 此指令只可用于 IO 口状态保存 ( 多用于睡眠之前, 两个 R 为同一 IO 口, 例如 :MOV PORT6,PORT6) MOV 0X6,0X6 ;port6 值给 port6, 保存 PORT6 的状态 4.17 MOV A,k MOV A,k k A 无立即数 k 值赋给 A MOV A,@9 ; 立即数 9 赋给 A 4.18 CLRA CLRA 0 A Z Z: Z=1 A 清零 CLRA ;A 值清零 AP- -001C-v1.1 05.15.2016 9

4.19 CLR R CLR R 0 R Z Z: Z=1 R 清零 CLR 0X10 ;R 值清零 4.20 SUB A,R 语法 SUB A,R 操作 R-A A 影响状态 Z,C,DC,OV,N C: 有借位则 C=0; 反之 C=1 DC: 低 4 位有借位则 DC=0; 反之 DC=1 OV: 结果超出 -128~127 OV=1; 反之 OV=0 说明 R 的值减去 A 的值, 差值赋给 A MOV A,@0X23 SUB A,0X20 ;A=R-A 4.21 SUB R,A SUB R,A R-A R Z,C,DC,OV,N C: 有借位则 C=0; 反之 C=1 DC: 低 4 位有借位则 DC=0; 反之 DC=1 OV: 结果超出 -128~127 OV=1; 反之 OV=0 R 的值减去 A 的值, 差值赋给 R MOV A,@0x99 MOV 0x10,A MOV A,@0x55 SUB A,0x10 ;R10 = 0x99 ;A = R10-A = 0x44 10 05.15.2016 AP- -001C-v1.1

4.22 SUB A,k SUB A,k k-a A Z,C,DC,OV,N C: 有借位则 C=0; 反之 C=1 DC: 低 4 位有借位则 DC=0; 反之 DC=1 OV: 结果超出 -128~127 OV=1; 反之 OV=0 立即数 k 减去 A 的值, 差值赋给 A MOV A,@0x01 SUB A,@0x02 ;A = 0x01 ;A = 0x02-0x01 = 0x01 4.23 DECA R DECA R R-1 A Z,C,DC,OV,N C: 有借位则 C=0; 反之 C=1 DC: 低 4 位有借位则 DC=0; 反之 DC=1 OV: 结果超出 -128~127 OV=1; 反之 OV=0 R-1 的值赋给 A DECA 0x10 ;0X10 的值减 1 给 A 4.24 DEC R DEC R R-1 R Z,C,DC,OV,N C: 有借位则 C=0; 反之 C=1 DC: 低 4 位有借位则 DC=0; 反之 DC=1 OV: 结果超出 -128~127 OV=1; 反之 OV=0 R-1 的值赋给 R AP- -001C-v1.1 05.15.2016 11

MOV A,@0xF MOV 0x10,A DEC 0x10 ; 此时,0X10 寄存器的值为 0XE 4.25 OR A,R 语法 OR A,R 操作 A R A 影响状态 Z,N 说明 A 与 R 相或的值赋给 A MOV A,@0x55 MOV 0x10,A MOV A,@0xAA OR A,0x10 ;0X55 与 0XAA 或的结果给 A,A=0XFF 4.26 OR R,A 语法 OR R,A 操作 R A R 影响状态 Z,N 说明 A 与 R 相或的值赋给 R MOV A,@0x55 MOV 0x10,A MOV A,@0xAA OR 0x10,A ;A 与 R(0X10) 或的结果给 R R=0XFF 4.27 OR A,k 12 05.15.2016 OR A,k A k A Z,N A 与立即数 k 相或的值赋给 A AP- -001C-v1.1

MOV A,@0xAA OR A,@0x55 ;0XAA 与 0X55 或的结果给 A.A=0XFF 4.28 AND A,R 语法 AND A,R 操作 A&R A 影响状态 Z,N 说明 A 与 R 相与的值赋给 A MOV A,@0x6 AND A,0x10 ;0x6 与 R(0x10) 相与的值给 A 4.29 AND R,A 语法 AND R,A 操作 R&A R 影响状态 Z,N 说明 A 与 R 相与的值赋给 R MOV A,@0x6 AND 0x10,A ;0x6 与 R(0x10) 相与的值给 R 4.30 AND A,k AND A,k k&a A Z,N A 与立即数 k 相与的值赋给 A MOV A,@0x6 AND A,@0x10 ;0x6 与 0x10 相与的值给 A AP- -001C-v1.1 05.15.2016 13

4.31 XOR A,R XOR A,R A R A Z,N A 与 R 相异或的值赋给 A MOV A,@0x55 XOR A,0x10 ;R 与 A 异或的值给 A JBS STATUS,Z ; 异或的值是否为 0 JMP ERROR ; 不为 0 跳转到 ERROR 4.32 XOR R,A XOR R,A A R R Z,N A 与 R 相异或的值赋给 R MOV A,@0x55 XOR 0x10,A ;R 与 A 异或的值给 R JBS STATUS,Z ; 异或的值是否为 0 JMP ERROR ; 不为 0 跳转到 ERROR 4.33 XOR A,k XOR A,k k A A Z,N A 与立即数 k 异或的值赋给 A MOV A,@0x55 XOR A,@0XAA ;0X55 与 A 异或的值给 A JBS STATUS,Z ; 异或的值是否为 0 JMP ERROR ; 不为 0 跳转到 ERROR 14 05.15.2016 AP- -001C-v1.1

4.34 ADD A,R ADD A,R A+R A Z,C,DC,OV,N C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 OV=1; 反之 OV=0 A 与 R 相加之和赋给 A MOV A,0x11 ADD A,0x12 ;R(0X12) 与 A 值相加 4.35 ADD R,A ADD R,A A+R R Z,C,DC,OV,N C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 OV=1; 反之 OV=0 A 与 R 相加之和赋值给 R MOV A,0x11 ADD 0x12,A ;R(0X12) 与 A 值相加给 R(0X12) 4.36 ADD A,k 语法操作影响状态 说明 AP- -001C-v1.1 ADD A,k A+k A Z,C,DC,OV,N C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 OV=1; 反之 OV=0 A 与立即数 k 相加之和赋值给 A 05.15.2016 15

MOV A,0x11 ADD A,@0x12 ;0X12 与 A 值相加给 A 4.37 COMA R 语法 COMA R 操作 /R A 影响状态 Z,N 说明 R 的值取反赋给 A MOV A,0x6 MOV 0x10,A COMA 0x10 MOV 0x6,A ;R(0X10) 取反给 A 4.38 COM R COM R /R R Z,N R 的值取反赋值给 R MOV A,0x6 MOV 0x10,A COM 0x10 ;R(0X10) 取反给 R(0X10) 4.39 INC R 语法 INC R 操作 R+1 R 影响状态 Z,C,DC,OV,N C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 OV=1; 反之 OV=0 说明 R 的值加 1 赋值给 R 16 05.15.2016 AP- -001C-v1.1

INC COUNTER ; COUNTER = COUNTER +1 4.40 INCA R 语法 INCA R 操作 R+1 A 影响状态 Z,C,DC,OV,N C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 OV=1; 反之 OV=0 说明 R 的值加 1 赋值给 A INCA COUNTER ;counter+1 给 A MOV COUNTER,A 4.41 DJZA R DJZA R R-1 A, 如果 A=0 则跳过下一条指令无 R 减 1 的值赋值给 A, 如果 A=0 则跳过下一条指令 HERE: CONT: SKIP: DJZA 0x9 ; A = R(0x9)-1 如果为 0 跳到 SKIP 执行 MOV A,0x10 ; ADD A,@10 4.42 DJZ R 语法 DJZ R 操作 R-1 R, 如果 R=0 则跳过下一条指令 影响状态 无 说明 R 的值减 1 赋值给 R, 如果 R=0 则跳过下一条指令, AP- -001C-v1.1 05.15.2016 17

MOV A,@100 MOV 0x10,A LOOP: DJZ 0x10 ;0X10-1 等于 0? JMP LOOP ; 否, 跳到 loop RET ; 是, 返回 4.43 RRCA R 语法 RRCA R 操作 R(n) A(n-1),C A(7),R(0) C 影响状态 C,N C: R(0) 移位给 C N: A 结果为负数则 N=1; 反之 N=0 说明 带进位的 R 值右移一位给 A MOV A,@0x8 MOV COUNTER,A LOOP: RRCA BIT_BUF RRCA BIT_BUF MOV 0x5,A MOV BIT_BUF,A DJZ COUNTER JMP LOOP 4.44 RRC R RRC R R(n) R(n-1),C R(7),R(0) C C,N C: R(0) 移位给 C N: R 结果为负数则 N=1; 反之 N=0 带进位的 R 值右移一位给 R 18 05.15.2016 MOV A,@0x0f CLR 0x3,0 MOV 0x10,A ; 清 C 标志 ;R10 = 0B00001111 RRC 0x10 ;R10 = 0B00000111, C = 1 AP- -001C-v1.1

4.45 RLCA R RLCA R R(n) A(n+1),C A(0),R(7) C C,N C: R(7) 移位给 C N: A 结果为负数则 N=1; 反之 N=0 带进位的 R 值左移一位给 A MOV A,@0x0f CLR 0x3,0 ; 清 C 标志 MOV 0x10,A ;R10 = 0B00001111 RLCA 0x10 ;R10 = 0B00001111, A=0B00011110 C=0 4.46 RLC R RLC R R(n) R(n+1),C R(0),R(7) C C,N C: R(7) 移位给 C N: R 结果为负数则 N=1; 反之 N=0 带进位的 R 值左移一位给 R BC 0X3,0 RLC 0x10 ;0X10 左移一位 RLC 0x11 ;0x11 左移一位 4.47 SWAPA R 语法 SWAPA R 操作 R(3~0) A(7~4) R(7~4) A(3~0) 影响状态 无 说明 半字节交换指令,R 的低四位给 A 的高四位,R 的高四位给 A 的低四位 MOV A,@0x6 MOV 0x10,A ;R=0X06 SWAPA 0x10 MOV 0x6,A ;R=0X60 AP- -001C-v1.1 05.15.2016 19

4.48 SWAP R SWAP R R(3~0) R(7~4) 无 半字节交换指令,R 的高四位与 R 低四位互换 MOV A,@0x43 MOV 0x10,A ;R10 = 0x43 SWAP 0x10 ;R10 = 0x34 4.49 JZA R JZA R R+1 A 如果 A=0 跳过下一条指令执行无 R 值加 1 给 A, 如果 A=0 则跳过下一条指令执行 MOV A,@x00 LOOP: MOV 0x10,A JZA 0x10 ;R+1 给 A A=0? JMP LOOP ; 否, 跳到 loop RET ; 是, 返回 4.50 JZ R JZ R R+1 R 如果结果为 0 跳过下一条指令执行无 R 值加 1, 如果为 0 则跳过下一条指令执行 HERE: JZ 0x10 ;0X10 +1=0? CONT: MOV A,0x10 SKIP: ADD A,@10 20 05.15.2016 AP- -001C-v1.1

4.51 BC R,b 语法 BC R,b 操作 0 R(b) 影响状态 无 说明 位清零指令,R 的 bit b 清零 (b=0~7) MOV A,@0x0f MOV 0x10,A ;R10 = 00001111 BC 0x10,3 ;R10 = 00000111 4.52 BS R,b 语法 BS R,b 操作 1 R(b) 影响状态 无 说明 位置 1 指令,R 的 bit b 置 1 ( b=0~7) MOV A,@0x07 MOV 0x10,A ;R10 = 00000111 BS 0x10,3 ;R10 = 00001111 4.53 JBC R,b JBC R,b R(b) 为 0 则跳过下一条指令无判断 R 的 bit b 是否为 0, 如果是跳过下一条指令 (b=0~7) JBC 0x6,0 BS 0x10,0 JBS 0x6,0 BC 0x10,0 AP- -001C-v1.1 05.15.2016 21

4.54 JBS R,b JBS R,b R(b) 为 1 则跳过下一条指令无判断 R 的 bit b 是否为 1, 如果是跳过下一条指令 (b=0~7) JBS 0x6,0 BC 0x10,0 JBC 0x6,0 BS 0x10,0 4.55 CALL k 语法 CALL k PC+1 的值 堆栈操作 k PC(9~0) 影响状态无说明调用子程序 ( 页内调用 ) MAIN: CALL KEY_SCAN JMP MAIN KEY_SCAN: RET ;MAIN,KEY_SCAN 子函数必须在同一页 4.56 LCALL k LCALL k PC+1 的值 堆栈 k PC 无长调用指令, 任意页调用子程序 22 05.15.2016 ORG 0x100 ;page 0 MAIN: LCALL KEY_SCAN ;KEY_SCAN 地址可以在任意位置 JMP KEY_SCAN: MAIN Org 0x400 ;page 1 RET AP- -001C-v1.1

4.57 JMP k JMP k k PC(9~0) 无页内跳转指令, 同一页内跳转到地址 k 执行程序 JBS 0X6,0 JMP KEY_SCAN KES_SCAN: RET 4.58 LJMP k LJMP k k PC 无长跳转指令, 任意页跳转到地址 k 执行程序 ORG 0X100 ;PAGE 0 JBS 0X6,0 LJMP KEY_SCAN ;KEY_SCAN 的地址可以在任意页 ORG 0X400 ;PAGE 1 KES_SCAN: RET 4.59 BANK k BANK k k R4(7.6) 无 切换到 BANK k(gbank 或者 SBANK) MOV A,@0X0F BANK 1 MOV 0X20,A ;0X0F 给 BANK 1 的 0x20 AP- -001C-v1.1 05.15.2016 23

4.60 SBANK k 语法影响状态说明 SBANK k 无切换特殊控制寄存器 BANK SBANK 1 MOV A,@0XFF MOV 0X06,A 4.61 GBANK k 语法影响状态说明 GBANK k 无切换通用 RAM BANK SBANK 1 MOV A,@0XFF MOV 0X20,A 4.62 TBRD R 语法 TBRD R 操作 ROM[(TABPTR)] R 影响状态 无 说明 读 ROM 指令,(TABPTR) 指向的 ROM 数据给 R ( 结合 HLB 来读取低 8 位还是高 8 位数据 ) CLR CLR BC TBRD BS TBRD MOV AND TBPTL TBPTH HLB 0x10 HLB 0x11 A,@0x1F 0x11,A 24 05.15.2016 AP- -001C-v1.1

4.63 TBRDA R TBRDA R ROM[(TABPTR)](H) A,ROM[(TABPTR)](L) R 无读 ROM 指令,(TABPTR) 指向的 ROM 数据的低字节给 A, 高字节给 R CLR CLR BC TBRD TBPTL TBPTH HLB 0x10 4.64 XCH R XCH R A R 无 A 的值与 R 互换 MOV MOV MOV XCH A,@0X55 0X10,A A,@0XAA 0X10 4.65 BTG R,b 语法 BTG R,b 操作 /R(b) R(b) 影响状态 无 说明 位 R(b) 取反 ( 只对 R5~RA 有效 ) BTG 0X6,0 ;P60 取反 AP- -001C-v1.1 05.15.2016 25

4.66 JE R 语法影响状态说明 JE R 无 R 与 A 比较, 相等则跳过下一条指令 MOV A,@0X03 JE 0X50 JMP next1 ;R 与 A 不相等执行 next1 程序 JMP next2 ;R 与 A 相等执行 next2 程序 4.67 JGE R 语法影响状态说明 JGE R 无 R 与 A 比较,R 大于 A 则跳过下一条指令 MOV A,@0X03 JGE 0X50 jmp next1 ;R 小于 A 执行 next1 程序 jmp next2 ;R 大于 A 执行 next2 程序 4.68 JLE R 语法 JLE R 影响状态 无 说明 R 与 A 比较,R 小于 A 则跳过下一条指令 MOV A,@0X03 JLE 0X50 JMP next1 ;R 大于 A 执行 next1 程序 JMP next2 ;R 小于 A 执行 next2 程序 26 05.15.2016 AP- -001C-v1.1

4.69 JE k 语法影响状态说明 JE k 无立即数 k 与 A 比较, 相等则跳过下一条指令 MOV A,@0X03 JE @0x05 JMP next1 ;A 不等于 5 执行 next1 程序 JMP next2 ;A 等于 5 执行 next2 程序 4.70 SJC k 语法 SJC k 影响状态 无 说明 如果有进位 (C=1) 则跳到 k( 地址范围 +127~-128) MOV A,@0X03 ADD A,0X50 SJC NEXT ;R+0X03 有进位, 则跳到 next 4.71 SJNC k 语法 SJNC k 影响状态 无 说明 如果无进位 (C=0) 则跳到 k( 地址范围 +127~ -128) MOV A,@0X03 ADD A,0X50 SJNC NEXT ;R(0X50)+0X03 无进位, 则跳到 NEXT AP- -001C-v1.1 05.15.2016 27

4.72 SJZ k 语法 SJZ k 影响状态 无 说明 如果 Z=1, 则跳到 k( 地址范围 +127~-128) MOV A,0x50 SJZ NEXT ; 如果 Z=1, 则跳到 next 4.73 SJNZ k 语法 SJNZ k 影响状态 无 说明 如果 Z=0, 则跳到 k( 地址范围 +127~-128) MOV A,0x50 SJNZ NEXT ; 如果 Z=0, 则跳到 next 4.74 ADC A,R ADC A,R A+R+C A Z,C,DC,OV,N C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 OV=1; 反之 OV=0 带进位加法, 结果给 A MOV ADC A,@0x10 A,0X50 28 05.15.2016 AP- -001C-v1.1

4.75 ADC R,A ADC R,A A+R+C R Z,C,DC,OV,N C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 则 OV=1; 反之 OV=0 带进位加法, 结果给 R MOV ADC A,@0x10 0X50,A 4.76 SUBB A,R 语法 SUBB A,R 操作 R-A-/C A 影响状态 Z,C,DC,OV,N C: 有借位则 C=0; 反之 C=1 DC: 低 4 位有借位则 DC=0; 反之 DC=1 OV: 结果超出 -128~127 则 OV=1; 反之 OV=0 说明 带借位减法, 结果给 A MOV A,@0x10 SUBB A,0X50 4.77 SUBB R,A SUBB R,A R-A-/C A Z,C,DC,OV,N C: 有借位则 C=0; 反之 C=1 DC: 低 4 位有借位则 DC=0; 反之 DC=1 OV: 结果超出 -128~127 则 OV=1; 反之 OV=0 带借位减法, 结果给 R AP- -001C-v1.1 05.15.2016 29

MOV A,@0x10 SUBB 0X50,A 4.78 TBWR 语法影响状态说明 TBWR 无 ROM table 写开始指令 MOV TBWR A,@0x10 4.79 INT k INT k 将 PC+1 压栈,k*2 PC 无软件中断 INT 0X200 ;0X200*2=0X400 给 PC 4.80 INT INT 将 PC+1 压栈,002H 或 001H PC 无软件中断 INT 30 05.15.2016 AP- -001C-v1.1

4.81 RLA R RLA R R(n) A(n+1),R(7) A(0) N R 的值左移一位给 A RLA 0X50 4.82 RL R 语法 RL R 操作 R(n) R(n+1),R(7) R(0) 影响状态 N 说明 R 的值左移一位 RL 0X50 4.83 RRA R RRA R R(n) A(n-1),R(0) A(7) N R 的值右移一位给 A RRA 0X50 4.84 RR R RR R R(n) R(n-1),R(0) R(7) N R 的值右移一位 RR 0X50 AP- -001C-v1.1 05.15.2016 31

4.85 NEG R 语法 NEG R 操作 /R+1 R 影响状态 Z,C,DC,N,OV C: 有进位则 C=1; 反之 C=0 DC: 低 4 位有进位则 DC=1; 反之 DC=0 OV: 结果超出 -128~127 OV=1; 反之 OV=0 说明 R 的值转为二进制补码 ( 取反加 1) NEG 0X50 4.86 RESET 语法影响状态说明 RESET 所有寄存器 = 复位值软件复位 MOV RESET A,@0x10 ; 复位 32 05.15.2016 AP- -001C-v1.1

5. 纪录 Data version Modify item comment 2016/04/15 v1.0 指令介绍说明初版 2016/5/15 v1.1 修改 DCC 指令操作说明 AP- -001C-v1.1 05.15.2016 33