汇编语言[王爽]-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

Untitled

上述程序执行后,ax=6

call压入的ip是返回地址,即call下一条指令的ip

call far ptr 标号

  • push cs、push ip
  • jmp far ptr 标号

Untitled

ax=1010

转移地址在寄存器中的call指令

call 16位reg

  • push ip
  • jmp 16位reg

Untitled

ax=11

转移地址在内存中的call指令

call word ptr 内存单元地址

  • push ip
  • jmp word ptr 内存单元地址

call dword ptr 内存单元地址

  • push cs ; push ip
  • jmp dword ptr 内存地址

Untitled

读程题:

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

Untitled

ax=1,bx=0

栈结构:

0 1 2 3 4 5 6 7 word
s cs ip cs

nop的机器码长度为1字节

call和ret的配合使用

实现子程序调用

参数怎么传递?

  • 寄存器传递

    Untitled

  • 内存传递

    Untitled

  • 栈传递(暂不讨论)

寄存器冲突怎么办?用栈暂存

posted @ 2025-09-15 16:05  Miaops  阅读(18)  评论(0)    收藏  举报