文档库 最新最全的文档下载
当前位置:文档库 › 一款8位高性能精简指令集的Flash 单片机

一款8位高性能精简指令集的Flash 单片机

一款8位高性能精简指令集的Flash 单片机
一款8位高性能精简指令集的Flash 单片机

1 总体描述

CPU 特性

● 工作电压:

fSYS=8MHz:2.2V~5.5V

fSYS=12MHz:2.7V~5.5V

fSYS=20MHz:4.5V~5.5V

● VDD=5V,系统时钟为20MHz 时,指令周期为0.2μs

● 提供暂停和唤醒功能,以降低功耗

● 五种振荡模式:

外部晶振 – HXT

外部32.768kHz 晶振 – LXT

外部RC – ERC

内部RC – HIRC

内部32kHz RC – LIRC

● 多种工作模式:正常、低速、空闲和休眠

● 内部集成4MHz,8MHz 和12MHz 振荡器,无需外接元件

● 所有指令都可在1 或2 个指令周期内完成

● 查表指令

● 63 条指令

● 多达12 层堆栈

● 位操作指令

2 周边特性

周边特性

● Flash 程序存储:2K×16

● RAM 数据存储:128×8

● EEPROM 存储器:64×8

● 看门狗定时器功能

● 最多达14 个双向I/O 口

● 4 个软件控制SCOM 口1/2 bias LCD 驱动

● 多个引脚与外部中断口共用

● 多个定时器模块用于时间测量、捕捉输入、比较匹配输出、PWM 输出及单脉冲输出

● 串行接口模块 – SIM,用于SPI 或I2C 通信

● 双比较器功能

● 双时基功能,可提供固定时间的中断信号

● 多通道12 位分辨精度的A/D 转换器

● 低电压复位功能

● 低电压检测功能

● 可选外设 – UART 模块,可用于全双工异步通信

● Flash 程序存储器烧录可达100,000 次

● Flash 程序存储器数据可保存10 年以上

● EEPROM 数据存储器烧录可达1,000,000 次

● EEPROM 数据存储器数据可保存10 年以上

概述

概述

BTD72E501JB单片机是一款A/D 型具有8 位高性能精简指令集的Flash 单片机。该系列单片机具有一系列功能和特性,其Flash 存储器可多次编程的特性给用户提供了极大的

方便。存储器方面,还包含了一个RAM 数据存储器和一个可用于存储序号、校准数据等

非易失性数据的EEPROM 存储器。

在模拟特性方面,这款单片机包含一个多通道12 位A/D 转换器和双比较器功能。还带有多个使用灵活的定时器模块,可提供定时功能、脉冲产生功能及PWM 产生功能。内

建完整的SPI 和I2C 功能,为设计者提供了一个易与外部硬件通信的接口。内部看门狗定

时器、低电压复位和低电压检测等内部保护特性,外加优秀的抗干扰和ESD 保护性能,

确保单片机在恶劣的电磁干扰环境下可靠地运行。

这款单片机提供了丰富的HXT、LXT、ERC、HIRC 和LIRC 振荡器功能选项,且内建完整的系统振荡器,无需外围元器件。其在不同工作模式之间动态切换的能力,为用

户提供了一个优化单片机操作和减少功耗的手段。

外加时基功能、I/O 使用灵活等其它特性,使这款单片机可以广泛应用于各种产品中,例如电子测量仪器、环境监控、手持式测量工具、家庭应用、电子控制工具、马达

控制等方面。

3 管脚定义

BTD72E501JB管脚配置

3.2 管脚定义管脚定义

引脚名称 功能 I/T

O/T

P1.0~P1.7 端口1

P1WU P1PU ST

P3.0~P3.5

端口3 P3WU P3PU ST AN0~AN7 ADC 输入 ACERL AN VREF ADC 参考输入 ADCR1 AN C0-, C1- 比较器0,1 输入 AN C0+, C1+ 比较器0,1 输入 AN C0X, C1X 比较器0,1 输出 CP0C CP1C

- TCK0, TCK1 TM0,TM1 输入 -

ST TP0_0 TM0 输入/ 输出 TMPC0 ST TP1_0, TP1_1 TM1 输入/ 输出 TMPC0

ST INT0, INT1 外部中断0,1 - ST PINT 外围中断 - ST PCK 外围时钟输出 - - SDI

SPI 数据输入 - ST SDO SPI 数据输出 - - SCS SPI 从机选择 - ST SCK SPI 串行时钟 - ST SCL I 2C 时钟 - ST SDA I 2C 数据 - ST OSC1 HXT/ERC 脚 CO HXT OSC2 HXT 脚 CO - XT1 LXT 脚 CO LXT XT2

LXT 脚 CO - RES

复位输入 CO ST VDD

电源电压* - PWR A VDD

ADC 电源电压*

- PWR VSS 地** - PWR AVSS ADC 地**

-

PWR

注:I/T :输入类型; O/T :输出类型 OP :通过配置选项(CO )或寄存器选项来设置 PWR :电源; CO :配置选项; ST :斯密特触发输入

CMOS:CMOS 输出; NMOS:NMOS 输出

SCOM:软件控制的LCD COM; AN:模拟输入脚

HXT:高速晶体振荡器; LXT:低速晶体振荡器

4 内部方框图

5 极限参数

电源供应电压 .................................................................................V SS-0.3V~V SS+6.0V

端口输入电压 ................................................................................V SS-0.3V~V DD+0.3V

