汇编语言[王爽]-10 CALL和RET指令
ret和retf
ret
- pop ip
retf
- pop ip
- pop cs
call和call far ptr
call
- push ip
- jmp near ptr 标号
jmp near ptr的跳转范围是 -32768~32767

上述程序执行后,ax=6
call压入的ip是返回地址,即call下一条指令的ip
call far ptr 标号
- push cs、push ip
- jmp far ptr 标号

ax=1010
转移地址在寄存器中的call指令
call 16位reg
- push ip
- jmp 16位reg

ax=11
转移地址在内存中的call指令
call word ptr 内存单元地址
- push ip
- jmp word ptr 内存单元地址
call dword ptr 内存单元地址
- push cs ; push ip
- jmp dword ptr 内存地址

读程题:
下面的程序执行后,ax和bx中的数值为多少?

ax=1,bx=0
栈结构:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | word |
|---|---|---|---|---|---|---|---|---|
| s | cs | ip | cs |
nop的机器码长度为1字节
call和ret的配合使用
实现子程序调用
参数怎么传递?
-
寄存器传递

-
内存传递

-
栈传递(暂不讨论)
寄存器冲突怎么办?用栈暂存

浙公网安备 33010602011771号