云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 汇编基础知识全解

汇编基础知识全解

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 2:27:09

(3) 执行 MOVS / STOS / LODS (4) 重复 (1) ~ (3) MOVS 串传送指令: MOVS DST, SRC MOVSB (字节) MOVSW (字)

例:MOVS ES: BYTE PTR [DI], DS: [SI] 执行操作:

(1) ((DI)) ← ((SI))

(2) 字节操作:(SI)←(SI)±1, (DI)←(DI)±1 字操作: (SI)←(SI)±2, (DI)←(DI)±2 方向标志DF=0 时用 + ,DF=1 时用 - 。

REP MOVS:将数据段中的整串数据传送到附加段中。 源串(数据段)→ 目的串(附加段) 执行 REP MOVS 之前,应先做好:

(1) 源串首地址(末地址)→ SI (2) 目的串首地址(末地址)→ DI (3) 串长度 → CX (4) 建立方向标志

( CLD 使 DF=0,STD 使 DF=1 ) STOS 存入串指令: STOS DST

STOSB (字节) STOSW (字) 执行操作:

字节操作:((DI))←(AL), (DI)←(DI)±1 字操作:((DI))←(AX), (DI)←(DI)±2

例:把 附加段 中的 10 个字节缓冲区置为 20H lea di, mess2 mov al, 20H mov cx, 10 cld

rep stosb

LODS 从串取指令: LODS SRC

LODSB (字节) LODSW (字) 执行操作:

字节操作:(AL)←((SI)), (SI)←(SI)±1 字操作:(AX)←((SI)), (SI)←(SI)±2 注意:

* LODS 指令一般不与 REP 联用

* 源串一般在数据段中(允许使用段跨越前缀来修改), 目的串必须在附加段中 * 不影响条件标志位

与 REPE / REPZ(REPNE / REPNZ)配合工作的 CMPS 和 SCAS

REPE / REPZ (REPNE / REPNZ) CMPS / SCAS 执行操作:

(1) 如 (CX)=0 或 ZF=0 (ZF=1) 则退出, 否则转(2)

(2) (CX)←(CX) -1 (3) 执行 CMPS / SCAS (4) 重复 (1) ~ (3) CMPS 串比较指令: CMPS SRC, DST CMPSB (字节) CMPSW (字) 执行操作:

(1) ((SI)) - ((DI))

根据比较结果置条件标志位:相等 ZF=1不等 ZF=0 (2) 字节操作:(SI)←(SI)±1, (DI)←(DI)±1 字操作: (SI)←(SI)±2, (DI)←(DI)±2

SCAS 串扫描指令: SCAS DST

SCASB (字节) SCASW (字) 执行操作:

字节操作:(AL) - ((DI)), (DI)←(DI)±1 字操作:(AX) - ((DI)), (DI)←(DI)±

七、控制转移指令: ? 无条件转移指令 JMP

? 条件转移指令

JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、 JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、 JLE / JNLE、 JCXZ ? 循环指令

LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE ? 子程序调用和返回指令 CALL、RET

? 中断与中断返回指令 INT、INTO、IRET

无条件转移指令:

段内直接短转移:JMP SHORT OPR

执行操作:(IP) ← (IP) + 8位位移量 段内直接近转移:JMP NEAR PTR OPR 执行操作:(IP) ← (IP) + 16位位移量 段内间接转移: JMP WORD PTR OPR 执行操作: (IP) ← (EA)

段间直接远转移:JMP FAR PTR OPR

执行操作:(IP) ← OPR 的段内偏移地址 (CS) ← OPR 所在段的段地址

段间间接转移: JMP DWORD PTR OPR 执行操作: (IP) ← (EA) (CS) ← (EA+2) 条件转移指令:

注意:只能使用段内直接寻址的8 位位移量 (1) 根据单个条件标志的设置情况转移 格式 测试条件 JZ(JE) OPR ZF = 1 JNZ(JNE) OPR ZF = 0 JS OPR SF = 1 JNS OPR SF = 0 JO OPR OF = 1 JNO OPR OF = 0 JP OPR PF = 1 JNP OPR PF = 0 JC OPR CF = 1 JNC OPR CF = 0

(2) 比较两个无符号数,并根据比较结果转移* 格式 测试条件

< JB(JNAE,JC) OPR CF = 1 >= JNB(JAE,JNC) OPR CF = 0 <= JBE(JNA) OPR CF∨ZF = 1 > JNBE(JA) OPR CF∨ZF = 0

* 适用于地址或双精度数低位字的比较

(3) 比较两个带符号数,并根据比较结果转移* 格式 测试条件

< JL(JNGE) OPR SF\>= JNL(JGE) OPR SF\

<= JLE(JNG) OPR (SF\ > JNLE(JG) OPR (SF\ * 适用于带符号数的比较

(4) 测试 CX 的值为 0 则转移 格式 测试条件 JCXZ OPR (CX)=0

例:如果 X>50,转到TOO_HIGH;计算 X-Y,如果溢出 转到 OVERFLOW,否则 |X-Y| → RESULT MOV AX, X CMP AX, 50 JG TOO_HIGH SUB AX, Y JO OVERFLOW JNS NONNEG NEG AX NONNEG:

MOV RESULT, AX TOO_HIGH: ……

OVERFLOW: ……

循环指令: 注意:

* CX 中存放循环次数

* 只能使用段内直接寻址的8 位位移量 LOOP

LOOPZ / LOOPE LOOPNZ / LOOPNE 执行步骤:

(1) (CX) ← (CX) - 1

(2) 检查是否满足测试条件,如满足则 (IP) ← (IP) + 8位位移量,实行循环; 不满足则 IP 不变,退出循环。 循环指令:LOOP OPR 测试条件:(CX) 1 0

为零或相等时循环指令:LOOPZ(LOOPE) OPR 测试条件:ZF=1 且 (CX) 1 0

不为零或不相等时循环指令:LOOPNZ(LOOPNE) OPR 测试条件:ZF=0 且 (CX) 1 0

CALL 调用指令

段内直接近调用:CALL DST 执行操作: (SP) ← (SP) - 2 ( (SP)+1,(SP) ) ← (IP) (IP) ← (IP) + 16位位移量 段内间接近调用:CALL DST 执行操作: (SP) ← (SP) - 2 ( (SP)+1,(SP) ) ← (IP) (IP) ← (EA)

搜索更多关于: 汇编基础知识全解 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

(3) 执行 MOVS / STOS / LODS (4) 重复 (1) ~ (3) MOVS 串传送指令: MOVS DST, SRC MOVSB (字节) MOVSW (字) 例:MOVS ES: BYTE PTR [DI], DS: [SI] 执行操作: (1) ((DI)) ← ((SI)) (2) 字节操作:(SI)←(SI)±1, (DI)←(DI)±1 字操作: (SI)←(SI)±2, (DI)←(DI)±2 方向标志DF=0 时用 + ,DF=1 时用 - 。 REP MOVS:将数据段中的整串数据传送到附加段中。 源串(数据段)→ 目的串(附加段) 执行 REP MOVS 之前,应先做好: (1) 源串首地址(末地址)→ SI (2) 目的串首地址(末地址)→ DI (3) 串长度 → CX

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com