快速入门单片机汇编语言
简要:
单片机有通用型和专用型之分。专用型是厂家为固定程序的执行专门开发研制的一种单片机,其程序不可更改。通用型单片机是常用的一种供学习或自主编制程序的单片机,其程序需要自己写入,可更改。单片机根据其基本操作处理位数不同可以分为:1位、4位、8位、16、32位单片机。
正文:
在此我们主要讲解美国ATMEL公司的89C51单片机。 一、89C51单片机PDIP(双列直插式)封装引脚图:
其引脚功能如下:
P0口(p0.0—p0.7):为双向三态口,可以作为输入/输出口。但在实际应用中通常作为地址/数据总线口,即为低8位地址/数据总线分时复用。低8位地址在ALE信号的负跳变锁存到外部地址锁存器中,而高8位地址由P2口输出。
P1口(p1.0—p1.7):其每一位都能作为可编程的输入或输出线。
P2口(p2.0—p2.7):每一位也都可作为输入或输出线用,当扩展系统外设时,可作为扩展系统的地址总线高8位,与P0口一起组成16位地址总线。对89c51单片机来说,P2口一般只作为地址总线使用,而不作为I/O线直接与外设相连。
P3口(p3.0—p3.7):其为双功能口,作为第一功能使用时,其功能与P1口相同。当作为第二功能使用时,每一位功能如下表所示。
P3口第二功能 引 脚 P3.0 第二功能 引 脚 第二功能 INT0—定时器T0的外部输入 RXD—串行口数P3.4 据输入端 P3.1 TXD—串行口数P3.5 据输出端 INT1—定时器T1的外部输入 WR—外部存储器数据写选通信号 RD—外部存储器数据读选通信号 P3.2 T0—外部中断0P3.6 请求 P3.3 T1—外部中断1P3.7 请求 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位立即数。 addr16:16位目的地址。 direct:直接寻址的地址。
bit:内部数据存储器RAM和特殊功能寄存器SFR中的可直接寻址位地址。 @:间接寻址寄存器或基地址寄存器的前缀。 (X):表示X中的内容。
((X)):表示由X寻址的单元中的内容,也就是(X)作地址,该地址的内容用((X))表示。 3、常用伪指令:
ORG:规定目标程序段或数据块的起始地址。 格式:ORG+空格+地址 例如:ORG 0000H
END:结束指令,放在程序的末尾,单独使用,一段程序只用一次。
DB(定义字节):从指定地址单元开始,定义若干字节存储单元并赋初始值。 4、常用寻址方式:
直接寻址: MOV A,30H 立即数寻址:MOV A,#20H
寄存器间接寻址:MOV A,@Ri(i=1,2) 基址加变址寄存器寻址:MOV A,@A+DPTR 寄存器寻址:MOV A,Rn(n=0—7) 5、指令大集合: 传送类指令: 助记符 操作功能 助记符 操作功能 MOV A,#data MOV Rn,#data MOV @Ri,#data 立即数送累加器 立即数送寄存器 立即数送片内RAM MOV direct,Rn 寄存器内容送直接寻址字MOV A,Rn MOV Rn,A 节 寄存器内容送累加器 MOV direct,立即数送直接寻址字节 #data MOV DPTR,#data16 MOV Rn,direct MOV A,direct 直接寻址字节内容送寄存器 直接寻址字节送累加器 MOV direct,A 累加器内容送寄存器 累加器内容送直接寻址字节 累加器内容送片内RAM MOV direct,片内RAM内容送直接寻址@Ri MOV A,@Ri 字节 片内RAM内容送累加器 16位立即数送数据指针寄存器 MOV @Ri,A MOV @Ri,direct 直接寻址内容送片内RAM MOV direct2,直接寻址字节内容送另一直接direct1 MOVX A,@Ri MOVX @Ri,A MOVC A,@A+DPTR MOVC A,@A+PC XCH A,Rn XCH A,@Ri XCH A,direct XCHD A,@Ri 寻址字节 片外RAM内容送累加器 累加器内容送片外RAM 相对数据指针内容送累加器 MOVX A,@DPTR 片外RAM内容送累加器 MOVX @DPTR,A 累加器内容送片外RAM PUSH direct 直接寻址字节内容压入栈顶 栈顶内容弹出到直接寻址字节 累加器交换高半字节和低半字节 相对程序计数器内容送累加器 POP direct 累加器内容与寄存器内容交换 SWAP A 累加器与片内RAM交换内容 累加器与直接寻址字节交换内容 累加器与片内RAM交换低半字节内容 传送类指令: 助记符 操作功能 助记符 操作功能 ADD A,Rn ADD A,@Ri 寄存器内容与累加器内容相加 SUBB A,Rn 累加器内容减寄存器与进位位内容 片内RAM与累加器内容相加 SUBB A,@Ri 累加器内容减片内RAM与进位位内容 累加器内容减直接寻址字节与进位位内容 累加器内容减立即数与进位位内容 ADD A,direct 直接寻址字节与累加器内容相SUBB ADD A,#data ADDC A,Rn ADDC A,@Ri ADDC A,direct 加 立即数与累加器内容相加 A,direct SUBB 寄存器与累加器与进位位内容A,#data 相加 片内RAM与累加器与进位位相ADDC A,#data 加 直接寻址字节与累加器与进位位相加 立即数与累加器与进位位相加 INC A INC R0 INC @Ri INC direct INC DPTR DA A MUL AB DIV AB 累加器内容加1 寄存器内容加1 片内RAM内容加1 直接寻址字节内容加1 数据指针寄存器内容加1 累加器内容十进制调整 累加器内容乘寄存器B内容 累加器内容除寄存器B内容 DEC A DEC Rn DEC @Ri 累加器内容减1 寄存器内容减1 片内RAM内容减1 DEC direct 直接寻址字节内容减1 逻辑操作类指令: 助记符 ANL A,Rn ANL A,@Ri 操作功能 寄存器内容与累加器内容 片内RAM内容与累加器内容 助记符 ORL A,Rn ORL A,@Ri 操作功能 寄存器内容或累加器内容 片内RAM内容或累加器内容
快速入门单片机汇编语言



