汇编- LAHF和SAHF指令

发布时间 2023-11-10 20:07:08作者: 天子骄龙

 

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