储存温度 ....................................................................................................-50?C~125?C

工作温度 ......................................................................................................-40?C~85?C

I OL 总电流 .............................................................................................................. 80mA

I OH 总电流 ............................................................................................................-80mA

总功耗 ................................................................................................................ 500mW

注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。

6 直流电气特性:

7 ADC 特性:

注:1、tSYS=1/fSYS

2、*:表示电阻的公差会影响外部RC 的频率,建议使用精密度较高的电阻。

3、为了保证HIRC 振荡器的频率精度,VDD 与VSS 间连接一个0.1μF 的去耦电容,并尽可能接近芯片。

8 比较器电气特性

注:测量方式为:当一只输入脚的输入电压为VCM=(VDD-1.4)/2 时,另一只输入脚的输入电压从VSS 到(VCM+100mV) 或从VDD 到(VCM-100mV) 转变。

9 上电复位特性

1010 系统结构系统结构

内部系统结构是BTD单片机具有良好性能的主要因素。由于采用 RISC 结构, 此系列单片机具有高运算速度和高性能的特点。通过流水线的方式,指令的取得和执行

同时进行,此举使得除了跳转和调用指令外,其它指令都能在一个指令周期内完成。8 位ALU 参与指令集中所有的运算,它可完成算术运算、逻辑运算、移位、递增、递减和分支等功能,而内部的数据路径则是以通过累加器和ALU 的方式加以简化。有些寄存器在数据存储器中被实现,且可以直接或间接寻址。简单的寄存器寻址方式和结构特性,确保了在提供具有最大可靠度和灵活性的I/O 和A/D 控制系统时,仅需要少数的外部器件。使得这些单片机适用于低成本和批量生产的控制应用。

时序和流水线结构

11 时序和流水线结构

主系统时钟由HXT,LXT,HIRC,LIRC 或ERC 振荡器提供, 它被细分为T1~T4 四个内部产生的非重叠时序。在T1 时间,程序计数器自动加一并抓取一条新的指令。剩下的时间T2~T4 完成译码和执行功能,因此,一个T1~T4 时钟周期构成一个指令周期。虽然指令的抓取和执行发生在连续的指令周期,但单片机流水线结构会保证指令在一个指令周期内被有效执行。除非程序计数器的内容被改变,如子程序的调用或跳转,在这种情况下指令将需要多一个指令周期的时间去执行。

系统时序和流水线

如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成指令执行。需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调用的地址,再用另一个周期去实际执行分支动作,因此用户需要特别考虑额外周期的问题,尤其是在执行时间要求较严格的时候。

程序计数器

12

12 程序计数器

程序计数器

在程序执行期间,程序计数器用来指向下一个要执行的指令地址。除了“JMP”

和“CALL”指令需要跳转到一个非连续的程序存储器地址之外,它会在每条指令执行完成以后自动加一。选择不同型号的单片机,程序寄存器的宽度会因程序存储器的容量的不同而不同。只有较低的8 位,即所谓的程序计数器低字节寄存器PCL,可以被用户直接读写。

当执行的指令要求跳转到不连续的地址时,如跳转指令、子程序调用、中断或复位等,单片机通过加载所需要的位址到程序寄存器来控制程序,对于条件跳转指令,一旦条件符合,在当前指令执行时取得的下一条指令将会被舍弃,而由一个空指令周期来取代。

程序计数器的低字节,即程序计数器的低字节寄存器PCL ,可以通过程序控制, 且它是可以读取和写入的寄存器。通过直接写入数据到这个寄存器,一个程序短跳转可直接执行,然而只有低字节的操作是有效的,跳转被限制在存储器的当前页中,即256 个存储器地址范围内,当这样一个程序跳转要执行时,会插入一个空指令周期。PCL 的使用可能引起程序跳转,因此需要额外的指令周期。 13 13 算术逻辑单元算术逻辑单元算术逻辑单元 – ALU

算术逻辑单元是单片机中很重要的部分,执行指令集中的算术和逻辑运算。ALU 连接到单片机的数据总线,在接收相关的指令码后执行需要的算术与逻辑操作,并将结果存储在指定的寄存器,当ALU 计算或操作时,可能导致进位、借位或其它状态的改变,而相关的状态寄存器会因此更新内容以显示这些改变, ALU 所提供的功能如下:

● 算术运算:ADD ,ADDM ,ADC ,ADCM ,SUB ,SUBM ,SBC ,SBCM , DAA

● 逻辑运算:AND ,OR ,XOR ,ANDM ,ORM ,XORM ,CPL ,CPLA ● 移位运算:RRA ,RR ,RRCA ,RRC ,RLA ,RL ,RLCA ,RLC ● 递增和递减:INCA ,INC ,DECA ,DEC

● 分支判断:JMP ,SZ ,SZA ,SNZ ,SIZ ,SDZ ,SIZA ,SDZA ,CALL ,RET ,RETI

14 Flash 程序存储器

程序存储器用来存放用户代码即储存程序。程序存储器为 FLASH 类型意味着可以多次重复编程,方便用户使用同一芯片进行程序的修改。使用适当的单片机编程工具,此系列所有单片机提供用户灵活便利的调试方法和项目开发规划及更新。 15 15 在线编程在线编程在线编程

Flash 型程序存储器提供用户便利地对同一芯片进行程序的更新和修改。另外, BTD 单片机提供5 线接口的在线编程方式。用户可将进行过编程或未经过编程的单片机芯片连同电路板一起制成,最后阶段进行程序的更新和程序的烧写,在无需去除或重新插入芯片的情况下方便地保持程序为最新版。

