汇编语言(王爽) 第10章 call和ret

这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的过程。可以类比高级语言的函数把。就好像函数定义在下面,执行却可以在上面,自己想的,不知道对不对

====================================================================

有点困,明天写剩下的~~~~~~

posted @ 2016-04-11 21:12  Debugor  阅读(197)  评论(0编辑  收藏  举报