目录:https://blog.csdn.net/qq_43098197/article/details/124532401
几个转移指令
ret
ret: 使用栈中的数据,修改 IP,是近转移。
相当于:
pop IP
retf
retf: 使用栈中的数据,修改 CS 和 IP,是远转移。
相当于:
pop IP
pop CS
call
移动方式:位移
-
格式:call 标号(先将当前 IP 入栈,然后转到标号处执行指令)
-
相当于
push IP jmp near ptr 标号
移动方式:目的地址
-
格式:call far ptr 标号
-
相当于
push CS push IP jmp far ptr 标号
移动方式:地址放到寄存器
-
格式:call 16位寄存器
-
相当于
push IP jmp 16位寄存器
移动方式:地址放到内存
第一种:
-
格式:call word ptr 内存单元地址
-
相当于
push IP jmp word ptr 内存单元地址
第二种:
-
格式:call dword ptr 内存单元地址
-
相当于
push CS push IP jmp dword ptr 内存单元地址
call 和 ret 配合使用以及参数传递
作用:实现模块化功能,可以看成高级语言的函数。
基本框架模板:
assume cs:code
code segment
main: ; code...
call fun01
; code...
mov ax, 4c00h
int 21h
fun01: ; 保存寄存器原值
; 其它指令操作
; 恢复寄存器原值
ret
code ends
end main
mul
两个操作数都是 8 位
- 一个默认放在 AL 中,另一个放在 8 位寄存器或内存字节单元中。
- 结果默认放在 AX 中。
两个操作数都是 16 位
-
一个默认放在 AX 中,另一个放在 16 位寄存器或内存字单元中。
-
结果的高位默认放在 DX 中,低位放在 AX 中。