芯片内部程序存储器和EEPROM 存储器都可以通过 5 线的接口在线进行编程。其中 P1.0 用于数据串行下载或上传、P1.2用于串行时钟、两条用于提供电源, 另外一条用于复位。芯片在线烧写的详细使用说明超出此文档的描述范围,将由专门的参考文献提供。

在编程过程中,编程器会将 RES 脚一直拉低以除能单片机工作,并控制P1.0 和P1.2 脚进行数据和时钟编程,用户必须确保这两个引脚没有连接至其它输出脚。

16 累加器– ACC

8 位数据寄存器ACC 用来执行ALU 与数据存储器之间数据的传送操作。如果操作结果为零(Z)或有进位产生(C或DC),程序状态寄存器PFLAG 中相应位会发生变化。ACC 并不在RAM 中,因此在立即寻址模式中不能用“B0MOV”指令对其进行读写。例:读/写 ACC。;

将立即数写入ACC。

MOV A, #0FH

;把ACC 中的数据存入BUF 中。

MOV BUF, A

B0MOV BUF, A

; 把BUF 中的数据送到ACC 中。

MOV A, BUF

B0MOV A, BUF

中断时硬件自动保存ACC 和工作寄存器(80H~8FH)。

INT_SERVICE:

; 保存ACC。

; 保存工作寄存器。

… ; 恢复工作寄存器。

; 恢复ACC。

RETI ; 退出中断。

17 程序状态寄存器PFLAG

寄存器PFLAG 中包含ALU 运算状态信息、系统复位状态信息和LVD 低电压检测状态信息。其中,POR、WDT 和RST 位显示系统的复位状态信息,包括上电复位、LVD 复位,外部复位和看门狗复位。C、DC 和Z 位显示ALU 的运算 信息。LVD24、LVD33 位显示LVD 检测低电压的状态。

Bit 7 POR:上电复位和掉电复位显示位。

0 = 没有复位;

1 = 复位,LVD 显示复位标志。

Bit 6 WDT:看门狗复位显示位。

0 = 没有复位;

1 = 复位,看门狗显示复位标志。

Bit 5 RST:外部复位显示位。

0 = 没有复位;

1 = 复位,外部复位显示复位标志。

Bit 4 STKOV:堆栈溢出显示位。

0 = 没有溢出;

1 = 堆栈溢出。

Bit 2 C:进位标志。

1 =加法运算后有进位、减法运算没有借位发生或移位后移出逻辑“1”或比较运算的结果≥0;

0 =加法运算后没有进位、减法运算有借位发生或移位后移出逻辑“0”或比较运算的结果<0。

Bit 1 DC:辅助进位标志。

1 =加法运算时低四位有进位,或减法运算后没有向高四位借位;

0 =加法运算时低四位没有进位,或减法运算后有向高四位借位。

Bit 0 Z:零标志。

1 =算术/逻辑/分支转移运算的结果为零;

0 =算术/逻辑/分支转移运算的结果非零。

Bit 6 LVD24:LVD24 低电压检测指示位。

0 = Vdd > LVD24 检测电平;

1 = Vdd < LVD24 检测电平。

Bit 5 LVD33:LVD33 低电压检测指示位。 0 = Vdd > LVD33 检测电平; 1 = Vdd < LVD33 检测电平。

1818 寻址模式寻址模式

18.1 立即寻址

将立即数直接送入ACC 或指定的RAM 单元。

立即数12H 送入ACC 。

MOV A, #12H

例:立即数12H 送入寄存器R 。

B0MOV R, #12H

18.2 18.2 直接寻址直接寻址直接寻址

通过 ACC 对RAM 单元数据进行操作。 例:地址12H 处的内容送入ACC 。

B0MOV A, 12H

例:ACC 中数据写入RAM 中12H 单元。

B0MOV 12H, A

18.3 间接寻址

通过数据指针(H/L ,Y/Z )对数据存储单元进行读写。

例:通过指针@HL 间接寻址。

B0MOV H, #0 ; 清“H ”以寻址RAM bank 0。

B0MOV L, #12H ; 设定寄存器地址。 B0MOV A, @HL

例:通过指针@YZ 间接寻址。

B0MOV Y, #0 ; 清“Y ”以寻址RAM bank 0。 B0MOV Z, #12H ; 设定寄存器地址。

B0MOV A, @YZ

19 堆栈操作

19.1 概述

堆栈缓存器共有8 层,程序进入中断或执行CALL 指令时,用来存储程序计数器PC 的值。寄存 器STKP 为堆栈指针,指向堆栈缓存器顶层,STKnH 和STKnL 分别是各堆栈缓存器高、低字节。

19.2 堆栈指针

堆栈指针STKP 是一个3 位寄存器,存放被访问的堆栈单元地址,13 位数据存储器STKnH 和STKnL 用于暂存堆栈数据。堆栈操作遵循后进先出(LIFO)的原则,入栈时堆栈指针STKP 的值减1,出栈时STKP 的值加1,这样,STKP总是指向堆栈缓存器顶层单元,写入最后的PC 值到堆栈缓存器。

Bit[2:0] STKPBn:堆栈指针(n = 0 ~ 2)。

Bit 7 GIE:全局中断控制位。

0 = 禁止;

1 = 允许。

例:系统复位时,堆栈指针寄存器内容为默认值,但强烈建议在程序初始部分重新设定,如下面所示:MOV A, #00000111B

