2025年4月3日 星期四 乙巳(蛇)年 正月初四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 汇编

汇编语言32位模式下传递64位参数

时间:03-05来源:作者:点击数:74

32 位模式中,通过堆栈向子程序传递 64 位参数时,先将参数的高位双字入栈,再将其低位双字入栈。这样就使得整数在堆栈中是按照小端顺序(低字节在低地址)存放的,因而子程序容易检索到这些数值,如同下面的 WriteHex64 过程操作一样。该过程用十六进制显示 64 位整数:

  • WriteHex64 PROC
  • push ebp
  • mov ebp, esp
  • mov eax, [ebp+12] ;高位双字
  • call WriteHex
  • mov eax, [ebp+8] ;低位双字
  • call WriteHex
  • pop ebp
  • ret 8
  • WriteHex64 ENDP

WriteHex64 的调用示例如下,它先把 longVal 的高半部分入栈,再把 longVal 的低半部分入栈:

  • .data
  • longVal QWORD 1234567800ABCDEFh
  • .code
  • push DWORD PTR longVal + 4 ;高位双字
  • push DWORD PTR longVal ;低位双字
  • call WriteHex64

下图显示的是在 EBP 入栈,并把 ESP 复制给 EBP 之后,WriteHex64 的堆栈帧示意图。 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门