控制传送指令.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9
在8086/8088中,指令的地址固定由CS和IP两个寄存器决定。
CS和IP两寄存器的内容决定了程序的流程 , 改变CS和IP寄存器的值, 就改变了程序执行的流程。
8086/8088 中CS和IP的变化规则: reset复位后,( CS ) = FFFFH,( IP ) = 0
故8088从内存FFFF:0000H处取第一条指令执行, 第一条指令在内存的ROM区。
JL(JNGE)/JNL(JGE),JLE(JNG)/JNLE(JG)
• 测试CX的值为零转移
3
JCXZ
2、 过程调用指令
如果有一些程序段在不同地方反复出现,可以将这些程 序段设计成为过程(子程序)供调用。过程结束,返回调用处。 过程调用指令包括:过程调用指令和返回指令
(1)、 CALL( Call a procedure)调用
例:比较(AX)、(BX)的大小,将大数存于( max )单元。 CMP AX, BX
JGE
great
XCHG AX, BX great: MOV [max], AX
11
(1)、JMP(Jump)无条件转移指令
JMP(jmp)跳转指令。 JMP指令必须指定转移的目标地址(或转向地址)。 转移分成两类:段内或段间转移。 段内转移:只要改变IP寄存器的内容
8086/8088CPU共有三条中断指令: (1)、INT (Interrupt) (2)、INTO(Interrupt if overflow) (3)、IRET(Interrupt Return)
6
归结控制转移指令分类
指令类型 无条件转移 助记符 JMP
条件转移
JE/JZ, JNE/JNZ, JS, JNS, JP/JPE, JNP /JPO,JO, JNO, JC, JNC, JB/JNAE, JAE/JNB, JA/JNBE, JBE/JNA,JG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG ,JCXZ
CALL调用指令
段内直接调用
段内间接调用 RET返回指令 段内返回
段间直接调用
段间间接调用
(2)、 RET( Reture from procedure)返回
段间返回
段内带立即数返回
段间带立即数返回
4
3、循环控制指令 循环控制指令用于使一些程序段反复执行形成循环程序。
循环控制指令有三种:
(1)、LOOP (Loop) 循环指令
IP—偏移量
调用地址寻址
8

先介召控制和非控制转移指令的概念
• 非控制转移指令:指令本身对CS和IP均无操作,形成顺序执行结构。 顺序执行结构: 顺序存放,顺序执行
• 控制转移指令: 以CS和IP为主要操作对象, 改变CS和IP寄存器的值, 就改ቤተ መጻሕፍቲ ባይዱ了程序执行的流程。
◢ 程序是指令的集合
◢ 指令在内存中顺序存放
非控制转移指令
CPU取来一条指令后, 自动将IP的值加上该指令的字节数, 使IP顺序指向下一条指令, CPU取来紧接着的指令执行。 (此时IP的变化由CPU内部的硬件自动完成)
10
控制转移指令以CS和IP为主要操作对象
控制转移指令改变CS和IP的值, 使程序产生分支、调用结构。
分支结构、调用结构: 顺序存放,非顺序执行
五.控制传送指令(Control transfer instructions)
(一)、控制传送指令概述
控制传送指令包括四种: 转移指令,循环控制指令,过程调用指令,中断指令。
1、转移指令
转移指令包括两种: (1)、JMP(Jump) 无条件转移指令 (2)、Jcc 条件转移指令
1
(1)、 JMP(Jump)无条件转移指令 转移分成两类:段内或段间转移。 无条件转移指令有五种格式:
LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ CALL, RET
循环控制 过程调用
中断指令
INT, INTO, IRET
7
(二).控制传送指令(Control transfer instructions)
1、转移指令
转移指令将程序控制从一处转换到另一处的最直接方法。 在CPU内部,转移是通过将目标地址传送给IP来实现的。 注意:CS—段地址 转移地址
(2)、LOOPE/LOOPZ (Loop if equal / Loop if zero)当相等/为“0”循环
(3)、LOOPNE/LOOPNZ (Loop if not equal/ Loop if not zero) 当不相等/不为“0”循环
5
4、中断指令 8086/8088CPU 可以在程序中安排一条中断指令引起中断 过程,这种中断称为软中断。
格式:JMP SHORT OPR
执行操作:(IP)←(IP)当前+D8
SHORT 短属性标号 8位位移量D8的范围在(-128 ~ 127)之间,占有一个字节。 而指令本身占有两个字节。
13
例如:代码段内有一条无条件转移指令在汇编语言中使用符号地址。 JMP SHORT NEXT指令执行过程: NEXT—在汇编语言中使用符号地址 (IP)←(IP)当前+D8
指在同一段的范围之内进行转移
即用新的转移目标地址代替原有的IP值。 段间转移:要修改IP、 CS寄存器的内容 转到另一段去执行程序。 即转移目标地址= 新的段地址和偏移地址两部分组成。
12

段内直接短转移:
OPR—在汇编语言中使用符号地址。 在机器语言中存放位移量D8 位移量D8 = 符号地址的偏移地址 - 当前IP的值
段内直接短转移
段内直接近转移 段内间接转移 段间直接远转移 段间间接转移
JMP指令的操作:无条件地将控制转移到指令中规定的目的地。 目标地址可以是:直接方式/间接方式给出。 JMP指令不影响标志位。
2
(2)、Jcc 条件转移指令
汇编程序设计中常利用条件转移指令来实现分支。 “cc”-表示条件。
操作数必须是短标号。转移范围为:-128~+127
具体条件转移指令分四种情况讨论: • 根据单个条件标志的设置情况转移
JZ(JE)/JNZ(JNE),JS/JNS,JO/JNO,JP(JPE)/JNP(JPO), JB(JNAE、JC)/JNB(JAE、JNC),
• 根据两个无符号数比较结果转移
JB(JNAE、JC)/JNB(JAE、JNC),JBE(JNA)/JNBE(JA) • 比较两个带符号数,并根据比较结果转移
相关文档
最新文档