B0MOV STKP, A

19.3 堆栈缓存器

在执行 CALL 指令或者中断服务程序之前,先将程序计数器PC 的值存入堆栈缓存器。堆栈操作遵循后进先出(LIFO)的原则,堆栈指针(STKP)和堆栈缓存器(STKnH 和STKnl)都位于Bank0 区域的系统寄存器内。

STKn = STKnH , STKnL (n = 7 ~ 0)

19.4 堆栈溢出指示

堆栈指针正常工作时,表示程序正常运行;若堆栈溢出,则表示程序运行错误。

STKOV 位是堆栈指针的溢出指示位.用量监控堆栈指针的工作状态。若

STKOV=0,则堆栈指针正常工作;若STKOV=1,则堆栈溢出,程序运行错误。

Bit 4 STKOV:堆栈溢出指示位。

0 = 堆栈没有溢出;

1 = 堆栈溢出。

例:通过看门狗复位保护堆栈溢出,必须使能看门狗定时器。

MAIN:

StackChk:

B0BTS1 STKOV

JMP MAIN ; STKOV=0,程序继续运行。

JMP $ ; STKOV=1,堆栈溢出,使用“jump here”命令。

;看门狗定时器溢出触发系统复位。

例:通过外部复位保护堆栈溢出,必须使能外部复位功能,将一个GPIO 引脚(输出模式)连接

到外部复位引脚。

MAIN:

StackChk:

B0BTS1 STKOV

JMP MAIN ; STKOV=0,程序继续运行。

B0BCLR P1.0 ; STKOV=1,堆

20 编译选项列表(CODE OPTION)

编译选项(CODE OPTION)是一种系统的硬件配置,包括振荡器的类型,杂讯滤波器的选项,看门狗定时器的操作,LVD 选项,复位引脚选项以及Flash ROM 的安全控制。

20.1 Fcpu编译选项

Fcpu 指在高速/低速操作模式下的指令周期。High_Fcpu 和Low_Fcpu 编译选项选择指令周期的分频等级,以决定指令周期的分频。普通模式(高速模式)下,系统始终源由高速振荡器提供,Fcpu 共有8 个选项:Fhosc/1,Fhosc/2,Fhosc/4,Fhosc/8,Fhosc/16,Fhosc/32,Fhosc/64,Fhosc/128。低速模式下,系统时钟源由内部低速RC 振荡电路提供,Fcpu有4 个选项:Flosc/1,Flosc/2,Flosc/4,Flosc/8。如下表所示:

20.2 Reset_Pin编译选项

复位引脚与双向输入输出引脚共用,由编译选项控制。

Reset:使能外部复位引脚功能。当下降沿触发时,系统复位。

P04:使能P0.4 为双向输入输出引脚。此时禁止外部复位引脚功能。

20.3 Security编译选项

Security 编译选项是对Flash ROM 的一种保护,当使能Secuity 编译选项,ROM 代码加密,可以保护ROM 的内容。

20.4 Noise Filter编译选项

Noise Filter 编译选项是强杂讯滤除功能以减少杂讯对系统时钟的影响。如使能杂讯滤波器,在高干扰环境下,使能

51单片机汇编指令速查表

51单片机汇编指令速查表 指令格式功能简述字节数周期 一、数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,@Ri 内部RAM单元送累加器 1 1 MOV @Ri ,A 累加器送内部RAM单元 1 1 MOV A ,#data 立即数送累加器 2 1 MOV A ,direct 直接寻址单元送累加器 2 1 MOV direct ,A 累加器送直接寻址单元 2 1 MOV Rn,#data 立即数送寄存器 2 1 MOV direct ,#data 立即数送直接寻址单元 3 2 MOV @Ri ,#data 立即数送内部RAM单元 2 1 MOV direct ,Rn 寄存器送直接寻址单元 2 2 MOV Rn ,direct 直接寻址单元送寄存器 2 2 MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2 MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1 XCH A ,@Ri 累加器与内部RAM单元交换 1 1 XCHD A ,direct 累加器与直接寻址单元交换 2 1 XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1 SWAP A 累加器高4位与低4位交换 1 1 POP direct 栈顶弹出指令直接寻址单元 2 2 PUSH direct 直接寻址单元压入栈顶 2 2 二、算术运算类指令 ADD A, Rn 累加器加寄存器 1 1

一款8位高性能精简指令集的Flash 单片机

1 总体描述 CPU 特性 ● 工作电压: fSYS=8MHz:2.2V~5.5V fSYS=12MHz:2.7V~5.5V fSYS=20MHz:4.5V~5.5V ● VDD=5V,系统时钟为20MHz 时,指令周期为0.2μs ● 提供暂停和唤醒功能,以降低功耗 ● 五种振荡模式: 外部晶振 – HXT 外部32.768kHz 晶振 – LXT 外部RC – ERC 内部RC – HIRC 内部32kHz RC – LIRC ● 多种工作模式:正常、低速、空闲和休眠 ● 内部集成4MHz,8MHz 和12MHz 振荡器,无需外接元件 ● 所有指令都可在1 或2 个指令周期内完成 ● 查表指令 ● 63 条指令 ● 多达12 层堆栈 ● 位操作指令 2 周边特性 周边特性 ● Flash 程序存储:2K×16 ● RAM 数据存储:128×8 ● EEPROM 存储器:64×8 ● 看门狗定时器功能 ● 最多达14 个双向I/O 口 ● 4 个软件控制SCOM 口1/2 bias LCD 驱动 ● 多个引脚与外部中断口共用 ● 多个定时器模块用于时间测量、捕捉输入、比较匹配输出、PWM 输出及单脉冲输出 ● 串行接口模块 – SIM,用于SPI 或I2C 通信 ● 双比较器功能 ● 双时基功能,可提供固定时间的中断信号 ● 多通道12 位分辨精度的A/D 转换器 ● 低电压复位功能 ● 低电压检测功能

