汇编- LAHF和SAHF指令(设置或获取标志位寄存器)

 

LAHF

LAHF(将状态标志装入到AH) 指令将EFLAGS寄存器的低字节复制到AH。被复制的标志有:符号标志、零标志、辅助进位标志、奇偶标志及进位标志。

复制代码
.386  
.model flat,stdcall 
option casemap:none

.data   
saveflags BYTE ?

ExitProcess PROTO,dwExitCode:DWORD      

.code  
main PROC   
    lahf          ;将标志装入到AH
    mov saveflags, ah  ;将标志保存到变量中

     

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

 

 

SAHF

SA HF(将AH保存到状态标志) 指令将AH复制到EFLAGS(或RFLAGS) 寄存器的低字节。

例如,可以获取之前保存到变量中的标志值:

复制代码
.386  
.model flat,stdcall 
option casemap:none

.data   
saveflags BYTE ?

ExitProcess PROTO,dwExitCode:DWORD      

.code  
main PROC   
    lahf          
    mov saveflags, ah  

    mov ah, saveflags   ;将之前保存的标志装入AH
    sahf                ;再复制到标志寄存器

     

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

 

 

 

 

 

 

 

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

目录导航