汇编-push入栈指令

32位汇编

执行动作分为两步:

第一步:改变栈地址 

  如果操作数是16位, 则ESP减2; 如果操作数是32位, 则ESP减4

  esp=esp-2或esp=esp-4

第二步:写入数据

 

PUSH指令有3种格式:

 

 

实例:把字符串顺序倒转

复制代码
.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
aName BYTE "Abraham Lincoln",0 
nameSize= ($-aName)       ;字符串长度



.code
main PROC
        mov ecx, nameSize   ;字符串长度给计数器  ECX = 00000010h=16
        mov esi,0

     L1:  ;把字符压栈
        movzx eax, aName[esi]
        push eax 
        inc esi 
        loop L1

        mov ecx, nameSize 
        mov esi,0

     L2:
        pop eax 
        mov aName[esi], al 
        inc esi 
        loop L2


        
    INVOKE ExitProcess,0
main ENDP
END  main
复制代码

 

  

 

 

 

 

posted @   天子骄龙  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示

目录导航