《控制转移类指令》PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 段间直接远转移
JMP FAR LABEL ; LABEL 为 CS目的:IP目的
• 段间间接远转移
JMP DWORD [BX] ; CS目的:IP目的 在地址 [BX] 中
注:段间转移方式 —— CS变、IP变
当前CS=210×01H6 21000H
微机原理
代码段1
当前IP =1500H
JMP 0C 02 00 65
IP目的 = 8030H
微机原理
控制转移类指令
CALL指令中的直接调用与间接调用
➢ 段内近过程调用 ✓ 直接 IP目的 CALL MAIN ✓ 间接 IP目的 CALL BX
➢ 段间远过程调用 ✓ 直接 CS目的:IP目的
CALL MAIN
✓ 间接 CS目的:IP目的
CALL DWORD [ BX ]
(IP当前)← SS:SP 恢复现场 IP 值出栈 (CS当前)← SS:SP 恢复现场 CS 值出栈
控制转移类指令
微机原理
近过程的调用时的保持现场
. . MOV AX,BX
CALL MAIN MOV BX,AX
. .
CS 2000H
2002H ← IP源 IP当前 入栈
2005H ← IP当前
段内直接短转移 —— rel8
JMP SHOR LABEL
错误的 rel8
注:rel8 < 80H
正确的 rel8
IP目的 ← IP当前 + rel8 LABEL IP目的 ← IP源 + rel8 + 2
微机原理
← IP源 ← 06H ← IP当前
← IP目的
段内直接近转移 —— rel16 JMP NEAR LABEL
控制转移类指令
➢ CALL、JMP 指令比较
• CALL 指令 先保护现场 CS当前:IP当前 后获得调用过程入口CS目的:IP目的
• JMP 指令 不保护现场 CS当前:IP当前 只获得跳转程序入口CS目的:IP目的
微机原理
控制转移类指令
微机原理
JXX —— 有条件转移指令
• 指令格式
JL、JGE、. . . . . . JNZ 等
微机原理
8088/8086CPU指令系统 寻址方式解决了操作数存放的形式,
本节讲述 8088/8086 CPU基本指令的 助记符表示形式及功能
结合不同的寻址方式,将 133 条基本 指令组合为上千种指令功能
微机原理
8088/8086 CPU 基本指令类
数据传送类指令 算术运算类指令 逻辑运算类指令 串操作类指令 控制转移类指令 处理器控制类指令
控制转移类指令
微机原理
JMP —— 无条件转移指令
• 段内间接转移wenku.baidu.com
✓ 寄存器中的值为段内IP目的地址 JMP BX
✓ 存储器中的值为段内IP目的地址 JMP WORD [ BX ] JMP WORD [ 2000H ]
注:段内转移方式 —— CS不变、IP变
控制转移类指令
微机原理
JMP —— 无条件转移指令
• JMP DWORD [BX] ;段间间接远转移,返回 32 位 CS目的:IP目的 值
微机原理
段内间接转移与段间间接远转移例
若(BX)= 2000H • JMP WORD [BX]
CS目的 = CS源 IP目的 = 3C2AH • JMP DWORD [BX]
CS目的 = 3367H IP目的 = 3C2AH
转移目标的偏移地址 转移目标的段地址
新CS=6500H
×16 65000H
代码段2
新IP = 020CH
转移至此
…
控制转移类指令
微机原理
➢ 段内间接转移与段间间接远转移讨论
• JMP [BX] ;指令错误,未确定[BX]中的数据类型
• JMP WORD [BX] ;段内间接转移,返回 16 位 IP目的 值
• 指令特点
仅有段内短转移,IP目的 = IP当前 + rel8 rel8 值在页内,即-128 ~ +127间
• 前导指令
CMP、TEST、DEC CX 等
注:执行 JXX 指令前的指令必须影响 标志位
条件转移指令的执行流程
微机原理
条件满足 ?
错误的 rel16
正确的 rel16
IP目的 ← IP当前 + rel16 LABEL IP目的 ← IP源 + rel16 + 3
微机原理
← IP源 ← 05H ← 00H ← IP当前
← IP目的
微机原理
例:设标号偏移地址=1000H,执行完JMP指 令后的当前IP值为0009H,则
位移量=1000H-0009H = 0FF7H
微机原理
控制转移类指令
程序转移指令用来控制程序的走向,其 实质是设法改变当前的CS和IP值,以使CPU 转移到一个新的地址处执行程序。
微机原理
控制转移类指令
无条件转移指令 JMP 指令
CALL、RET指令
有条件转移指令 JXX 组指令
中断指令
INT、IRET、INTO指令
循环控制指令
LOOP,LOOPZ,
控制转移类指令
微机原理
• 段内近调用过程 —— CALL LABEL
(IP当前)→ SS:SP 保护现场 IP 值入栈 • 段内近调用返回 —— RET
(IP当前)← SS:SP 恢复现场 IP 值出栈 • 段间远调用过程 —— CALL LABEL
(CS当前)→ SS:SP 保护现场 CS 值入栈 (IP当前)→ SS:SP 保护现场 IP 值入栈 • 段间远调用返回 —— RET
2000H
微机原理
控制转移类指令
CALL、RET —— 过程调用与过程返回指令
• 过程调用指令 — CALL LABEL ✓ 段内近调用过程 CS 不变,IP 变;保护现场即将IP当前值入栈 ✓ 段间远调用过程 CS、IP 均变;保护现场即将CS当前、IP当前值入栈
• 过程返回指令 — RET ✓ 定义近过程时 RET 指令恢复现场即将 IP当前值出栈 ✓ 定义远过程时 RET 指令恢复现场即将 IP当前、CS当前值出栈
LOOPNZ指令
微机原理
控制转移类指令
JMP —— 无条件转移指令 • 段内直接短转移
JMP SHORT LABEL ;IP目的 ← IP当前 + rel8(8 bit 符号数) rel8 在-128 ~ +127之间
• 段内直接近转移
JMP NEAR LABEL ;IP目的 ← IP当前 + rel16 (16 bit 符号数) rel16 在-32768 ~ +32767之间
JMP FAR LABEL ; LABEL 为 CS目的:IP目的
• 段间间接远转移
JMP DWORD [BX] ; CS目的:IP目的 在地址 [BX] 中
注:段间转移方式 —— CS变、IP变
当前CS=210×01H6 21000H
微机原理
代码段1
当前IP =1500H
JMP 0C 02 00 65
IP目的 = 8030H
微机原理
控制转移类指令
CALL指令中的直接调用与间接调用
➢ 段内近过程调用 ✓ 直接 IP目的 CALL MAIN ✓ 间接 IP目的 CALL BX
➢ 段间远过程调用 ✓ 直接 CS目的:IP目的
CALL MAIN
✓ 间接 CS目的:IP目的
CALL DWORD [ BX ]
(IP当前)← SS:SP 恢复现场 IP 值出栈 (CS当前)← SS:SP 恢复现场 CS 值出栈
控制转移类指令
微机原理
近过程的调用时的保持现场
. . MOV AX,BX
CALL MAIN MOV BX,AX
. .
CS 2000H
2002H ← IP源 IP当前 入栈
2005H ← IP当前
段内直接短转移 —— rel8
JMP SHOR LABEL
错误的 rel8
注:rel8 < 80H
正确的 rel8
IP目的 ← IP当前 + rel8 LABEL IP目的 ← IP源 + rel8 + 2
微机原理
← IP源 ← 06H ← IP当前
← IP目的
段内直接近转移 —— rel16 JMP NEAR LABEL
控制转移类指令
➢ CALL、JMP 指令比较
• CALL 指令 先保护现场 CS当前:IP当前 后获得调用过程入口CS目的:IP目的
• JMP 指令 不保护现场 CS当前:IP当前 只获得跳转程序入口CS目的:IP目的
微机原理
控制转移类指令
微机原理
JXX —— 有条件转移指令
• 指令格式
JL、JGE、. . . . . . JNZ 等
微机原理
8088/8086CPU指令系统 寻址方式解决了操作数存放的形式,
本节讲述 8088/8086 CPU基本指令的 助记符表示形式及功能
结合不同的寻址方式,将 133 条基本 指令组合为上千种指令功能
微机原理
8088/8086 CPU 基本指令类
数据传送类指令 算术运算类指令 逻辑运算类指令 串操作类指令 控制转移类指令 处理器控制类指令
控制转移类指令
微机原理
JMP —— 无条件转移指令
• 段内间接转移wenku.baidu.com
✓ 寄存器中的值为段内IP目的地址 JMP BX
✓ 存储器中的值为段内IP目的地址 JMP WORD [ BX ] JMP WORD [ 2000H ]
注:段内转移方式 —— CS不变、IP变
控制转移类指令
微机原理
JMP —— 无条件转移指令
• JMP DWORD [BX] ;段间间接远转移,返回 32 位 CS目的:IP目的 值
微机原理
段内间接转移与段间间接远转移例
若(BX)= 2000H • JMP WORD [BX]
CS目的 = CS源 IP目的 = 3C2AH • JMP DWORD [BX]
CS目的 = 3367H IP目的 = 3C2AH
转移目标的偏移地址 转移目标的段地址
新CS=6500H
×16 65000H
代码段2
新IP = 020CH
转移至此
…
控制转移类指令
微机原理
➢ 段内间接转移与段间间接远转移讨论
• JMP [BX] ;指令错误,未确定[BX]中的数据类型
• JMP WORD [BX] ;段内间接转移,返回 16 位 IP目的 值
• 指令特点
仅有段内短转移,IP目的 = IP当前 + rel8 rel8 值在页内,即-128 ~ +127间
• 前导指令
CMP、TEST、DEC CX 等
注:执行 JXX 指令前的指令必须影响 标志位
条件转移指令的执行流程
微机原理
条件满足 ?
错误的 rel16
正确的 rel16
IP目的 ← IP当前 + rel16 LABEL IP目的 ← IP源 + rel16 + 3
微机原理
← IP源 ← 05H ← 00H ← IP当前
← IP目的
微机原理
例:设标号偏移地址=1000H,执行完JMP指 令后的当前IP值为0009H,则
位移量=1000H-0009H = 0FF7H
微机原理
控制转移类指令
程序转移指令用来控制程序的走向,其 实质是设法改变当前的CS和IP值,以使CPU 转移到一个新的地址处执行程序。
微机原理
控制转移类指令
无条件转移指令 JMP 指令
CALL、RET指令
有条件转移指令 JXX 组指令
中断指令
INT、IRET、INTO指令
循环控制指令
LOOP,LOOPZ,
控制转移类指令
微机原理
• 段内近调用过程 —— CALL LABEL
(IP当前)→ SS:SP 保护现场 IP 值入栈 • 段内近调用返回 —— RET
(IP当前)← SS:SP 恢复现场 IP 值出栈 • 段间远调用过程 —— CALL LABEL
(CS当前)→ SS:SP 保护现场 CS 值入栈 (IP当前)→ SS:SP 保护现场 IP 值入栈 • 段间远调用返回 —— RET
2000H
微机原理
控制转移类指令
CALL、RET —— 过程调用与过程返回指令
• 过程调用指令 — CALL LABEL ✓ 段内近调用过程 CS 不变,IP 变;保护现场即将IP当前值入栈 ✓ 段间远调用过程 CS、IP 均变;保护现场即将CS当前、IP当前值入栈
• 过程返回指令 — RET ✓ 定义近过程时 RET 指令恢复现场即将 IP当前值出栈 ✓ 定义远过程时 RET 指令恢复现场即将 IP当前、CS当前值出栈
LOOPNZ指令
微机原理
控制转移类指令
JMP —— 无条件转移指令 • 段内直接短转移
JMP SHORT LABEL ;IP目的 ← IP当前 + rel8(8 bit 符号数) rel8 在-128 ~ +127之间
• 段内直接近转移
JMP NEAR LABEL ;IP目的 ← IP当前 + rel16 (16 bit 符号数) rel16 在-32768 ~ +32767之间