当前位置:文档之家› 微型计算机汇编语言程序设计

微型计算机汇编语言程序设计


CX≠0且 ZF=1? CX≠0且 ZF=0?
LOOPNZ指令: CX-1→CX
否:顺序执行
是:转移 JCXZ指令: CX=0? 否:顺序执行
18
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
பைடு நூலகம்
循环控制转移指令的使用
MOV CX,10 (其它初始条件)
NXT:(循环执行的指令)
功能:从栈顶弹出 1 个字(段内返回)或 2 个字(段间返 回),作为返回地址(即断点)给IP或CS:IP;SP相应加2 或加4。 指令后跟 8位立即数,用以在恢复断点后,在现行 SP值上 再加此数,以释放相应数目的堆栈空间。
是偶数,为 什么?
第 2章 微型计算机指令系统 16:25 第2节 8086/8088指令系统 24
段内短-近转移指令机器码及操作
第 2章 微型计算机指令系统 16:25 第2节 8086/8088指令系统 6
无条件转移指令JMP
▲段内间接转移指令 指令格式:JMP 16位寄存器/ 字存储器单元
• 寄存器间接寻址:有效地址存放在寄存器中;
• 存储单元间接寻址:有效地址存放在存储单元中; • 要计算出存储单元的物理地址,再从该地址处取一个字 送到IP
注意: 指令的目的操作数前要加说明符DWORD PTR。
第 2章 微型计算机指令系统 16:25 9
第2节 8086/8088指令系统
无条件转移指令JMP
▲段间间接转移指令
【例】JMP DWORD PTR[SI十0125H]
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
无条件转移指令JMP
1. 格式:JMP 操作数(目标地址)
2. 操作数(目标地址)的给出方式 段内直接给出:例如 JMP BRCH1 段内间接给出:例如 JMP AX 段间直接给出:例如 JMP BRCH 段 间 间 接 给 出 : 例 如 JMP [DI+1200H] DWORD PTR
功能:按照不同的操作数给出方式,找出目标地址, 用它代替原指令指针。可实现全部存储空间内的转 移。
值范围-128~ +127;
转移时,仅改变IP寄存器的内容,段地址CS的值不变。
远转移(far):段间转移,目标地址与正常顺序的IP值
不在同一个代码段内。 转移时,CS和IP的值都要改变 近转移、短转移采用特殊的“相对寻址方式”来获得转移的 目标地址。
第 2章 微型计算机指令系统 16:25 第2节 8086/8088指令系统 2
3.作用:实现对存储单元的读/写操作。
第 2章 微型计算机指令系统 16:25 第1节 8086的寻址方式 1
控制转移指令概述
控制转移指令可实现三种范围的跳转:
近转移(near):段内转移,相对偏移量为1个字,取值
范围 -32768~ +32767;
短转移( short ):段内转移,相对偏移量为 1 字节,取
第2节 8086/8088指令系统
13
判断无符号数大小的指令
JA/JNBE JAE/JNB JB/JNAE JBE/JNA ;目操作数>源操作数则转移 ;目操作数≥ 源操作数则转移 ;目操作数< 源操作数则转移 ;目操作数≤ 源操作数则转移
通常用在CMP指令之后;由指令自动选择不同 标志位,进行不同条件的判断。
的标志位和判断条件。与无符号数不同!
第 2章 微型计算机指令系统 16:25 第2节 8086/8088指令系统 15
第 2章 微型计算机指令系统 16:25
16
循环控制指令
1. 格式: LOOP 短标号 LOOPZ/LOOPE 短标号
LOOPNZ/LOOPNE 短标号
JCXZ 短标号
2. 寻址方式:相对寻址,只能实现短转移。
LOOP NXT (退出循环后的处理) MOV CX,10 (其它初始条件) NXT:DEC CX JCXZ LAST
(循环执行的指令)
JMP NXT LAST:(退出循环后的处理)
第 2章 微型计算机指令系统 16:25 第2节 8086/8088指令系统 19
CALL指令执行的操作
过程:程序中能完成特定功能而又独立的模块,也称子程序。 过程嵌套:在过程运行中又去调用另一个过程。 过程调用和返回指令的格式:CALL 过程名 RET 近过程调用:调用指令CALL和被调用的过程在同一代码段中。 远过程调用:两者在不同代码段中。
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
7
无条件转移指令JMP
▲段间直接(远)转移指令 指令格式:JMP FAR 标号
特点: 用远标号直接给出了转向的段地址和偏移量,即 IP������ CS������ ������ ������ 标号的段内偏移量 标号所在段的段地址
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
20
过程调用及返回
主程序
CALL
子程序调用 断点
子程序
主程序的调用实质上是一
种强制改变正常指令指针顺序
的过程,调用之前的正常 IP 值
返回主程序
RET
称为“断点”。
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
正常执行序列 中断处理程序
INT n
(n)×4 中断指令或中断请求 断点 中断返回 n号中断 向量 偏移量 段基址 (n)×4 (n)×4+1 (n)×4+2 (n)×4+3
n=255号 中断向量
偏移量 段基址
003FCH 003FDH 003FEH 003FFH
第 2章 微型计算机指令系统 16:25
10
控制转移指令概述
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
11
条件转移指令的特点
格式: 指令助记符 目标地址(短标号)
功能:根据当前各标志位状态进行判断,如果
满足指令所指定的条件,则转移至目标地址处;
否则顺序执行。
转移范围:短转移,即相对位移量是一个8位的
带符号数(-128~+127)。
IRET类似于远返回的RET。
过程调用不保护Flags。因此,INT、IRET指令与栈顶3个
SP+2;再从个字栈中弹出一个字 ������ SP十2。
CS,并使SP ������
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
25
有关中断的基本概念
中断向量表 00000H 偏移量 n=0号 00001H 中断向量 00002H 段基址 00003H 00004H 偏移量 n=1号 00005H 中断向量 00006H 段基址 00007H
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
8
无条件转移指令JMP
▲段间间接转移指令 指令格式:JMP DWORD PTR [存储单元] 特点: 目的地址的段地址和偏移量放在存储器中的4个连续地址 单元中:前两个字节为偏移量;后两个字节为段地址。指令
中给出存放目标地址的存储单元的首字节地址值;
第 2章 微型计算机指令系统 16:25 第2节 8086/8088指令系统 5
无条件转移指令JMP
▲段内近/短转移指令的机器码及其操作功能如下图所示。
������ ������ 其中第一个字节为操作码,后面的字节是位移量。 ������ ������ 注意:8位的位移量与IP相加时,用符号扩展法扩展成 16位后再相加。
过程返回指令RET
从栈中弹出返回地址,使程序返回主程序继续执行。
这里分为两种情况:
如果从近过程返回:从栈中弹出一个字������ ������ IP,并
且使SP ������
������
SP+2
������ IP,
如果从远过程返回:先从栈中弹出一个字������ 并且使SP ������ ������ ������ ������
执行中断 处理程序
返回 断点处
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
27
中断与调用的比较
INT与CALL指令的断点都是下一条指令的地址。
INT、IRET、CALL、RET指令本身都不影响任何标志。 中断指令对指令指针CS:IP的修改,类似于实现段间转移 的 CALL指令;只是 CALL还可以实现段内转移。同样,
3. 功能:根据CX的值和ZF标志判断是否转移。 4. 指令本身不影响ZF!
第 2章 微型计算机指令系统 16:25 第2节 8086/8088指令系统 17
循环控制指令
LOOP指令: CX-1→CX CX≠0? 是:转移 否:顺序执行 是:转移 否:顺序执行 是:转移
LOOPZ指令: CX-1→CX
第2节 8086/8088指令系统
26
中断及中断返回指令
中断调用指令:INT n ;n —中段类型码
中断返回指令:IRET
功能:实现对n号中断的服务程序的调用及返回。 执行过程:
中断调 用过程: Flags、CS、 IP依次入栈 IF=0, 关闭中断 中断返回: IP、CS、Flags 依次出栈 用n×4索引 中断向量表 取中断向量 赋给CS:IP
第 2章 微型计算机指令系统 16:25
第2节 8086/8088指令系统
22
CALL指令执行的操作
可实现的转移 执行过程
段内直 近转移——目标地址 SP减2,断点(原IP值)入栈 接/间 与控制转移指令位于 用目标地址( 16 位操作数的 接给出 同一代码段内 值)代替原IP值
相关主题