基本知识点:
(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
(2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
汇编实现加法运算调试寄存器和内存
.586 .MODEL flat,stdcall option casemap:none ; inc 是一个头文件 include windows.inc include user32.inc include kernel32.inc ;msvcrt.inc 引用c中的输入输出功能 include msvcrt.inc ;库文件 includelib user32.lib includelib kernel32.lib includelib msvcrt.lib .data format db "%d",0 .code main proc ;将5放到eax寄存器中 mov 有两个操作数 mov eax,5 ;add 是加法指令 操作数1+操作数2 结果放在操作1里面 add eax,6 push eax push offset format call crt_printf ;压栈平衡 出栈 add esp,8 push 0 call ExitProcess add esp,4 main ENDP END main ; 整数产量 ;2进制 后面加b ;8 o/q ;10 d ;16 h
调试过程
将5放在eax 寄存器中
mov eax 5
add 实现加法运算:
push 入栈 数字占4个字节
ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶
继续push 入栈,向里面推4个字节
打印出栈里面的内容
add exp,8 出栈8个字节,前面入栈的全部出栈,堆栈平衡