● 可选外设 – UART 模块,可用于全双工异步通信 ● Flash 程序存储器烧录可达100,000 次 ● Flash 程序存储器数据可保存10 年以上 ● EEPROM 数据存储器烧录可达1,000,000 次 ● EEPROM 数据存储器数据可保存10 年以上 概述 概述 BTD72E501JB单片机是一款A/D 型具有8 位高性能精简指令集的Flash 单片机。该系列单片机具有一系列功能和特性,其Flash 存储器可多次编程的特性给用户提供了极大的 方便。存储器方面,还包含了一个RAM 数据存储器和一个可用于存储序号、校准数据等 非易失性数据的EEPROM 存储器。 在模拟特性方面,这款单片机包含一个多通道12 位A/D 转换器和双比较器功能。还带有多个使用灵活的定时器模块,可提供定时功能、脉冲产生功能及PWM 产生功能。内 建完整的SPI 和I2C 功能,为设计者提供了一个易与外部硬件通信的接口。内部看门狗定 时器、低电压复位和低电压检测等内部保护特性,外加优秀的抗干扰和ESD 保护性能, 确保单片机在恶劣的电磁干扰环境下可靠地运行。 这款单片机提供了丰富的HXT、LXT、ERC、HIRC 和LIRC 振荡器功能选项,且内建完整的系统振荡器,无需外围元器件。其在不同工作模式之间动态切换的能力,为用 户提供了一个优化单片机操作和减少功耗的手段。 外加时基功能、I/O 使用灵活等其它特性,使这款单片机可以广泛应用于各种产品中,例如电子测量仪器、环境监控、手持式测量工具、家庭应用、电子控制工具、马达 控制等方面。 3 管脚定义 BTD72E501JB管脚配置

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移;

51单片机汇编指令集(附记忆方法)

