汇编 过程 创建并测试 proc endp call ret uses
生活随笔
收集整理的這篇文章主要介紹了
汇编 过程 创建并测试 proc endp call ret uses
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
過程
堆棧操作
- LIFO
運行時堆棧
-
入棧操作
- 高地址向低地址
-
出棧操作
- 低地址高低地址
-
堆棧作用
- 臨時保存寄存器, 被修改后可恢復
- 執行call時,保存返回地址
- 參數壓入堆棧進行傳遞
- 臨時存儲局部變量
push, pop
- push
- 減少esp的值,將源操作數復制到堆棧
- push reg/mem16
- push reg/mem32
- push imm32
- pop
- 增加esp的值,將堆棧中的內容復制到16位或32位操作數中
- pop reg/mem16
- pop reg/mem32
pushfd, popfd
- pushfd: 將32位eflags寄存器壓入到堆棧中
- popfd: 將堆棧中的內容復制到eflags中
pushad, pusha, popad, popa
- pushad將eax, ecx, edx, ebx, esp(執行之前的值), ebp, esi, edi的順序壓棧
- popad以相反順序彈棧
- pusha將ax, cx, dx, bx, sp(執行之前的值), bp, si, di的順序壓棧
- popa以相反順序彈棧
- 過程用一個或多個寄存器來返回結果時,不應該使用
定義并使用過程
proc
main proc ... main endpsample proc ...ret sample endp; 標號與jmp在同一個過程中 jmp destination ; 取消限制 destination ::; 三個整數求和 sumof procadd eax, ebxadd eax, ecxret sumof endp- 添加描述信息
- 輸入參數及其用法的列表,并將其命名為Receives
- 返回值的描述,并命名為Returns
- 對過程返回的所有數值的描述(先決條件),在調用之前滿足,并命名為Requies
call,ret
main proc 00000020 call MySub 00000025 mov eax, ebxMySub proc 00000040 mov eax, edx ...retMySub endp- 過程調用嵌套
-
向過程傳遞寄存器參數
.data theSum dword ? .code main procmov eax, 10000hmov ebx, 20000hmov ecx, 30000hcall sumofmov theSum, eax
總結
以上是生活随笔為你收集整理的汇编 过程 创建并测试 proc endp call ret uses的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 与数据相关的运算符和伪指令 offset
- 下一篇: 浮点数 IEEE表示 舍入 运算