第三章 指令系统 程序举例
合集下载
ch3-3 8086指令系统(算术运算与逻辑运算)
AL×OPRD AX
AH为高8位,AL为低8位。
AL (8位)
s (8位)
AH AL (16位)
第三章 8086/8088 指令系统
b. 16位乘法 AL×OPRD AX DX为高16位,AX为低16位。
AX (16位)
s (16位)
DX AX (32位)
第三章 8086/8088 指令系统
• 该指令可以得到负数的绝对值。 • 执行该指令后一般都会使得CF为1
第三章 8086/8088 指令系统
(5) 比较指令 CMP d, s
功能:作一次减法运算d–s,但不送结果,
只根据结果设置标志位。 比较指令往往用于判断两数是否相 等,或两数大小关系。若相等,则零标 志ZF=1。
第三章 8086/8088 指令系统
01110011 00110111 相减
00111100 00000110 调整
00110110
最后结果 AL = 00110110B(代表36),CF=0
第三章 8086/8088 指令系统
(5) AAM 功能:对未组合型BCD的乘法结果进行调整。 例: MOV AL, 00001000B (代表8) MOV BL, 00001001B (代表9) MUL BL AAM
否则不作调整。
第三章 8086/8088 指令系统
例: MOV AH, 0 MOV AL, 00000110B ADD AL, 00000111B
AAA
;代表6 ;代表7
00000110 6 + 00000111 7
00001101 调整 + 00000110
00010011
清0
00000011 AL 00000000+1=00000001AH
AH为高8位,AL为低8位。
AL (8位)
s (8位)
AH AL (16位)
第三章 8086/8088 指令系统
b. 16位乘法 AL×OPRD AX DX为高16位,AX为低16位。
AX (16位)
s (16位)
DX AX (32位)
第三章 8086/8088 指令系统
• 该指令可以得到负数的绝对值。 • 执行该指令后一般都会使得CF为1
第三章 8086/8088 指令系统
(5) 比较指令 CMP d, s
功能:作一次减法运算d–s,但不送结果,
只根据结果设置标志位。 比较指令往往用于判断两数是否相 等,或两数大小关系。若相等,则零标 志ZF=1。
第三章 8086/8088 指令系统
01110011 00110111 相减
00111100 00000110 调整
00110110
最后结果 AL = 00110110B(代表36),CF=0
第三章 8086/8088 指令系统
(5) AAM 功能:对未组合型BCD的乘法结果进行调整。 例: MOV AL, 00001000B (代表8) MOV BL, 00001001B (代表9) MUL BL AAM
否则不作调整。
第三章 8086/8088 指令系统
例: MOV AH, 0 MOV AL, 00000110B ADD AL, 00000111B
AAA
;代表6 ;代表7
00000110 6 + 00000111 7
00001101 调整 + 00000110
00010011
清0
00000011 AL 00000000+1=00000001AH
第3章 指令系统与汇编程序
数据传送指令
1.以累加器A为目的操作数的指令 (4条) 2.以寄存器Rn为目的操作数的指令(3条) 3.以直接地址为目的操作数的指令(5条)
4.以间接地址为目的操作数的指令(3条)
5.十六位数据传送指令(1条)
6.查表指令(2条)
7.累加器A与片外RAM传送指令(4条) 8.栈操作指令(二条) 9.交换指令(5条)
7)位寻址
• 位寻址:采用位寻址方式的指令的操作数是8 位二进制数中的某一位,指令中给出的是位地 址。位地址在指令中用bit表示。 例如:CLR bit。 • 位地址的表示方法: (1)直接使用位地址,如D3H; (2)特殊功能寄存器名+位号,如 PSW.3; (3)字节地址+位号,如 20H.3; (4)位符号地址,即某些SFR的位地址,如 TR0,表定时器T0的启动位。
(direct)→(Ri)
MOV @Ri, #data;
0111 011i
#data→(Ri)
MOV指令在片内存储器的操作功能如图3.2-1示
@Ri
direct
Rn
#data
A
5、 十六位数据传送指令(1条)
汇编指令格式 机器码格式 操作 #data16→DPTR 注释 将16位立即数传送到DPTR 中
汇编指令格式 机器码格式 操作 注释
MOVC A,@A+DPTR; 1001 0011
((A)+(DPTR))→A 将程序存储器内容传送到 A中(远程查表)
先(PC)+1→PC ((A)+(PC))→A 将程序存储器内容传送到 A中(进程查表)
MOVC A,@A+PC;
1000 0011
A寄存器
基本功能指令系统
2
二、基本功能指令
基本功能指令的操作数 可用寄存器 指令 助记符 继电器 定时/ 定时 索引 寄存器 计数器 寄存器 DT × × × × × × × × × × × 常数 H × × 索引 修正值 × × ×
WX WY WR SV EV TM预置值 × × × 预置值 CT预置值 × × × 预置值 SR × ×
7
二、基本功能指令
1、TMR、TMX和TMY指令(定时器) TMR、TMX和TMY指令 定时器) 指令( 例:
8
二、基本功能指令
1、TMR、TMX和TMY指令(定时器) TMR、TMX和TMY指令 定时器) 指令( 例:
9
二、基本功能指令
1、TMR、TMX和TMY指令(定时器) TMR、TMX和TMY指令 定时器) 指令( 例:
10
二、基本功能指令
1、TMR、TMX和TMY指令(定时器) TMR、TMX和TMY指令 定时器) 指令( 例:
11
二、基本功能指令
1、TMR、TMX和TMY指令(定时器) TMR、TMX和TMY指令 定时器) 指令( 例:
12
二、基本功能指令
2、CT计数器指令 CT计数器指令 指令功能: 指令功能: CT指令是一个减计数型的预置计数器 指令是一个减计数型的预置计数器。 CT指令是一个减计数型的预置计数器。当计 数输入端信号由OFF变为ON OFF变为ON时 计数值减1 数输入端信号由OFF变为ON时,计数值减1,当 计数值减为零时,计数器为ON,使其接点动作。 计数值减为零时,计数器为ON,使其接点动作。 ON
10s
时序图
10s
例题说明: 例题说明:
接通时, 秒后, 当X0接通时,定时器开计时,10秒后,定时时间到,定时器对应的 接通时 定时器开计时, 秒后 定时时间到, 常开触点T1接通 使输出继电器Y0导通为 接通, 导通为ON; 断开时, 常开触点 接通,使输出继电器 导通为 ;当X0断开时,定时器 断开时 复位,对应的常开触点T1断开 输出继电器Y0断开为 断开, 断开为OFF。 复位,对应的常开触点 断开,输出继电器 断开为 。
第三章MCS51系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
微机原理与接口技术第3章 80x86指令系统
52234H 89H (操作数低8位) 52235H 67H (操作数高8位)
……
运行结果:(AX) = 6789H
图3-11 基址变址寻址
图3-12 DEBUG下基址变址指令的输入、汇编及执行
5、相对基址变址寻址
EA = 基址 + 变址 + 位移量
例如:(DS)=5000H,(BX)=1234H,(SI)=1000H ,则: MOV AX,[BX+SI+2000H]
I/O端口寻址
间接端口寻址:采用这种寻址方式时,端口地址为16 位(0~0FFFFH)。
必须先将端口地址存放到寄存器DX中。
例如:
MOV DX,1000H ;端口地址为1000H OUT DX,AL ;间接端口寻址
小结
1. 立即寻址方式:MOV AX,0FF00H 2. 寄存器寻址方式: MOV DX,AX 3. 直接寻址方式: MOV AX,[2000H] 4. 寄存器间接寻址方式: MOV BX,[SI] 5. 寄存器相对寻址方式: MOV AL,COUNT[BX] 6. 基址变址寻址方式: MOV AX,[BX][SI] 7. 相对基址变址寻址方式:
SS
SP
栈顶(低地址)
堆 栈
已入栈 的数据
……
段
栈底(高地址)
图3-20 堆栈结构
➢ 指令格式:PUSH 16位/32位源操作数 POP 16位/32位目的操作数
源操作数:16位或32位通用寄存器、段寄存器或存储器操作 数
386以上系统允许PUSH指令的源操作数为立即数 目的操作数:16位或32位通用寄存器、段寄存器或存储器操 作数 只有386以上的处理器才能使用32位的操作数
计算机指令系统
2、要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是一个8位的寄存器,所以只提供低8位地址。因为有时扩展的外部RAM的数量比较少,少于或等于256个,就只需要提供8位地址就够了。
例3-2-2:实现片外数据存储器数据传(2000H)®(2100H)。 若(2000H)=X
一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释] 换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数
§3-1 指令格式
操作码 [操作数1] [操作数2] 有单字节、双字节和三字节指令。
汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。
(45H)=34H (DPTR)=6712H (12H)=67H (R0)=12H (A)=67H
说明:
非法指令: MOV R1,R2 MOV R2,@R0
1.一条指令中不能同时出现两个工作寄存器:ຫໍສະໝຸດ 非法指令:MOV A,@R2
2.间址寄存器只能使用 R0、R1。
非法指令:MOV R0,#80H MOV A,@R0
MOV DPTR,#2000H
MOVX A,@DPTR
3.SFR区只能直接寻址,不能用寄存器间接寻址。
只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。 思考:找出配对指令,实现反向传送。
4.指令表: (指令字节数,机器周期数)
指令格式:MOVX 目的操作数,源操作数 寻址方式:片外数据存储器用寄存器间址方式。 1. DPTR作16位数据指针,寻址64KB片外RAM空间 MOVX A,@DPTR ;A←(DPTR) 读数据 MOVX @DPTR,A ;(DPTR)←A 写数据 2. Ri作8位数据指针,寻址256B片外RAM空间 MOVX A,@Ri ;A←(Ri) 读数据 MOVX @Ri,A ;(Ri)←A写数据
例3-2-2:实现片外数据存储器数据传(2000H)®(2100H)。 若(2000H)=X
一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释] 换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数
§3-1 指令格式
操作码 [操作数1] [操作数2] 有单字节、双字节和三字节指令。
汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。
(45H)=34H (DPTR)=6712H (12H)=67H (R0)=12H (A)=67H
说明:
非法指令: MOV R1,R2 MOV R2,@R0
1.一条指令中不能同时出现两个工作寄存器:ຫໍສະໝຸດ 非法指令:MOV A,@R2
2.间址寄存器只能使用 R0、R1。
非法指令:MOV R0,#80H MOV A,@R0
MOV DPTR,#2000H
MOVX A,@DPTR
3.SFR区只能直接寻址,不能用寄存器间接寻址。
只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。 思考:找出配对指令,实现反向传送。
4.指令表: (指令字节数,机器周期数)
指令格式:MOVX 目的操作数,源操作数 寻址方式:片外数据存储器用寄存器间址方式。 1. DPTR作16位数据指针,寻址64KB片外RAM空间 MOVX A,@DPTR ;A←(DPTR) 读数据 MOVX @DPTR,A ;(DPTR)←A 写数据 2. Ri作8位数据指针,寻址256B片外RAM空间 MOVX A,@Ri ;A←(Ri) 读数据 MOVX @Ri,A ;(Ri)←A写数据
第三章PLC指令系统2
指令盒与字节移位比较,只有名称变为SHL
DW和 SHR DW,其他部分完全相同。最大实际可移位次 数为32。 指令格式: SLD SRD 例: SLD SRD OUT, N (双字左移) OUT, N (双字右移) MD0, 2 LD0, 3
2.
循环左移、循环右移
循环移位特点: 移位数据存储单元的移出端与另一端相连,同时又与 SM1.1 (溢出) 相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存 储单元。 移位次数与移位数据的长度有关,如果移位次数设定值大于移位数据 的位数,则执行循环移位之前,系统先对设定值取以数据长度为底的 模,用小于数据长度的结果作为实际循环移位的次数。如字左移时, 若移位次数设定为36,则先对36取以16为底的模,得到小于16的结果4, 故指令实际循环移位4次。 如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。 移位指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出)。 使能流输出 ENO 断开的出错条件: SM4.3 (运行时间); 0006 (间接 寻址)。 移位次数N为字节型数据。
循环右移指令:
移位指令 (2)字循环左移和字循环右移指令:RLW,RRW
指令盒与字节循环移位只有名称变为 ROL
W和 ROR W ,其他部分完全相同。使能输入有效时, 把字型输入数据IN循环左移或循环右移N位后,再 将结果输出到 OUT 所指的字存储单元(在语句表 中, IN 与 OUT 使用同一个单元)。实际移位次数 为设定值取以16为底的模所得的结果。 指令格式: RLW OUT, N (字循环左移) RRW OUT, N (字循环右移) 例: RLW MD0, 2 RRW LD0, 3
SHRB EN ENO ENO DAT A S_BIT I0.1 正跳变 I0.2 S_BIT 0 1 0 0 1 0 0 0 1 1 溢出位 1
DW和 SHR DW,其他部分完全相同。最大实际可移位次 数为32。 指令格式: SLD SRD 例: SLD SRD OUT, N (双字左移) OUT, N (双字右移) MD0, 2 LD0, 3
2.
循环左移、循环右移
循环移位特点: 移位数据存储单元的移出端与另一端相连,同时又与 SM1.1 (溢出) 相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存 储单元。 移位次数与移位数据的长度有关,如果移位次数设定值大于移位数据 的位数,则执行循环移位之前,系统先对设定值取以数据长度为底的 模,用小于数据长度的结果作为实际循环移位的次数。如字左移时, 若移位次数设定为36,则先对36取以16为底的模,得到小于16的结果4, 故指令实际循环移位4次。 如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。 移位指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出)。 使能流输出 ENO 断开的出错条件: SM4.3 (运行时间); 0006 (间接 寻址)。 移位次数N为字节型数据。
循环右移指令:
移位指令 (2)字循环左移和字循环右移指令:RLW,RRW
指令盒与字节循环移位只有名称变为 ROL
W和 ROR W ,其他部分完全相同。使能输入有效时, 把字型输入数据IN循环左移或循环右移N位后,再 将结果输出到 OUT 所指的字存储单元(在语句表 中, IN 与 OUT 使用同一个单元)。实际移位次数 为设定值取以16为底的模所得的结果。 指令格式: RLW OUT, N (字循环左移) RRW OUT, N (字循环右移) 例: RLW MD0, 2 RRW LD0, 3
SHRB EN ENO ENO DAT A S_BIT I0.1 正跳变 I0.2 S_BIT 0 1 0 0 1 0 0 0 1 1 溢出位 1
第3章.指令系统控制程序转移类指令new下
;3字节指令
同样地,使用时,可以将rel理解成标号,即: CJNE A,#data, 标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
⑵比较(不相等)转移指令
① CJNE A,#data,rel
;先(PC)+3→PC
若(A)>#data,则(PC)+rel→PC,且0→CY; 若(A)<#data,则(PC)+rel→PC,且1→CY; 若(A)=#data,则顺序执行,且0→CY。
② rel为负数时,范围为:-128~-1 (80H~FFH)。
③相对转移指令“SJMP rel”
★正向跳转时: rel=目的地址-源地址-2
=地址差-2。
例如:
0157H
0100H:SJMP rel
设转移的地址为0157H,则: rel=0157H-0100H-2=55H。故该指令可写成:
0100H:SJMP 55H 其机器码为: 80H 55H
⑵位置1指令
SETB C SETB bit
; 1→ CY。 1字节指令 ;1→bit 。 2字节指令
2. 位修正指令
⑶位取反指令
CPL C
;(C)→C, 1字节指令
CPL bit ;(bit) → bit。 2字节指令
3. 位逻辑运算指令 ⑴位逻辑“与”指令 ANL C, bit ;(C) ∧ (bit)→C。 2字节指令 ANL C, /bit ;(C) ∧ (bit) →C。 2字节指令
; 否则顺序执行。
JNZ rel ;(PC)+2→PC。若A≠0,则转移到(PC)=(PC)+rel ;
;否则顺序执行。
第3章_MCS-51单片机指令系统及汇编语言程序设计2
3. 汇编语言的语句格式是什么?使用标号有什么限制?注释段起什么作用? 答案: MCS-51汇编语言的语句格式应符合下列结构: 【标号:】 操作码 【操作数】【;注释】 标号位于语句的开始,由以字母开头的字母和数字组成,它代表该语句的地址。 标号与操作码之间要用“:”隔开,标号与“:”之间不能有空格,“:”与操 作码之间可以有空格。 注释在语句的最后,以“;”开始,是说明性的文字,与语句的具体功能无关。 4. MCS-51汇编语言有哪几条常用伪指令?各起什么作用? 答案: ORG:汇编程序起始地址,用来说明其后程序段在存储器中存放的起始地址; EQU:赋值指令,用来给变量标号赋予一个确定的数值; DB:定义数据字节,指令按字节数的形式把数据存放在存储单元中; DW:定义数据字,按字(双字节)的形式把数据存放在存储单元中; DS:定义存储区,从指定的地址单元开始,保留一定数量的存储单元; BIT:位定义,其功能是把位地址赋给字符名称; END:汇编结束,表明汇编语言程序结束。
2.顺序程序
顺序程序是指程序中没有使用转移类指令的程序段,机器执行这 类程序时也只需按照先后顺序依次执行,中间不会有任何分支、循环, 也不需要调用子程序。 例:将一个单字节十六进制数转换成BCD码。 解:算法分析。单字节十六进制数在0~255之间,将其除以100后, 商为百位数;余数除以10,商为十位数,余数为个位数。 设单字节数存放在40H,转换后,百位数存放在R0中,十位数存 放在R1中,个位数存放在R2中,具体程序如下: ORG 0030H MOV A, 40H ;将单字节十六进制数送入A中 MOV B,#64H ;将100送入B中, #64H可直接写成#100 DIV AB MOV R0,A ;百位数送R0,余数在B中 XCH A,B ;余数送入A中 MOV B,#0AH ;将10送入B中, #0AH可直接写成#10 DIV AB ;商为十位数,余数为个位数 MOV R1,A MOV R2,B SJMP $
03.9 第三章 - 单片机指令系统(位操作指令MOV、SETB、CLR、CPL、ANL、ORL)
;A = 59H = 0101 1001B ;P1 = A = 0101 1001B ;C = 1 ;ACC.1 = 1 ;P1.3 = 0 ;P1.6 = 0 ;P1.2 = 1 ;(20H)= P1 = 0001 0101B ;(30H)= A = 0101 1011B
09:43
单片机技术
8
3.9.2 位控制指令(SETB、CLR、CPL)
;P1.0 = 1 ;ACC.3 = 0 ;C = 1 ;C = 1 ;C = 1 ;P3.4 = 1
09:43
单片机技术
14
3.9.3 位条件转移指令(JC、JB、JBC)
❖ 1.判C转移指令ຫໍສະໝຸດ JC、JNC)JC rel
;先PC←PC+2;若(Cy)= 1时转移,且PC'
=PC+rel,否则顺序执行
CPL bit ;(bit)= (/bit)
▪ 功能:将Cy或bit取反。
09:43
单片机技术
9
3.9.2 位控制指令(SETB、CLR、CPL)
❖ 课堂练习
▪ 执行以下指令?
SETB P1.0 CLR 20H CLR PSW.2 CPL PSW.2 CLR RS0 SETB RS1
;P1.0 = 1 ;20H = 0 ;PSW.2 = 0 ;PSW.2 = 1 ;RS0 = 0 ;RS1 = 1
❖ 1.位置1指令(SETB)
▪ 格式:SETB C ;(Cy) = 1
SETB bit ;(bit)= 1
▪ 功能:将Cy或bit置1。
❖ 2.位置0指令(CLR)
▪ 格式:CLR C ;(Cy) = 0
CLR bit ;(bit)= 0
▪ 功能:将Cy或bit置0。
第三章指令系统及程序设计
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
图 3.4 顺序程序结构图图 3.5
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第
备课日期:2011 年03 月 1 日第。
第三章指令系统1PPT课件
存储器操作数具有类型属性,如字节(BYTE)、字 (WORD)、双字(DWORD)等,反映了数据占用存储单元 的字节数。
一条指令中,只能有一个存储器操作数,或者源操 作数,或者目的操作数,在指令书写中,约定用方括号 内容表示存储器操作数的偏移地址 ,如[2300H]。
4 . 直接寻址方式
第三章 8086/8088指令系统
机器指令:是CPU仅能识别的指令的二进制代码,也称机器码;
程序:程序是一组指令有序的集合,是为完成特
定任务而设计的。
指令执行的具体操作
一般指令的格式:
操作码
操作数
指令操作的对象,即操作数的来源或操作结果的去向
每条指令的第一字节一定是操作码。
第三章 8086/8088指令系统
常见的指令格式有如下几种:
(BX) 有效地址 = (SI)
(DI) (BP)
物理地址计算方法:
段寄存器为DS 段寄存器为SS
物理地址 PA = (DS)* 16地址 PA = (SS)* 16 + (BP)
第三章 8086/8088指令系统
例:MOV AX,[BX] ; 若已知(DS)=1000H , (BX)=0040H,则执行的操作如下:
两地址指令是最常见的指令格式,如 ADD AX , BX
第三章 8086/8088指令系统
3.1.2 寻址方式
指令的主要组成部分之一是操作数,指令中的操作数部分指 明了参与操作的数据本身或是规定了操作数的地址,操作数通常 保存在:①指令字节中,称为立即数;② CPU的寄存器中; ③ 存储器单元中; ④ I/O接口寄存器中。
1.隐含寻址
指令中不指明操作数,但操作数隐含在操作码中。 例:
MUL CL ; (AX) ←(AL)×(CL) DIV BL ; (AL) ←(AX)/(BL)的商
一条指令中,只能有一个存储器操作数,或者源操 作数,或者目的操作数,在指令书写中,约定用方括号 内容表示存储器操作数的偏移地址 ,如[2300H]。
4 . 直接寻址方式
第三章 8086/8088指令系统
机器指令:是CPU仅能识别的指令的二进制代码,也称机器码;
程序:程序是一组指令有序的集合,是为完成特
定任务而设计的。
指令执行的具体操作
一般指令的格式:
操作码
操作数
指令操作的对象,即操作数的来源或操作结果的去向
每条指令的第一字节一定是操作码。
第三章 8086/8088指令系统
常见的指令格式有如下几种:
(BX) 有效地址 = (SI)
(DI) (BP)
物理地址计算方法:
段寄存器为DS 段寄存器为SS
物理地址 PA = (DS)* 16地址 PA = (SS)* 16 + (BP)
第三章 8086/8088指令系统
例:MOV AX,[BX] ; 若已知(DS)=1000H , (BX)=0040H,则执行的操作如下:
两地址指令是最常见的指令格式,如 ADD AX , BX
第三章 8086/8088指令系统
3.1.2 寻址方式
指令的主要组成部分之一是操作数,指令中的操作数部分指 明了参与操作的数据本身或是规定了操作数的地址,操作数通常 保存在:①指令字节中,称为立即数;② CPU的寄存器中; ③ 存储器单元中; ④ I/O接口寄存器中。
1.隐含寻址
指令中不指明操作数,但操作数隐含在操作码中。 例:
MUL CL ; (AX) ←(AL)×(CL) DIV BL ; (AL) ←(AX)/(BL)的商
4指令系统
指令寄存器 OP Rb D 20 主存储器
ALU
120
操作数
基址值 100 基址寄存器Rb
操作数S=((Rb)+D)
主要用途:用以解决程序在主存中的再定位问题 将程序装入主存的起始地址放入基址寄存器,指 令中给出数据存放位置与基地址的相对位移量 MOV [BX]20, AX
8.相对寻址
有效地址是指令中地 址码部分给出的形式 地址(偏移量Disp)与 程序计数器PC的当 前值之和。 主要应用于转移指令
例如:设某机的指令长度为16位 如果采用定长操作码,假设每个地址码4位,则: 能表示16条不同的三地址指令。 或者256条二地址指令。 或者用12位操作码表示4096条一地址指令。 如果采用扩展操作玛法,则有不同的编码方案:
操作码扩展法示例1
4位 4位 4位 4位
OP OP
OP
A1 OP
3.2 寻址技术
寻址:指令中如何给出操作数的地址或者下 一条要执行指令的地址。 寻找到所需要的操作数-数据寻址 寻找下一条指令的地址,实现程序转移-指 令寻址 寻址技术主要解决以下两个问题: (1)解决指令地址字段长度与访存范围之 间的矛盾。 (2)增加编程的灵活性
3.2.3基本的数据寻址方式
PDP-11机(字长16位)的指令
4 6 6
OP
8
S
2
D
6
OP
8
R
8
S X
6
单字长 (16位)
OP
10
S: 源操作数地址 D: 目的操作数地址 R: 寄存器
OP
13
D
3
X: 位移量
OP
16
R
OP 二字长 (32位) 三字长 (48位)
ALU
120
操作数
基址值 100 基址寄存器Rb
操作数S=((Rb)+D)
主要用途:用以解决程序在主存中的再定位问题 将程序装入主存的起始地址放入基址寄存器,指 令中给出数据存放位置与基地址的相对位移量 MOV [BX]20, AX
8.相对寻址
有效地址是指令中地 址码部分给出的形式 地址(偏移量Disp)与 程序计数器PC的当 前值之和。 主要应用于转移指令
例如:设某机的指令长度为16位 如果采用定长操作码,假设每个地址码4位,则: 能表示16条不同的三地址指令。 或者256条二地址指令。 或者用12位操作码表示4096条一地址指令。 如果采用扩展操作玛法,则有不同的编码方案:
操作码扩展法示例1
4位 4位 4位 4位
OP OP
OP
A1 OP
3.2 寻址技术
寻址:指令中如何给出操作数的地址或者下 一条要执行指令的地址。 寻找到所需要的操作数-数据寻址 寻找下一条指令的地址,实现程序转移-指 令寻址 寻址技术主要解决以下两个问题: (1)解决指令地址字段长度与访存范围之 间的矛盾。 (2)增加编程的灵活性
3.2.3基本的数据寻址方式
PDP-11机(字长16位)的指令
4 6 6
OP
8
S
2
D
6
OP
8
R
8
S X
6
单字长 (16位)
OP
10
S: 源操作数地址 D: 目的操作数地址 R: 寄存器
OP
13
D
3
X: 位移量
OP
16
R
OP 二字长 (32位) 三字长 (48位)
第3章指令系统及程序设计举例-精品
×中的内容 由×指出的地址单元中的内容
3.2 89C51单片机的指令系统
五大类(111条): 1. 数据传送指令: 28条 3. 逻辑运算及移位:25条 5. 位操作指令: 17条
2. 算术运算指令:24条 4. 控制转移指令:17条
一、数据传送指令
通用数据 格式:MOV
传送指令
MOVX
MOVC
目标,源 ;片内数据传送 目标,源 ;累加器A与片外RAM传送 目标,源 ;累加器与ROM传送
例: MOVC A,A+DPTR ;((A)+(DPTR))A MOVC A,A+PC ;((A)+(PC))A
6. 相对寻址(ROM) ——只出现在相对转移指令中
相对偏移量的计算(以2字节指令为例): rel=(目标地址—源地址—2)补
相对转移指令执行时,是以当前PC (程序计数器)的值加上指令中规定 的偏移量rel而形成实际的转移地址。
例:JC
rel ;rel=75H
当指令JC被取出时,PC值已在原地址
上加2,这时程序转移到当前的PC+rel地址去执行,即转去 当前202P0/6C/1 +75H。
7. 位寻址(属于直接寻址) ——操作数中给出的是位地址,即片内RAM某一单元中的一位。
① 20H~2FH 的128个位单元地址00H~07FH 包括
(1)字节交换指令 ① XCH A,Rn ② XCH A,direct ③ XCH 2020/6/1 A,Ri
;ARn reg寻址 ;A(direct) 直接寻址 ;A(Ri) 间接寻址
2020/6/1
二、算术运算指令
1. 加法 ① ADD ② ADD ③ ADD ④ ADD
A,Rn
第3章 指令系统3-2(2)
例3-60 用SAR指令计算-128/8=-16的程序如下: MOV AL,1000 0000B ;AL=-128 MOV CL,03H ;右移位次数3 SAR AL,CL ;右移3次 指令执行后,AL=0F0H=-16。
10
CF
MSB←—----------------LSB
ROL循环左移
CF
MSB—---------------→LSB
SAR算术右移
7
例3-58 MOV AH,06H SAL AH,1 MOV CL,03H SHL DI,CL SAL BYTE PTR[BX],1
CF MSB←—----------------LSB ←0 SHL/SAL逻辑/算术左移
8
CF 0
MSB-—---------------→LSB
SHR逻辑右移
27
表3-11 直接标志条件转移指令 指令助记符
JC JNC JZ/JE JNZ/JNE JS
测试条件
CF=1 CF=0 ZF=1 ZF=0 SF=1 有进位 无进位
指令功能
转移 转移 转移 转移
结果为零/相等 符号为负
结果不为零/不相等 转移
JNS
JO
SF=0
OF=1
符号为正
溢出
转移
转移
JNO
JP/JPE
例3-55 假设AX中存有两个BCD数0508H,要将它 分别转换成ASCII码,结果放回AX。 OR AX,3030H
4
例3-56 若AL中存有某外设端口的状态信息,其中 D1位控制扬声器发声,要求该位在0、1之间来回变 化,其余各位保留不变,实现如下:
XOR AL,0000 0010B
5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.逻辑异或指令 XRL A,Rn ;n=0~7 XRL A,direct XRL A,@Ri ;i=0、1 XRL A,#data XRL direct,A XRL direct,#data 功能:操作数之间执行按位的逻辑异或操作, 结果存放到目的操作数中去。
第六节 位操作指令
进位位CY(程序状态字PSW.7)作为累加器C,以 RAM和SFR内的位寻址区的位单元作为操作数, 进行位变量的传送、修改和逻辑等操作。 一、位变量传送指令
3.以直接寻址的单元为目的操作数指令
MOV direct,A MOV direct,Rn ;n=0~7 MOV direct,direct MOV direct,@Ri ;i=0、1 MOV direct,#data 功能:把源操作数送入由直接地址指出的存储单元。
4.以寄存器间接寻址的单元为目的操作数指令
2.带进位加法指令
ADDC A,Rn ;n=0~7 ADDC A,direct ADDC A,@Ri ;i=0、1 ADDC A,#data 功能: • 同时把所指出的第二操作数、进位标志与累加器 A内容相加,结果放在累加器中。 • 指令执行后,影响PSW标志位。
3.增量指令
INC A INC Rn ;n=0~7 INC direct INC @Ri ;i=0、1 INC DPTR 功能: • 把指令所指出的操作数加1。 • 除对A作影响P外不影响任何PSW标志。
第三节 数据传送指令
MOV <目的操作数>, <源操作数>
• 数据传送指令是指把源操作数传送到目的操作数。指令执 行后,源操作数的值不改变,目的操作数的值改为源操作 数赋给的相应值。 • 除以累加器A为目的操作数寄存器指令会对奇偶标志位P 有影响外,其余指令执行时均不会影响任何PSW的标志
位。
一、内部数据传送指令 1.以累加器A为目的操作数的指令
四、除法指令
DIV AB 功能:把累加器A中的8位无符号整数除以寄存器B中的8位 无符号整数,所得商的整数部分存放在累加器A中,余数 在寄存器B中。 如果原来B中的内容为0,即除数为0,则结果A和B中内容 不定,并置位溢出标志OV。在任何情况下,都清“0”CY。
第五节 逻辑运算指令
一、累加器A的逻辑ຫໍສະໝຸດ 作指令MOV @Ri,A ;i=0、1 MOV @Ri,direct MOV @Ri,#data 功能:把源操作数内容送入R0或R1指出的内部RAM存贮单 元中。
5.16位数据传送指令
MOV DPTR,#datal6 功能:把16位常数送入DPTR。
6.堆栈操作指令
内部RAM中可以设定一个后进先出(LIFO)的堆栈 。 (1)进栈指令 PUSH direct 功能:首先将堆栈指针SP加1,然后把直接地址指出的内容 传送到堆栈指针SP寻址的内部RAM单元中。 (2)退栈指令 POP direct 功能:堆栈指针SP寻址的内部RAM单元内容送入直接地址 指出的字节单元中,堆栈指针SP减1。
三、寄存器间接寻址
指令指出某一个寄存器的内容作为操作数的地址。 如:MOV A,@ R0 寻址空间:内部RAM(@R0、@R1、SP) 外部数据存储器(@R0、@R1、 @DPTR)
四、立即寻址
立即寻址方式中操作数包含在指令字节中, 即操作数以指令字节的形式存放于程序存储 器中。 如:MOV A , #3AH
第三章 MCS-51指令系统
第一节 指令系统概述
一、指令类型
MCS-51指令系统: • 数据传送指令 • 算术运算指令 • 逻辑运算指令 • 位操作指令 • 控制转移指令
二、指令格式
操作码 [操作数1],[操作数2],[操作数3] • 操作码:表示指令进行何种操作。 • 操作数:指出了参加操作的数据或数据存放的地 址。 操作数和操作码之间用一个或几个空格隔开,操 作数之间以逗号“,”分开。
MOV C,bit MOV bit,C
二、位变量修改指令
CLR C CLR bit CPL C CPL bit SETB C SETB bit
三、位变量逻辑操作指令 1.位变量逻辑与指令
ANL C,bit ANL C,/bit 功能:如果源位的布尔值是逻辑0,则进位标志清“0”,否 则进位标志保持不变。操作数前斜线“/”表示用寻址位 的逻辑非作源值,但不影响源位本身值,不影响别的标志。
五、基寄存器加变址寄存器间接寻址
以16位的程序计数器PC或数据指针DPTR作 为基寄存器,以8位的累加器A作为变址寄存 器,基寄存器和变址寄存器的内容相加形成 16位的地址,该地址即为操作数的地址。
如:MOVC A, @A+DPTR 寻址范围:只能对程序存储器ROM进行寻 址,主要用于查表性质的访问。
第四节 算术运算指令
算术运算指令有加、减、乘、除法指令,增量和减量指令。 一、加法指令 1.不带进位的加法指令 ADD A,Rn ; n=0~7 ADD A,direct ADD A,@Ri ; i=0、1 ADD A,#data 功能: • 把所指出的第二操作数和累加器A的内容相加,其结果放 在累加器中。 • 指令执行后,影响PSW标志位。
MOVX A,@DPTR MOVX A,@Ri ; i=0,1 MOVX @DPTR,A MOVX @Ri,A 功能:将累加器A和外部扩展的 RAM/ IO口的数据传送。
三、查表指令
1.MOVC A,@A+PC 功能:以PC作为基址寄存器,A的内容作为无符 号数和PC内容(下一条指令的始地址)相加后得到 一个16位的地址,由该地址指出的程序存储器单 元内容送到累加器A。 2.MOVC A,@A十DPTR 功能:以DPTR作为基址寄存器,A的内容作为无 符号数和DPTR的内容相加得到一个16位的地址, 由该地址指出的程序存储器单元的内容送到累加 器A。
4.十进制调整指令
DA A 功能:对累加器A中由上一条加法指令(加数和被加数均为压 缩的BCD码)所获得8位结果进行调整,使它调整为压缩 BCD码的数。
二、减法指令 1.带进位减法指令
SUBB A,Rn ;n=0~7 SUBB A,direct SUBB A,@Ri ;i=0、1 SUBB A,#data 功能: • 从累加器中减去第二操作数和进位标志,结果在 累加器中。 • 指令执行后,影响PSW标志位。
2.减1指令 DEC A DEC Rn ;n=0~7 DEC direct DEC @Ri ;i=0、1 功能: • 将指定的操作数减1。 • 除对A作影响P外不影响任何PSW标志。
三、乘法指令
MUL AB 功能:把累加器A和寄存器B中的8位无符号整数相乘,其16 位积的低位字节在累加器A中,高位字节在B中。 如果积大于255(0FFH),则置位溢出标志OV;否则清 “0”OV。进位标志CY总是清“0” 。
3.字定义伪指令 DW Y1,Y2,·· ·,Yn Yi:双字节数据。它可以为十进制或十六进制的数,也可 以为一个表达式。 功能:Y1,Y2,…,Yn送目标程序存储器,经常用于定 义一个地址表。 4.汇编结束伪指令 END 功能:汇编结束标志。 5.标号和注释 标号:操作码 [操作数1],[操作数2],[操作数3];注释 标号:加在指令之前,必须以字母开始,后跟1~8个字母 或数字,并以冒号“:”结尾。标号的值是它后面的指令 存储地址。 注释:对某一条指令或某一段程序的功能说明,它必须以 分号“;”开始 。
7.字节交换指令
XCH A,Rn ;n=0~7 XCH A,direct XCH A,@Ri ;i=0、1 功能:将累加器A的内容和源操作数内容相互交换。
8.半字节交换指令
XCHD A,@Ri ;i=0、1
功能:将A的低4位和R0或R1指出的RAM单元低4位相互交 换,各自的高4位保持不变。
二、累加器A与外部数据存储器传送指令
四、常用的缩写符号
A 累加器ACC。 AB 累加器ACC和寄存器B组成的寄存器对。 C 进位标志位CY,也是位操作指令中的位累加器。 Rn 表示当前选中的通用寄存器R0~R7(n=0~7)。 Ri 表示通用寄存器中可用作8位地址指针的R0和R1 (i=0,1)。 direct 直接地址,取值为0~0FFH。 #data 立即数,表示一个常数。 @ 间接寻址。 addr 表示外部数据存储器的地址。 bit 表示内部RAM或特殊功能寄存器中的直接位地址。 × 寄存器。 (×) 寄存器内容。 ((×)) 由X寄存器寻址的存储器单元内容。 (×) 寄存器的内容取反。 rel 相对偏移量,其值为-128~+127。
六、相对寻址
相对寻址方式是为实现程序的相对转移而设计的, 为相对转移指令所采用。将程序计数器PC的当前 值(取出本条指令后的PC值)与指令第二个字节 给出的偏移量(rel)相加,形成新的转移目标地 址。即目的地址=PC值+转移指令字节数+rel 如:SJMP rel ;(PC)←(PC) + 2 + rel 寻址范围:只能对程序存储器ROM进行寻址。 其中rel为带符号的8位二进制补码数,取值范围 -128~+127 。 rel可以是标号。
第二节 寻址方式
寻址方式:指令给出参与运算的数据的方式。 一、寄存器寻址 指令指出某一个寄存器的内容作为操作数。 如:MOV A,R0 寻址空间:R0~R7 A、B、C、AB、DPTR 二、直接寻址 在指令中含有操作数的直接地址,该地址指出了参与运算或 传送的数据所在的字节单元或位的地址。 如:MOV A , 3AH 直接寻址方式访问以下三种存储空间: • 特殊功能寄存器(特殊功能寄存器只能采用直接寻址方式)。 • 内部数据存储器的低128字节。 • 位地址空间。
MOV A,Rn ;n=0~7 MOV A,direct MOV A,@Ri ;i=0,1 MOV A,#data 功能:把源操作数的内容送入累加器A。
2.以Rn为目的操作数的指令