51 单片机汇编指令集 一、数据传送类指令( 7 种助记符) MOV(英文为Move :对内部数据寄存器RAM 和特殊功能寄存器SFR 的数据进行 传送; MOV Q Move Code )读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部 RAM 勺数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令( 8 种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加 1; DEC(Decrement) 减 1; MUL(Multiplication 、Multiply) 乘法; DIV(Division 、Divide) 除法; 三、逻辑运算类指令( 10 种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) SWAP (Swap) 低 4 位与高 4 位交换; 四、控制转移类指令( 17 种助记符) ACALL ( Absolute subroutine Call )子程序绝对调用; LCALL ( Long subroutine Call )子程序长调用; RET ( Return from subroutine )子程序返回; RETI ( Return from Interruption )中断返回; SJMP ( Short Jump )短转移; AJMP ( Absolute Jump )绝对转移; LJMP( Long Jump )长转移; CJNE (Compare Jump if Not Equal) 比较不相等则转移; DJNZ (Decreme nt Jump if Not Zero) 减1后不为0则转移; JZ (Jump if Zero) 结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移; JC (Jump if the Carry flag is set) 有进位则转移; JNC (Jump if Not Carry) 无进位则转移; JB (Jump if the Bit is set) 位为1则转移; JNB (Jump if the Bit is Not set) 位为0则转移; 带进位循环左移; 带进位循环右移;

RISC指令集众核处理器功能验证与实现

基金项目:国家自然科学基金项目(No.61173007);国家自然科学基金青年基金项目(No.61100015); 作者简介: 朱博元(1986-),男,硕士研究生,主要研究方向:IC 前端设计、计算机体系结构;刘高辉(1968-),男,副教授, 硕士生导师,主要研究方向:数字移动通信、集成电路设计;李政运(1986-),男, 硕士,主要研究方向:CPU 小核设计、片上多核系统设计;安述倩(1986-),女, 硕士研究生,主要研究方向:计算机体系结构。 RISC 指令集众核处理器功能验证与实现 朱博元1,刘高辉1,李政运2,安述倩2 ZHU Boyuan 1, LIU Gaohui 1, LI Zhengyun 2, AN Shuqian 2 1.西安理工大学自动化与信息工程学院,陕西 西安,710048 2.中国科学院计算技术研究所,计算机体系结构国家重点实验室,北京,100190 1. School of automation & information engineering, Xi’an University of Technology, Xi’an, Shaanxi, 710048 2. State Key Laboratory of Computer System Structure, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, 100190 ZHU Boyuan, LIU Gaohui , LI Zhengyun, AN Shuqian. Functional verification and implemen-tation of RISC multi-core processor Abstract : Multi-Core technology has become the inevitable trend of current processor architecture; it is an efficient and sufficient functional verification of the multi-core design that has become one of the hot points in IC design and verification fields, and also one of the key factors to the success final tape-out. Different from the common verification pattern that based on emulation, this paper pays more attention in highlighting the overall functional verification environment design droved with the coverage functional verification strategy to verify RISC multi-core processor, and putting forward the idea of "passive authentication" with hardware and software co-verification strategy, ultimately achieve the goal of "single instruction comparison".Timing verification and power evaluation strate-gies are also introduced in the later validation stage, providing a complete verification solution for the RISC multi-core processor. Key words : Multi-Core Processor; Functional Verification; Coverage; Timing Verification; Power Evaluation; 摘 要:众核技术已成为当前处理器体系结构发展的必然趋势,如何对众核处理器设计进行有效而充分的验证,成为当今IC 设计验证领域的研究热点之一,也是众核处理器芯片能否成功流片的关键因素之一。目前工业界采用基于仿真的验证作为主要的验证方式,本文重点介绍了以覆盖率为导向的RISC 众核处理器的功能验证环境的整体设计,提出了“被动式”的验证思想,并采用“软硬件协同验证”的策略,最终达到每条指令都比对通过的验证目标,辅以后期阶段所引入的时序验证策略和功耗评估策略,完整地提出了一套芯片验证平台搭建和验证功能实现的方法流程。 关键词:众核处理器;功能验证;覆盖率;时序验证;功耗评估; 文献标志码:A 中图分类号:TP302.7 doi :10.3778/j.issn.1002-8331.1211-0021 1 引言 在随着集成电路制造工艺的进步和处理器设 计水平的不断提高,众核技术已成为当前处理器体系结构发展的必然趋势。处理器的复杂度呈指数幅度上升,使故障的查找和修复变得越来越困难,如何对众核处理器进行有效而充分的验证,

51单片机常用汇编语言助记符英文全称

51单片机常用汇编语言助记符英文全称 (1)数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; (2)算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1;DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; (3)逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零;CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; (4)控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用;

单片机汇编语言指令集

汇编语言的所有指令数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2 格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O

INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位 SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

CPU指令集浅说

许多人在选择CPU,或了解CPU性能时,常常忽略指令集这个指标,甚至认为它无关紧要的。 其实,指令集对于CPU来讲,是相当重要的。 举个常见的例子吧,有些使用老机子的人,在玩3D、视频、音频、图像、游戏等多媒体文件时,常常会感到效果不好。速度慢、卡、甚至无法处理等。这其中最重要的一个原因,就是老机子的CPU缺少先进的指令集。 本文就是力图用最通俗的语言,给非专业人士说说CPU的指令集。都是从网上学来的,纯属个人理解,绝非权威观点。由于尽量不使用那些艰涩难懂的专业术语,所以难免有不严谨之处。就当扫盲吧。 CPU指令集浅说 啥是指令集? 我们对电脑下达的每一个命令都需要CPU根据预先设定好的某一条指令来完成。 这些预先设定好的指令是预存在CPU中的。CPU依靠外来指令“激活”自己内存的指令,来计算和操控电脑。 每款CPU在设计时就规定了一系列与电脑其它部件相配合的指令系统。 预先存储的指令越多,CPU越“聪明”。可以做的“动作”越多。预先存储的指令越先进,CPU就越高级。就好比大人脑袋里的知识多,所以比小孩聪明。 多个指令集中在一起,通常叫指令集。 基本指令集与扩展指令集 CPU都有一个基本的指令集,在基本功能方面,它们的差别并不太大。没有基本指令集的CPU,就是“傻子”一样的摆设。 为了提高CPU在某些方面的性能,就必须增加一些特殊的指令满足特殊的需求,这些新增的指令就构成了扩展指令集。也就是常说的指令集。 精简指令集与复杂指令集 不管是基本指令集还是扩展指令集,都有精简与复杂之分。 千万不要认为精简一定不如复杂。恰恰相反的是,目前的精简指令集比复杂指令集好得多。所以精简指令集基本用于中、高档服务器中。尤其是高档服务器,使用的都是精简指令集。而且,精简指令集有不断向个人电脑领域发展的趋势。 从长远上讲,精简指令集是以后高性能CPU的发展方向。预计总有一天会一统江湖。 说到这,您一定会明白一个事实,那就是,目前绝大部分个人电脑都是使用复杂指令集的。 精简指令集(RISC) 精简指令集(RISC)有人又叫“简单指令集”。它是从复杂指令集(CISC)脱胎出来的。 在使用复杂指令集(CISC)的实践中,人们发现大部分程序(大约80%)通常只使用复杂指令集(CISC)中的很少部分指令(大约20%)就能正常工作,其它的指令很少用到。于是就在这20%的常用指令的基础上,开发出了精简指令集(RISC)。 我们来看看下面复杂指令集与精简指令集的主要比较吧。

快速入门单片机汇编语言

快速入门单片机汇编语 言 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

快速入门单片机汇编语言 简要: 单片机有通用型和专用型之分。专用型是厂家为固定程序的执行专门开发研制的一种单片机,其程序不可更改。通用型单片机是常用的一种供学习或自主编制程序的单片机,其程序需要自己写入,可更改。单片机根据其基本操作处理位数不同可以分为:1位、4位、8位、16、32位单片机。 正文: 在此我们主要讲解美国ATMEL公司的89C51单片机。 一、89C51单片机PDIP(双列直插式)封装引脚图: 其引脚功能如下: P0口(—):为双向三态口,可以作为输入/输出口。但在实际应用中通常作为地址/数据总线口,即为低8位地址/数据总线分时复用。低8位地址在ALE信号的负跳变锁存到外部地址锁存器中,而高8位地址由P2口输出。 P1口(—):其每一位都能作为可编程的输入或输出线。 P2口(—):每一位也都可作为输入或输出线用,当扩展系统外设时,可作为扩展系统的地址总线高8位,与P0口一起组成16位地址总线。对89c51单片机来说,P2口一般只作为地址总线使用,而不作为I/O线直接与外设相连。 P3口(—):其为双功能口,作为第一功能使用时,其功能与P1口相同。当作为第二功能使用时,每一位功能如下表所示。 P3口第二功能

Rst\Vpd:上电复位端和掉电保护端。 XTAL1(xtal2):外接晶振一脚,分别接晶振的一端。 Gnd:电源地。 Vcc:电源正级,接+5V。 PROG\ALE:地址锁存控制端 PSEN:片外程序存储器读选通信号输出端,低电平有效。 EA\vpp:访问外部程序储存器控制信号,低电平有效。当EA为高电平时访问片内存储器,若超出范围则自动访问外部程序存储器。当EA为低电平时只访问外部程序存储器。 二、常用指令及其格式介绍: 1、指令格式: [标号:]操作码 [ 目的操作数][,操作源][;注释] 例如:LOOP:ADD A,#0FFH ;(A)←(A)+FFH 2、常用符号: Ri和Rn:R表示工作寄存器,i表示1和0,n表示0~7。 rel:相对地址、地址偏移量,主要用于无条件相对短转移指令和条件转移指令。 #data:包含于指令中的8位立即数。 #data16:包含于指令中的16位立即数。

MCS-51汇编语言指令集

MCS-51汇编语言指令集 符号定义表 符号 含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11 11位的目标地址 Rel 相关地址 bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位 2指令介绍 指令 字节 周期 动作说明 算数运算指令 1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器 2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器 3.ADD A,@Ri 1

将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器 9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,0data 2 1 将累加器的值减常数值减借位C,结果存回累加器 13.INC A 1 1 将累加器的值加1 14.INC Rn 1

“复杂指令集”与“精简指令集”

这里就不去管细节,简单来谈一下,ARM和X86之间为什 么不太具有可比性的问题。要搞清楚这个问题首先要明白什么是架构,之前也有很多人提到了架构不同,但架构是什么意思?它是一个比较抽象的概念,不太容易用几句话就解释清楚。 我们要明白CPU是一个执行部件,它之所以能执行,也是因为人们在里面制作了执行各种功能的硬件电路,然后再用一定的逻辑让它按照一定的顺序工作,这样就能完成人们给它的任务。也就是说,如果把CPU看作一个人,首先它要有正常的工作能力(既执行能力),然后又有足够的逻辑能力(能明白做事的顺序),最后还要听的懂别人的话(既指令集),才能正常工作。而这些集中在一起就构成了所谓的“架构”,它可以理解为一套“工具”、“方法”和“规范”的集合。不同的架构之间,工具可能不同,方法可能不同,规范也可能不同,这也造成了它们之间的不兼容——你给一个意大利泥瓦匠看一份中文写成的烹饪指南,他当然不知道应该干什么了。 如果还看不懂,没关系,我们继续。从CPU发明到现在,有非常多种架构,从我们熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它们之间的差距都非常大。但是如果从最基本的逻辑角度来分类的话,它们可以被分为两大类,即所谓的

“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。属于这两种类中的各种架构之间最大的区别,在于它们的设计者考虑问题方式的不同。我们可以继续举个例子,比如说我们要命令一个人吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺子,然后舀起一勺饭,然后张嘴,然后送到嘴里,最后咽下去”。从这里可以看到,对于命令别人做事这样一件事情,不同的人有不同的理解,有人认为,如果我首先给接受命令的人以足够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以用非常简单的命令让他去做很复杂的事情——比如只要说一句“吃饭”,他就会吃饭。但是也有人认为这样会让事情变的太复杂,毕竟接受命令的人要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的方法?我们为什么不可以把事情分为许多非常基本的步骤,这样只需要接受命令的人懂得很少的基本技能,就可以完成同样的工作,无非是下达命令的人稍微累一点——比如现在我要他吃菜,只需要把刚刚吃饭命令里的“舀起一勺饭”改成“舀起一勺菜”,问题就解决了,多么简单。 这就是“复杂指令集”和“精简指令集”的逻辑区别。可能有人说,明显是精简指令集好啊,但是我们不好去判断它们

汇编语言指令集

汇编语言指令集 一、数据传输指令 1. 通用数据传送指令. MOV(MOVe) 传送字或字节. MOVS(MOVe String) 串传送指令 MOVSX先符号扩展,再传送. MOVZX先零扩展,再传送. PUSH把字压入堆栈. POP把字弹出堆栈. PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP 交换32位寄存器里字节的顺序 XCHG (eXCHanG)交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD先交换再累加.( 结果在第一个操作数里) XLAT(TRANSLATE) 字节查表转换. ── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL ) 2. 输入输出端口传送指令. IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器) 输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535. 3. 目的地址传送指令. LEA (Load Effective Address)装入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS (Load DS with pointer)传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES (Load ES with pointer)传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 传送目标指针,把指针内容装入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI. 4. 标志传送指令. LAHF (Load AH with Flags)标志寄存器传送,把标志装入AH. SAHF (Store AH into Flgs)标志寄存器传送,把AH内容装入标志寄存器. PUSHF (PUSH the Flags)标志入栈. POPF (POP the Flags)标志出栈.

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

