汇编-SHR右移

 SHR(右移)指令使目的操作数逻辑右移一位,最高位用 0 填充。最低位复制到进位标志位,而进位标志位中原来的数值被丢弃:

 

格式:

SHR destination,countR

第一个操作数是目的操作数,第二个操作数是移位次数

 

该指令可用的操作数类型如下所示:
SHR reg, imm8
SHR mem, imm8
SHR reg, CL
SHR mem, CL

x86 处理器允许 imm8 为 0〜255 中的任何整数。另外,CL 寄存器包含的是移位计数

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

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov al, 0D0h     ; AL = 11010000b
    shr al,1         ;AL = 01101000b, CF = 0

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

 

在多位移操作中,最后一个移出位 0(LSB)的数值进入进位标志位:

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

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov al, 00000010b
    shr al, 2            ;AL = 00000000b, CF = 1

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

 

将一个无符号数右移 n 位,即将该数除以 2n

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

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov edx,32        ;移动前:00100000 = 32
    shr edx,1               ;移动后:00010000 = 16

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

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(174)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-12-07 MFC-颜色对照表
2021-12-07 qt5-注册表操作
2021-12-07 opencv-边缘检测之拉普拉斯变换Laplacian
2021-12-07 opencv-矩阵分块法
2020-12-07 photoshop
2020-12-07 爱来无忧组装的台式机
点击右上角即可分享
微信分享提示