首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >汇编移位指令复习「建议收藏」

汇编移位指令复习「建议收藏」

作者头像
全栈程序员站长
发布2022-09-01 16:02:38
发布2022-09-01 16:02:38
1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

前言

吐槽一下下,汇编指令真的好多呀,学了这么多可是记住的却没几个,所以写下这篇文章加深对汇编移位指令的理解和记忆

文章目录

1、逻辑移位指令

逻辑移位指令适用于带符号数运算

逻辑左移 SHL

指令格式:SHL OPR,CNT

💖PR:是指被移位的操作数 ​ 💖 CNT:是指移位次数

比如将二进制数 1100 1111 左移 1 位,该数就变为 1001 1110,cf=1:

代码

代码语言:javascript
代码运行次数:0
运行
复制
MOV AL,0CFh
SHL AL,1

逻辑右移 SHR

指令格式:SHR OPR,CNT

下图所示为二进制数 1100 1111 逻辑右移一位,得到 01100111,最低位移入进位标志位,cf=1:

代码

代码语言:javascript
代码运行次数:0
运行
复制
MOV AL,0CFH
SHR AL,1

2、算术移位指令

算术移位指令适用于无符号数运算

算数左移 SAL

指令格式:SAL OPR,CNT

🌺 算数左移和逻辑左移完全一样哒,这里就不多说了

算术右移 SAR

指令格式:SAR OPR,CNT

例如,二进制数 1100 1111,符号位为 1。算术右移一位后,得到 1110 0111:

代码

代码语言:javascript
代码运行次数:0
运行
复制
MOV AL,0CFH
SAR AL,1

3、循环移位指令

循环左移 ROL

指令格式:ROL OPR,CNT

比如将二进制数 1100 1111 循环左移 4 位,该数就变为1111 1100,cf=0:

代码

代码语言:javascript
代码运行次数:0
运行
复制
MOV CL,4
MOV AL,0CFH    ;AL = 11001111b
ROL AL,4       ;左移1位:10011111b, cf=1
               ;左移2位: 00111111b, cf=1
               ;左移3位:01111110b, cf=0
               ;左移4位:11111100b, cf=0

循环右移 ROR

指令格式:ROR OPR,CNT

比如将二进制数 1100 1111 循环右移 4 位,该数就变为 11111100,cf=1:

代码

代码语言:javascript
代码运行次数:0
运行
复制
MOV CL,4
MOV AL,0CFH    ;AL = 11001111b
ROR AL,4       ;右移1位:11100111b, cf=1
               ;右移2位: 11110011b, cf=1
               ;右移3位:11111001b, cf=1
               ;右移4位:11111100b, cf=1

4、注意点

移位次数由CNT决定,它的取值为1或者CL

(1)CNT=1时,只移动一位

代码语言:javascript
代码运行次数:0
运行
复制
MOV BL,8Fh      ; BL = 10001111b
SHL BL,1        ;移位后 BL = 00011110b

(2)CNT > 1时,则在使用移位指令前,应首先将移位次数送给CL寄存器

代码语言:javascript
代码运行次数:0
运行
复制
MOV BL,8Fh      ; BL = 10001111b
MOV CL,2
SHL BL,CL       ;移位后 BL = 00111100b

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141724.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 文章目录
  • 1、逻辑移位指令
    • 逻辑左移 SHL
    • 逻辑右移 SHR
  • 2、算术移位指令
    • 算数左移 SAL
    • 算术右移 SAR
  • 3、循环移位指令
    • 循环左移 ROL
    • 循环右移 ROR
  • 4、注意点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档