IC8位单片机汇编语言常用指令的识读

PIC单片机指令集简介 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号操作码助记符操作数1,操作数2;注释 指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。 1与MCS-51系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。 书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。 2该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。 3由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。在这里PIC 8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。 指令的操作数项也是可选项。 PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。 4用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。 二、清零指令(共4条) 1 实例:CLRW;寄存器W被清零 说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。 2 实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)

常用51单片机汇编指令

常用单片机汇编指令: 1 .MOV A,Rn寄存器内容送入累加器 2 .MOV A,direct 直接地址单元中的数据送入累加器 3 .MOV A,@Ri (i=0,1) 间接RAM中的数据送入累加器 4 .MOV A,#data 立即数送入累加器 5 .MOV Rn,A累加器内容送入寄存器 6 .MOV Rn,direct 直接地址单元中的数据送入寄存器 7 .MOV Rn,#data 立即数送入寄存器 8 .MOV direct,A 累加器内容送入直接地址单元 9 .MOV direct,Rn 寄存器内容送入直接地址单元 10. MOV direct,direct 直接地址单元中的数据送入另一个 直接地址单元 11 .MOV direct,@Ri (i=0,1) 间接RAM中的数据送入直接地址单元 12 MOV direct,#data 立即数送入直接地址单元 13 .MOV @Ri,A (i=0,1) 累加器内容送间接RAM单元 14 .MOV@Ri,direct (i=0,1)直接地址单元数据送入间接RAM 单元 15 .MOV @Ri,#data (i=0,1) 立即数送入间接RAM单元 16 .MOV DPTR,#data16 16 位立即数送入地址寄存器 17 .MOVC A,@A+DPTR以DPTR^基地址变址寻址单元中的数 据送入累加器

