汇编语言(六)--分支结构程序
第六章、分支结构程序
6.1无条件转移指令
6.11.无条件转移指令(JMP)
(1) 指令汇编格式
JMP targ
eg: JMP NEXT(转向的程序段)
(2) 操作
(1)段内转移:IP <-目标的偏移地址
(2)段间转移:IP <-目标的偏移地址
CS <-目标所处的代码段的段基址
(3)对标志位的影响
无
(4)说明
(1)JMP可转到内存中存放的任何程序段
(2)trag 可为 直接标号、寄存器间接寻址、存储器间接寻址
6.12.目标地址寻址方式
(1)段内直接转移方式
(1)直接即指令助记符后面是标号
(2)目标IP = 当前IP + 相对位移量(8bit/16bit)
eg:
JMP NEAR PTR 目标地址
目标地址范围(-32768~32767)
JMP SHORT 目标地址
目标地址范围(-128~127)
(2)段内间接转移方式
(3)段间直接转移方式
(4)段间间接转移方式
6.2条件转移指令
6.2.1 条件转移指令含义
(1)转移条件
状态标志位决定
(2)说明
(1)所有的条件转移指令都是相对转移形式的短转移指令(short)
(2)范围:在下条指令算起的-128~127字节的地址范围内转移
6.2.2 常见的单条件转移指令
标志位 | 指令格式 | 条件 |
---|---|---|
CF | JC/JB | CF = 1 |
JNC | CF = 0 | |
ZF | JZ/JE | ZF = 1 |
JNZ | ZF = 0 | |
OF | JO | OF= 1 |
JNO | OF = 0 | |
SF | JS | SF = 1 |
JNS | SF = 0 | |
PF | JP | PF = 1 |
JNP | PF = 0 |
6.2.3 基于两数之间大小关系转移的指令
种类 | 操作 | 指令 | 条件 |
---|---|---|---|
无符号 | 大于 | JA(Above) | CFVZF = 0 |
大于等于 | JAE | CF = 0 | |
小于 | JB(Below) | CF = 1 | |
小于等于 | JBE | CFVZF = 1 | |
带符号数 | 大于 | JG(Great) | (SFxorOF) V ZF = 0 |
大于等于 | JGE | SF xor OF = 0 | |
小于 | JL(Less) | SF xor OF = 1 | |
小于等于 | JLE | (SFxorOF) V ZF = 0 | |
相等 | 等于 | JE | ZF = 1 |
不等于 | JNE | ZF = 0 |
带符号数判断条件的推导
(https://img2022.cnblogs.com/blog/2512134/202205/2512134-20220518203402302-463879567.png)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话