当前位置:
文档之家› 第3章_6 8086指令系统(分支CPU指令)及习题
第3章_6 8086指令系统(分支CPU指令)及习题
3.3 指令系统
按功能分为:
•数据传送指令 •算术运算指令 •位处理指令(逻辑运算指令)
•串操作指令
•控制转移指令 •处理机控制指令
3.3 指令系统 控制转移类指令用于实现分支、循环、过程等程序结构,是 仅次于传送指令的常用指令 控制转移类指令通过改变IP(和CS)值,实现程 序执行顺序的改变 • 相对寻址方式 指令代码中提供目的地址相对于当前IP的位移量,转 移到的目的地址(转移后的IP值)就是当前IP值加上位 移量 • 直接寻址方式 指令代码中提供目的逻辑地址,转移后的CS和IP值直 接来自指令操作码后的目的地址操作数 • 间接寻址方式 指令代码中指示寄存器或存储单元,目的地址从寄存 器或存储单元中间接获得
例如: (SI)=0100H JMP SI 指令跳转到 CS:0100H执行。 34H 12H
Part1 JMP [BX] 例如,(BX)=100H,DS:0100H=1234H JMP [BX] 指令跳转到 CS:1234H执行。 Part2 1234H XXX Part3
CS:0100H
跳过1134H CS:1234H DS:0100H
代 码 段
实际编程时,汇编程序会根据目标地址的属 性,自动处理成短转移、近转移或远转移 程序员可用操作符short、near ptr 或far ptr 强制成为需要的转移类型
代 码 段
转移指令及寻址方式
五、程序转移指令—无条件转移和条件转移 无条件转移:
转移发生不需要状态信息, 执行JMP指令发生的转移。
转移指令及寻址方式
五、程序转移指令—无条件转移
1、JMP 指令 格式:JMP dest 功能:无条件转移到操作数(dest)所指示的地址,不影响标志。 •段内转移:
16位立即数
•直接转移 : JMP START
NERA 标号
(IP)←START
Part1 JMP1234H Part2 1234H XXX
例如:DI=200H 双字(DS:0200H)=12345678H JMP DWORD PTR [DI] 指令执行: 低位字:(IP)=5678H 高位字:(CS)=1234H
Part1 JMP DWORD PTR [DI]
CS:0100H
Part2 XXX Part3
1234H:5678H
五、程序转移指令—条件转移
(5) MOV AL,[SI] (6) ADC AL,[DI] DAA
;AL=87H ;AL=0CCH ;AL=32H CF=0H
习题课
P143 7. 若CPU中各寄存器及RAM参数如题图所示,试求独立执行如下接 令后,CPU相应寄存器及RAM相应内存单元的内容是多少?
RAM CS DS SS ES IP DI SI 3000H 2050H 50A0H 0FFFH 0000H 000AH 0008H FFFFH 0004H 0000H 17C6H 8094H 1403H 1 CX BX SP DX AX BP CF 20506H 507H 508H 509H 50AH 50BH 50CH 执行前 06H 00H 87H 15H 37H C5H 2FH 执行后
(7) INC SI (8) MOV [DI],3 7. 若CPU中各寄存器及RAM参数如题图所示,试求独立执行如下接 令后,CPU相应寄存器及RAM相应内存单元的内容是多少?
RAM CS DS SS ES IP DI SI 3000H 2050H 50A0H 0FFFH 0000H 000AH 0008H FFFFH 0004H 0000H 17C6H 8094H 1403H 1 CX BX SP DX AX BP CF 20506H 507H 508H 509H 50AH 50BH 50CH 执行前 06H 00H 87H 15H 37H C5H 2FH 执行后
SF PF
OF
五、程序转移指令—条件转移 复杂转移:
由多个标志的状态决定的转移,分为有符号数和无符号数转移 •无符号数转移指令 比较两个无符号数,并根据比较结果转移 JA 标号 ;两数比较,高于则转移 (JNBE) JNA 标号 ;两数比较,不高于则转移(JBE) JB 标号 ;两数比较,低于则转移 (JNAE) JNB 标号 ;两数比较,不低于则转移(JAE) •有符号数转移指令 比较两个带符号数,并根据比较结果转移 JG 标号 ;两数比较,大于则转移 (JNLE) JNG 标号 ;两数比较,不大于则转移(JLE) JL 标号 ;两数比较,小于则转移 (JNGE) JNL 标号 ;两数比较,不小于则转移(JGE)
习题课
P143 6. 根据以下要求写出相应80X86汇编语言指令 ① 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中. ② 用寄存器BX和偏移量为0B42H的寄存器相对寻址方式把存诸 器中的一个字和(CX)相加,并把结果送回存储器中。 ③ 用寄存器BP和SI的基址加变址寻址方式求得的存储器字操作 数和AX累加器内容相加,并结结果送入AX寄存器中。
(3) MOV CX,BX (4) TEST AX,01
;CX=04H
BX=04H
;AX=8094H CF=0H
习题课
P143 7. 若CPU中各寄存器及RAM参数如题图所示,试求独立执行如下接 令后,CPU相应寄存器及RAM相应内存单元的内容是多少?
RAM CS DS SS ES IP DI SI 3000H 2050H 50A0H 0FFFH 0000H 000AH 0008H FFFFH 0004H 0000H 17C6H 8094H 1403H 1 CX BX SP DX AX BP CF 20506H 507H 508H 509H 50AH 50BH 50CH 执行前 06H 00H 87H 15H 37H C5H 2FH 执行后
CS:0100H 跳过1134H CS:1234H
例如: JMP 1234H 指令跳转到 CS:1234H执行。
Part3
五、程序转移指令—无条件转移
•段内转移: •直接短转移 : JMP SHORT START
SHORT START为 8位位移量 (-128~+127) •执行操作:(IP)←(IP)+2±位移量 例如: JMP SHORT START (=12H) 指令跳转到 CS:(IP+2+12H)执行。 例如: JMP SHORT START (= -12H) 指令跳转到 CS:(IP+2 - 12H)执行
Part1
JMP 12H
Part2
CS:1220H
12H+2H=14H
CS:1234H
XXXXX
Part3 Part3 XXXXX
CS:1224H 2H—12H=—10H CS:1234H
Part2
JMP —12H Part1
五、程序转移指令—无条件转移
•段内转移: •间接转移 :JMP DEST——DEST为 16寄存器或内存操作数 •执行操作:(IP)←DEST
五、程序转移指令—循环控制
•测试CX的值为0则转移
JCXZ 标号 ; (CX)=0则转移 •循环控制指令 CX计数循环次数,每循环一次CX← CX-1 •无条件循环 LOOP •条件循环 LOOP Z 标号 标号
CX≠0 转移到标号继续循环, CX=0顺序执行。
CX≠0且 ZF=1转移到标号继续循环,
IP=1234H
五、程序转移指令—无条件转移 •段间转移: •直接转移 : JMP DEST
例如:
JMP 1234:5678H 指令跳转到 1234:5678H执行
32位立即数 32内存操作数
FAR 标号
(IP)←低16位
(CS)←高16位
78H 56H 34H 12H
DS:0200H
IP=5678H CS=1234H
五、程序转移指令—处理器控制 •同步控制
HLT 暂定指令CPU处于空操作状态,以下三种情况可以使CPU脱 离暂定状态。 •RESET •NMI •当IF=1时INTR •该指令是为中断等待而设。 NOP 空操作指令,进行一个总线周期的空操作,相当于延时4T时 钟周期。 ESC OPCODE ,SRC 交权指令, 把控制权交给协处理器。 OPCODE~6位立即数,外部处理器操作指令。 SRC~外部处理器的内存源操作数,由8086取出放在数据总线上 供外部理器操作。
• 段内转移——近转移(near) 在当前代码段64KB范围内转移( ±32KB范 围)不需要更改CS段地址,只要改变IP偏移地址 • 段内转移——短转移(short) 转移范围可以用一个字节表达,在段内-128 ~+127范围的转移
代 码 段
• 段间转移——远转移(far) 从当前代码段跳转到另一个代码段,可 以在1MB范围 需要更改CS段地址和IP偏移地址,目标 地址必须用一个32位数表达,叫做32位远 指针,它就是逻辑地址
DF标志 CLD DF=0 STD DF=1
IF标志 CLI IF=0 STI IF=1
•同步控制 WAIT 指令——CPU处于空操作状态,每5个T周期测试信号线TEST 当为低电平时脱离WAIT
LOCK 指令前缀, 在执行有LOCK指令时发出总线封锁信号, LOCK
禁止其它主控设备申请总线。
例如
LOCK MOV AX,BX
条件转移都是短转移,转移距离只能在(-128~+127)内完成。 简单转移:条件是由标志寄存器中的标志的状态决定的转移。 复杂转移:条件是由有有符号数和无符号数的大小决定的转移。 •简单转移: CF ZF
FR
JC 标号 CF=1有进位则转移到标号所在地址 JNC 标号 CF=0无进位则转移到标号所在地址 JZ 标号 ZF=1结果为零则转移到标号所在地址 JNZ 标号 ZF=0结果为非零则转移到标号所在地址 JS 标号 SF=1 结果为负则转移到标号所在地址 JNS 标号 SF=0 结果非负则转移到标号所在地址 JP 标号 PF=1结果1的个数为偶数个则转移 JNP 标号 PF=0 结果1的个数为奇数个则转移 JO 标号 OF=1结果溢出则转移到标号所在地址 JNO 标号 OF=0结果未溢出则转移到标号所在地址