汇编语言中的过程与外部库使用
1. 寄存器的保存与恢复
在汇编语言的过程(procedure)中,常常需要对寄存器进行保存和恢复操作,以确保调用程序的寄存器值不被覆盖。例如在 ArraySum 过程中,开始时将 ECX 和 ESI 压入栈,结束时再弹出。
pop ecx
; restore ECX, ESI
pop esi
ret
; sum is in EAX
ArraySum ENDP
1.1 USES 操作符
USES 操作符与 PROC 指令配合使用,可以更方便地完成寄存器的保存和恢复。它会让汇编器在过程开始时生成 PUSH 指令保存寄存器,在结束时生成 POP 指令恢复寄存器值。
ArraySum PROC USES esi ecx
mov eax,0
; set the sum to zero
L1:
add eax,[esi]
; add each integer to sum
add esi,TYPE DWORD
; point to next integer
loop L1
; repeat for array size
ret
; sum is in EAX
ArraySum ENDP
汇编器生成的对应代码如下:
超级会员免费看
订阅专栏 解锁全文
1033

被折叠的 条评论
为什么被折叠?



