这2个指令也是转移指令,一起用的时候有特效~~~~
10.1 ret and retf
ret 相当于pop ip 把栈顶的字弹出到ip
retf相当于先执行pop ip and pop cs
10.2 call
执行2步
1 先把IP或cs和ip推入栈中
2 转移到 标号或内存处
10.3 call 标号
call 标号
转移范围为-32768-32767
16位转移
相当于执行 push ip jmp near ptr 标号
10.4 call far ptr 标号
相当于
push cs
push ip
jmp far ptr 标号
10.5 call ax
push ip
jmp ax
10.6 call word ptr 内存单元
相当于push ip
jmp word ptr 内存单元
call dword ptr 内存单元
相当于push cs
push ip
jmp dword ptr 内存单元地址
高位放cs,低位放ip
10.7 ret and call 配合
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h
data ends
stack segment
dw 0,0
stack ends
code segment
start:mov ax,1
mov cx,3
call s
mov ax,bx
s:add ax,ax
loop s
ret
mov ax,4c00
int 21
code ends
end start
这里就实现了先从s 标号执行完再执行下面的mov ax,bx的过程。可以类比高级语言的函数把。就好像函数定义在下面,执行却可以在上面,自己想的,不知道对不对
====================================================================
有点困,明天写剩下的~~~~~~