第3章指令系统及程序设计举例.ppt
《第3章指令系统及程序设计举例.ppt》由会员分享,可在线阅读,更多相关《第3章指令系统及程序设计举例.ppt(47页珍藏版)》请在三一文库上搜索。
1、第3章 指令系统及程序设计举例,1. 指令,只用来对汇编过程进行控制,汇编时不产生机器码。 (1)ORG (汇编起始命令) 格式:ORG 汇编起始地址(16位),3.1 指令格式与寻址方式,一、指令格式,89C51指令系统中,有1字节、2字节或3字节指令。 1字节:其中既包含操作码、又包含操作数信息。 2字节:1个字节表示操作码,另1个字节表示操作数或操 作数地址。 3字节:1个字节表示操作码,另2个字节表示操作数。,2. 伪指令,操作码 目标操作数,源操作数,(3)EQU(赋值命令) 为字符名称赋值 格式: 字符名称 EQU 数或汇编符号 (4)DATA(数据地址赋值命令,类似于EQU) 格
2、式: 字符名称 DATA 表达式 将表达式的值赋给字符名称,常用于在程序中定义数据地址。,(2)END(汇编结束命令) 格式: END,例:STRING DATA 21H NUM DATA 20H MOV R0,#STRING MOV NUM,A,(5)DB/DW(定义字节、字命令) 格式: 标号: DB(DW) 项或项表 注意: DB时,项或项表是一个字节或是用逗号隔开的字节串 或是在 中的ASCII 字符串。 DW时,项或项表的存放方式是 高8位在低地址,低8位在高地址。 见P110例。,(6)DS(定义存储空间命令) 从指定地址开始保留若干单元。 格式: 标号: DS 表达式 例: OR
3、G 1000H DS 08H DB 30H,8AH 汇编后, (1008H)=30H,(1009H)=8AH 注意:以上的DB、DW、DS仅对程序存储器起作用,不能对数据存储器初始化。,(7)BIT(位地址符号命令) 将BIT后的位地址赋给字符名。 格式: 字符名 BIT 位地址 例: A1 BIT P1.0 ; P1口第0位的位地址 90H赋给了A1,寻找指令中操作数或操作数所在的地址,共有7种。,二、寻址方式,立即寻址 MOV A,#3AH ;3AHA MOV DPTR,2000H ; 2000HDPTR ;(DPH)=20H 注:立即数前用,以区别地址。 ;(DPL)=00H,2. 直接
4、寻址 MOV A,3AH ;(3A)A,3AH的内容A 操作数部分是操作数所在的存储器单元的地址。,Reg寻址 MOV A,R0 ;R0 A Reg:R0R7,A,B,CY,DPTR(对它们也可使用其地址), 片内RAM的128个存储单元, 所有的SFR(既可用地址,也可用名字), 216个位地址空间,例1:MOV A,P1 例2: MOV SBUF,A MOV A,90H MOV 99H,A,此种寻址方式一般用于片内RAM和SFR。,以某个REG内容为基地址,然后加上地址偏移量以形成操作数地址。 在89C51中,用DPTR或PC作为变址REG(基地址),地址偏移量放在A中。 即:操作数地址=
5、(A)+(DPTR),或=(A)+(PC),操作数地址放在某个REG中,规定: (1) R0、R1为间接REG,寻址片内128字节的低位地址RAM 或片外RAM低地址的256个单元。 (2) DPTR为间接REG,寻址片外RAM 64KB。,REG间接寻址 MOV A,R0 ;若R0内容为65H, (65H) A。,简言之, 有:,R0, R1,SP (PUSH、POP) 寻址片内RAM,R0, R1, DPTR 寻址片外RAM,此种寻址方式一般用于数据存储器(RAM)。,5. 变址寻址 只能用于访问程序存储器(ROM),从中取数。,例: MOVC A,A+DPTR ;(A)+(DPTR)A
6、MOVC A,A+PC ;(A)+(PC)A,相对偏移量的计算(以2字节指令为例): rel=(目标地址源地址2)补 相对转移指令执行时,是以当前PC(程序计数器)的值加上指令中规定的偏移量rel而形成实际的转移地址。,6. 相对寻址(ROM),只出现在相对转移指令中,例:JC rel ;rel75H 当指令JC被取出时,PC值已在原地址 上加2,这时程序转移到当前的PCrel地址去执行,即转去当前PC75H。,7. 位寻址(属于直接寻址) 操作数中给出的是位地址,即片内RAM某一单元中的一位。,例:CLR bit (即:CLR 90H),1. 操作数寻址方式和有关空间,三、寻址空间及符号注释
7、,2. 寻址方式中常用符号注释,(1)Rn(n07),(2)Ri(i0,1),(3)#data 8位立即数,(4)#data16 16位立即数,(5)direct 8位片内RAM单元(包括SFR)的直接地址,(6)addr11 11位目标地址,(7)addr16 16位目标地址,(8)rel 补码形式的8位地址偏移量,(9)bit 片内RAM或SFR的直接寻址位地址,(10) 间接寻址方式中,表示间址寄存器的符号,(11)() 中的内容,(12)() 由指出的地址单元中的内容,五大类(111条): 1. 数据传送指令: 28条 2. 算术运算指令:24条 3. 逻辑运算及移位:25条 4. 控
8、制转移指令:17条 5. 位操作指令: 17条,3.2 89C51单片机的指令系统,一、数据传送指令,(2)以寄存器Rn为目的的操作数(见P44 例) MOV Rn,A ; RnA,Rn:R0 R7,寄存器寻址。 MOV Rn, direct ; Rn( direct),直接寻址。 MOV Rn,#data ;Rndata,立即寻址,(1)以累加器A为目的操作数 MOV A,Rn ;ARn,Rn:R0R7,寄存器寻址。 MOV A,direct ;A(direct),direct:8位片内RAM地 址(256B范围内),直接寻址。 MOV A,Ri ;A(Ri),R0或R1所指片内RAM (1
9、28B范围内),寄存器间接寻址 。 MOV A,#data ;Adata,立即数data:00HFFH,片内数据传送(片内RAM区中的工作寄存器 Rn, A , 片内数据RAM, SFR之间),注: 无 MOV Rn,Rn 指令; P58 机器码的构成,(3)以直接地址为目的操作数 MOV direct,A ; (direct)A, Reg寻址 MOV direct,Rn ; (direct)Rn, Reg寻址 MOV direct, direct ; (direct)(direct),直接寻址 MOV direct,Ri ; (direct)(Ri), Reg间接寻址 MOV direct,
10、#data ; (direct)data,立即寻址。,(4)以间接地址为目的的操作数 MOV Ri,A ;(Ri)A, Reg 寻址 MOV Ri,direct ;(Ri)(direct),直接寻址 MOV Ri,data ;(Ri)data,立即寻址,例:MOV A,74H ;A74H MOV 74H,00H ;(74H)00H MOV A,74H ; A00H,注意:将指令译成机器码时,第2、3字节的内容顺序。P59,P60。,例:MOV R0,77H ;R077H MOV A,03H ; A03H MOV R0,A ;( R0)03H,即(77H)03H.,例: MOV R0,#20H
11、MOV R0,#data ;MOV 20H,data MOV P1,#80H ;立即寻址 MOV P3,P1 ;直接寻址,(2)利用DPTR16位Reg间接寻址,可以在64KB范围内寻址。 MOVX A,DPTR ;A(DPTR) MOVX DPTR,A ;(DPTR)A 注: 每次传送8位数据, MOV R1,#82H MOV A,R1 ;此指令有错,因为Ri间接寻址仅能寻址片内低128字节RAM区(片内地址不超过7FH),或片外低256字节RAM区(必须使用MOVX )。 欲从82H取数到A,可使用:MOV A,82H,2. 累加器A与片外RAM间(或I/O口)间的数据传送,(1)利用Ri
12、间接寻址,可以在256字节范围内寻址。 MOVX A,Ri ;A(Ri) MOVX Ri,A ;(Ri)A,注:这时,RAM地址 在Ri中由P0口送出,P2 口仍可用作I/O口。,例: MOV DPTR,#0650H ;将0650H单元的8bit MOVX A,DPTR ;数据送入A。,注: 因为外部的RAM与I/O端口是统一编址的,89C51指令系统中无单独的IN、OUT端口操作指令,所以指令中的8位或16位地址,可能是RAM地址,也可能是I/O端口地址。,其中: 以(DPTR)为基址Reg,A为偏移量,可以查找到(DPTR)以后的256个字节范围内的代码或常数。因为(DPTR)的内容可在6
13、4 K范围内变化,故此种查表称为远程查表。 以当前PC为基址,A为偏移量,可以查找当前指令所在地址以后的256个字节范围内的代码或常数,称近程查表。,例:对A中的BCD码,用查表法查得相应的ASCII码。 1. 用PC作为基址,MOV A,#03H ;查3的ASCII码 INC A ;考虑RET的存在,修正偏移量 MOVC A,A+PC ;此指令取出后,PC指向RET单元 RET ;(1字节),2. 用DPTR作为基址,(1)字节交换指令 XCH A,Rn ;ARn reg寻址 XCH A,direct ;A(direct) 直接寻址 XCH A,Ri ;A(Ri) 间接寻址,4. 交换指令(
14、分字节交换、半字节交换两种),(2)半字节交换指令 XCHD A,Ri ;A03(Ri)03 ,高4位不变。 SWAP A ;A03 A47 ,A的高低4位互换。,二、算术运算指令,1. 加法 ADD A,Rn ;AA+Rn ADD A,direct ;AA+(direct) ADD A,Ri ;AA+(Ri) ADD A,#data ;AA+data,注:加减运算中,目标操作数只能是A。,5. 乘法指令(8位无符号数) MUL AB ;BAAB ;若结果0FFH(B中有值),OV1,CY0。 ;否则(B中为0) , OV0,CY0。,6. 除法指令 (8位无符号数) DIV AB ;A/B的
15、商A,A/B的余数B,例:16位数求补(求反1)。 设16位二进制数在R1R0中,求补结果存于R3R2中。,MOV A,R0 ;16位数低8位送A CPL A ;求反 ADD A,#01H ;加1(不用INC,因为它不影 响标志位) MOV R2,A ;存补码低8位 MOV A,R1 ;取16位数高8位 CPL A ;求反 ADDC A,00H ;加进位 MOV R3,A ;存补码高8位,以上指令编程练习见: P93P96,1. 简单操作指令 累加器清零 CLR A 累加器取反 CPL A,例: MOV A,#35H ANL A,#0FH ;屏蔽高4位,保留低4位。,2. 与 ANL A ,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 程序设计 举例
链接地址:https://www.31doc.com/p-2549544.html