循环与分支程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
2)JBE/JNA(jump if blow or equal , or not above) JBE指令(低于或等于转移) JNA指令(不高于转移)
当两个无符号数进行比较时,如果A≤B成立,则转移
3)JAE/JNB(jump if not blow, or above or equal) JAE指令(高于等于转移) JNB指令(不低于转移)
当两个带符号数相比较时,当A≤B时,转移到目标地址。
4/15/2020
12
3、测试单个标志的条件转移指令
1)测试ZF ①JE/JZ(jump if zero, or equal) JE指令(相等则转移) JZ指令(等于0转移)
4、 段间间接转移 格式: JMP 双字存储变量 功能:将控制转移到双字存储变量指定的地址,
即 将双字存储变量第二个字作为段地址, 第一个字为偏移地址处继续执行。
4/15/2020
6
5、 段间直接转移 格式: JMP 标号 例如:
;标号为FAR属性
CODE1 SEGMENT
∶
JMP CODE2_NEXT
6.1 分支程序设计
6.1.1 标号
标号: 用来说明可执行指令在汇编语言程序中的位置。 和变量类似,实质上是一个地址值。可以作为 转移指令(或CALL)的操作数。
属性: 段属性、位移量属性和距离属性。
注意: 如果一个标号只在标号定义的段中用JMP或条件 转 移 指 令 ( 或 CALL) 来 访 问 , 需 要 将 标 号 的 距 离 属 性定义为NEAR;
如果一个标号能被其他段中的JMP指令(或CALL) 来访问,那么需要将这个标号的距离定义为FAR。
4/15/2020
1
1、定义距离属性为NEAR的标号
1)隐式说明:即在标号后面加上冒号,放在指令的前面。 例如:L1: MOV AX,[SI] NEXT: MOC AX,BX
L1和NEXT都是标号名,它们的距离属性均为NEAR。
当两个无符号数相比较时,如果A≥B成立,则转移。
4)JB/JNAE(jump if blow, or not above or equal) JB指令(低于转移) JNAE指令(不高于等于转移)
当两个无符号数相比较时,如果A<B成立则转移。
4/15/2020
10
2、判断带符号数的大小的条件转移指令
1)JG/JNLE(jump if greater, or not less or equal) JG指令(大于转移) JNLE措令(不小于等于转移) 当两个带符号数相比较时,如果A>B,则转移 到目标地址。
2)JGE/JNL(jump if greater or equal, or not less) JGE指令(大于等于转移) JNL指令(不小于转移) 两个带符号数相比较时,若A≥B,转移到目标地址
3、同时定义距离属性为FAR和NEAR的标号
例如:
L6 LABEL FAR
L7: AND AL,0FH 或者:
L6 EQU THIS FAR
L7: AND AL,0FH
4/15/2020
3
6.1.2 无条件转移指令
JMP指令(无条件转移) 格式:JMP目的操作数 功能:JMP指令无条件地控制转移至目标单元 (目的操作数).
2)显式说明:即用LABEL伪指令或在EQU指令中 用THIS操作符明显的说明。
例如:L2 LABEL NEAR MOV DX,CX
L3 EQU THIS NEAR OR DL,30H
标号L2和L3的距离属性均为NEAR。
4/15/2020
2
2、定义距离属性为FAR的标号
例如: L4 LABEL FAR MOV AX,CX L5 EQU THIS FAR OR DL,30H
JMP指令具体格式有以下五种:
1、段内直接转移 格式:JMP 标号名 ; 标号为NEAR属性 这个标号是在本段内某一指令的前面,后面 缀以冒号来定义其位置的(位移量)。
4/15/2020
4
例如:
JMP L2 ∶
L1: ADD AX,100
L2: MOV CX,30 ∶
JMP L1
2、段内直接短转移
OF,CF,PF,SF,ZF,AF. 注意:CMP指令后面往往会跟着一条条件转移
指令,根据比较结果产生不同的程序分支。
4/15/2020
8
6.1.4条件转移指令
8086/8088提供了很多条件转移指令,而且往往一条指令 有好几种助记符表示形式,归纳主要分成两大类: ·判断两数大小的条件转移指令。 ·测试单个标志位的条件转移相令。
4/15/2020
11
2、判断带符号数的大小的条件转移指令
3)JL/JNGE(jump if less, or not greater or equal ) JL指令(小于转移) JNGE指令(不大于等于转移)
当两个带符号数相比较时,当A<B时,转移到目标地址。
4)JLE/JNG(jump if less or equal, or not greater) JLE指令(小于等于转移) JNG指令(不大于转移)
∶
CODE1 ENDS
CODE2 SEGMENT
∶
CODE2_NEXT LABEL FAR
∶
CODE2 ENDS
4/15/2020
7
6.3.3比较指令
CMP 指令(比较指令) 格式:CMP 目的操作数,源操作数 功能:CMP指令与SUB指令一样执行减法操作,
即目的操作数减去源操作数,但其结果不送 回目的操作数。执行指令后,两个操作数保 持原值不变。只是影响标志位:
格式:JMP SHORT 标号名
例如:
∶
JMP SHORT L1
L2: MOV DX,CX
∶
L1: OR DL,30H
4/15/2020
∶百度文库
5
3、段内间接转移
格式: JMP 地址表达式
例如:
JMP BX
;把控制转向CS:BX
JMP VAR_WORD ; 把 控 制 转 向 VAR_WORD
存储单元中存放的地址处
1、比较两个无符号数,判断无符号数大小的条件转移指令
1)JA/JNBE(jump if not blow or equal , or above) JA 指令(高于转移) JNBE 指令(不低于等于转移) 这是一条条件转移指令的两种助记符。
当两个无符号数进行比较时,如果A>B成立则转移。
4/15/2020