分支结构程序

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

例 :利用条件转移指令构成循环
MOV CX,100 (循环计数) AGAIN:
思考:条件转移指令如何实现段间转移? DEC CX JNZ AGAIN
指出下列程序段完成的功能:
DIV BL SHR BL, 1 CMP AH, BL JB S INC AL S: MOV RLT, AL
1 ) 无条件转移指令 指令格式:JMP 标号 无条件转移到标号指向的指令继续执行 无条件转移 段内转移 直接寻址
段间转移 间接寻址
(1) 段内转移(段内直接寻址) 段内转移只需修改IP实现转移: 使IP 标号所在行的指令
即: (IP)=标号所在行指令的偏移地址 段内转移分为三种形式: 段内直接短转移 格式:JMP SHORT 标号
32

32000H CODE2
NEW_SEG标号的地址为 3200H:2100H

NEW_SEG XX 34100H XX

段间直接转移
❖ 段间间接转移(段间间接寻址)
格式:JMP DWORD PTR OPR 操作:(IP)←(OA)
(CS)←(OA+2) OA是由OPR的寻址方式所确定的一个双字单元地址 。 (OA)=转移地址的偏移地址 (OA+2)=转移地址的段地址
例 : 段内间接转移 JMP BX
;(IP)←(BX)=转移地址
JMP [BX]
;(IP)←((BX)) =转移地址
间接寻址转移指令的特点是指令中没有直接给出标号
(2)段间转移 实现段间转移时,转来自百度文库目的地址由段地址和偏移地址构
成,因此段间转移需要同时修改CS和IP。
段间直接转移(段间直接寻址) 格式:JMP FAR PTR 标号
6.1 程序的几种基本结构 程序的基本结构有三种:顺序结构、分支结构、循环结构
顺序结构:按语句的书写顺序依次执行 分支结构:根据不同的条件判断结果,执行不同的程序段,
实现程序分支。
程序的分支通过转移指令来实现,因此转移指令的操作 应该是能够改变程序执行顺序 。 方法: 修改CS:IP
6.2 转移指令 (不影响任何标志位 ) 转移指令分为两类:无条件转移指令、条件转移指令
操作:(IP)←(IP)+D(8位偏移量)
例: JMP SHORT NEXT
NEXT: MOV AL, 4
根据JMP指令的操作 转移目的地址为: (IP)+D=0122H+30H= 0152H
JMP指令
(IP)
下一条要执行的指令
D=3 0H
存储器
… 代码段
EB
0120H
30
0121H
0122H (IP)
条件转移指令 分三类: (1)一般条件转移指令 用于某个检测标志位
(2)用于无符号数的条件转移指令 用于检测无符号数的比较
(3)用于带符号数的条件转移指令 用于检测带符号数的比较
先执行影响标志位的指令(如算术运算、比较及位测试 等指令),再执行适当的条件转移指令检测相应的标志位, 根据条件实现转移。
EXIT: POP AX
两种转移指令都可以写成简化形式(省略SHORT和NEAR):
JMP
标号
汇编时如何确定标号的类型?
位移量D=
8位 段内短转移指令 > 8位 段内直接近转移指令
段内间接转移(段内间接寻址)
格式:JMP WORD PTR OPR 操作:(IP)←(OA)
OA是由OPR的寻址方式确定的寄存器或存储单元(字类型), OA存的是目的转移地址。

MOV指令
段内短转移范围:-128~+127字节内
B0
0152H
04
… 0153H
段内短转移
❖ 段内直接近转移(段内直接寻址) 格式:JMP NEAR PTR 标号 操作:(IP)←(IP)+D(16位偏移量) -32768~+32767字节范围 段内直接近转移举例 JMP NEAR PTR EXIT
思考:段间间接转移能不能通过寄存器实现?
2)条件转移指令 (20条) 基本格式为: J×× 标号 (××代表一种转移条件 )
条件转移指令根据检测标志位的状态来判断条件,若条件为 真,则转至标号处执行程序,否则顺序往下执行程序 。 操作:(IP)←(IP)+D (8位偏移量)
显然条件转移指令转移范围与段内短转移相同
例:比较AX和BX的值,将较大数存入CX(AX、BX中 存放的是无符号数)
CMP AX, BX JA AGB MOV CX, BX JMP STOP AGB: MOV CX, AX STOP: ……
;比较,M影O响V标C志X位, AX ;若AX>CBMXP,转AX移, BX
JAE STOP ;无条件M转O移V,C跳X过, B分X支2 STOP: ……
操作:(IP)←标号的偏移地址 (CS)←标号所在段的段地址
例4-5 段间直接转移 CODEl SEGMENT
JMP FAR PTR NEW
CODEl ENDS
JMP指令
… CODE1
EA 操作码 00
IP 21
CODE2 SEGMENT NEW: MOV AX,BX CODE2 ENDS
00
CS
相关文档
最新文档