汇编-SAR算数右移

 

 SAR(算术右移)指令将目的操作数进行算术右移:

 

.386  
.model flat,stdcall 
option casemap:none
.stack 4096

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov al,0F0h     ;AL = 11110000b (-16)
    sar al,1        ;AL = 11111000b (-8) , CF = 0

    INVOKE ExitProcess,0  
main ENDP   
END main

 

 使用 SAR 指令,就可以将有符号操作数除以 2 的幂。下例执行的是 -128 除以2³,商为 -16:

.386  
.model flat,stdcall 
option casemap:none
.stack 4096

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov ecx,0
    mov cl,3
    mov edx,-128     ; edx = 10000000b
    sar edx,cl        ; edx=FFFFFFF0h=-16

    INVOKE ExitProcess,0  
main ENDP   
END main

 

 

 

 

 

 

 

 

posted @ 2023-12-07 07:32  天子骄龙  阅读(318)  评论(0)    收藏  举报