18 .MOVC A,@A+PC以PC为基地址变址寻址单元中的数据送入累加器 19 .MOVX A,@Ri (i=0,1) 外部RAM(8位地址)送入累加器 20 .MOVX A,@DPTR外部RAM(16位地址)送入累加器 21 .MOVX @Ri,A (i=0,1) 累计器送外部RAM(8位地址) 22 .MOVX @DPTR,A累计器送外部RAM( 16位地址) 23 .PUSH direct 直接地址单元中的数据压入堆栈 24 .POP direct 弹栈送直接地址单元 25 .XCH A,Rn 寄存器与累加器交换 26 .XCH A,direct 直接地址单元与累加器交换 27 .XCH A,@Ri (i=0,1) 间接RAM与累加器交换 28 .XCHD A,@Ri (i=0,1) 间接RAM的低半字节与累加器交换算术操作类指令: 1. ADD A,Rn 寄存器内容加到累加器 2 .ADD A,direct 直接地址单元的内容加到累加器 3 A.DD A,@Ri (i=0,1) 间接ROM的内容加到累加器 4 .ADD A,#data 立即数加到累加器 5 .ADDC A,Rn寄存器内容带进位加到累加器 6 .ADDC A,direct 直接地址单元的内容带进位加到累加器 7 .ADDC A,@Ri(i=0,1) 间接ROM的内容带进位加到累加器 8 .ADDC A,#data 立即数带进位加到累加器

C51单片机汇编语言指令集

51汇编语言指令集 符号定义表 符号含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3, IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11 11位的目标地址 Rel 相关地址 bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位 指令介绍 指令字 节周 期 动作说明 算数运算指令 1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果 存回累加器 2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结 果存回累加器 3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结 果存回累加器 4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加 器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相 加,结果存回累加器 6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C 相加,结果存回累加器 7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C 相加,结果存回累加器 8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果 存回累加器 9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借 位C,结果存回累加器 10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借 位C,结果存回累加器 11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借 位C,结果存回累加器 12.SUBB A,0data 2 1 将累加器的值减常数值减借位C,结 果存回累加器 13.INC A 1 1 将累加器的值加1 14.INC Rn 1 1 将寄存器的值加l 15.INC direct 2 1 将直接地址的内容加1 16.INC @Ri 1 1 将间接地址的内容加1 17.INC DPTR 1 1 数据指针寄存器值加1 说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 18.DEC A 1 1 将累加器的值减1 19.DEC Rn 1 1 将寄存器的值减1 20.DEC direct 2 1 将直接地址的内容减1 21.DEC @Ri 1 1 将间接地址的内容减1 22.MUL AB 1 4 将累加器的值与B寄存器的值相 乘,乘积的低位字节存回累加器, 高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 1 4 将累加器的值除以B寄存器的值,结果 的商存回累加器,余数存回B寄存器 说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0 24.DA A 1 1 将累加器A作十进制调整, 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或(C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 ANL A,Rn 1 1 将累加器的值与寄存器的值做AND的逻 辑判断,结果存回累加器 ANL A,direct 2 1 将累加器的值与直接地址的内容做AND 的逻辑判断,结果存回累加器 ANL A,@Ri 1 1 将累加器的值与间接地址的内容做AND 的逻辑判断,结果存回累加器 ANL A,#data 2 1 将累加器的值与常数做AND的逻辑判 断,结果存回累加器 ANL direct,A 2 1 将直接地址的内容与累加器的值做AND 的逻辑判断,结果存回该直接地址 ANL direct,#data 3 2 将直接地址的内容与常数值做AND 的逻辑判断,结果存回该直接地址ORL A,Rn 1 1 将累加器的值与寄存器的值做OR的逻 辑判断,结果存回累加器 32.ORL A,direct 2 1 将累加器的值与直接地址的内容做OR 的逻辑判断,结果存回累加器33.ORL 1 1 将累加器的值与间接地址的内容做OR

相关文档
相关文档 最新文档