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

汇编移位指令复习「建议收藏」前言吐槽一下下,汇编的指令真的好多呀,学了这么多可是记住的却没几个,所以写下这篇文章加深对汇编移位指令的理解和记忆文章目录前言1、逻辑移位指令逻辑左移SHL逻辑右移SHR2、算术移位指令算数左移SAL算术右移SAR3、循环移位指令循环左移ROL循环右移ROR4、注意点1、逻辑移位指令逻辑移位指令适用于带符号数运算逻辑左移SHL指令格式:SHLOPR,CNT????PR:…

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

前言

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

1、逻辑移位指令

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

逻辑左移 SHL

指令格式:SHL OPR,CNT

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

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

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

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

代码

MOV AL,0CFh
SHL AL,1

逻辑右移 SHR

指令格式:SHR OPR,CNT

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

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

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

代码

MOV AL,0CFH
SHR AL,1

2、算术移位指令

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

算数左移 SAL

指令格式:SAL OPR,CNT

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

算术右移 SAR

指令格式:SAR OPR,CNT

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

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

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

代码

MOV AL,0CFH
SAR AL,1

3、循环移位指令

循环左移 ROL

指令格式:ROL OPR,CNT

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

比如将二进制数 1100 1111 循环左移 4 位,该数就变为1111 1100,cf=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:

代码

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时,只移动一位

MOV BL,8Fh      ; BL = 10001111b
SHL BL,1        ;移位后 BL = 00011110b

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

MOV BL,8Fh      ; BL = 10001111b
MOV CL,2
SHL BL,CL       ;移位后 BL = 00111100b
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java定义byte类型,详解java中的byte类型[通俗易懂]

    java定义byte类型,详解java中的byte类型[通俗易懂]介绍byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128,127],所以在Java中,byte类型的取值范围也是[-128,127]。取值范围分析一直在想为什么不是-128到128呢?今天分析了一下这个问题。首先我们得明白一件事情,那就是运算规则:########################…

    2022年6月18日
    24
  • makefile中的include的作用(makefile中的变量)

    1、wildcard:扩展通配符2、notdir:去除路径3、patsubst:替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$mkdirtest$cdtest$mkdirsub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2个文件建立一个简单的Makef

    2022年4月18日
    100
  • JavaScript 闭包详解

    JavaScript 闭包详解JavaScript闭包文章目录JavaScript闭包一、为什么要闭包二、外部得以访问函数内变量三、某些变量得以常驻内存1.垃圾回收机制对闭包的处理2.结合立即执行函数来保存某些变量总结#前言##1.什么是闭包函数闭包函数是声明在另一个函数内的函数,是被嵌套在父函数内部的子函数,在《JS高级程序设计-第3版》中对闭包解释是:”闭包是指有权访问另外一个函数作用域中的变量的函数.”闭包函数可以访问[包裹其的函数]内的各种参数和变量,即便外部函数已经执行完毕.(至于为什么请看下文).一、为什么

    2022年6月28日
    20
  • android4.4.3_安卓内核版本升级

    android4.4.3_安卓内核版本升级Android4.4源码下载(linux合并)==============================分割线结束=========================旧版本的可以使用115,不想再去115搬运了4g多不是很想上传邮箱吱吱的响受不了,上传下吧,要学会摆脱windows不会linux玩android也没少哈意思,不是?下载所有的droiSplit包split分割的,。wi…

    2022年8月10日
    7
  • java 取余和取模运算之间的区别「建议收藏」

    java 取余和取模运算之间的区别「建议收藏」转自lee371042https://blog.csdn.net/lee371042/article/details/102553342packageOperator;importjava.math.BigInteger;/***假如有两个数:*amod(b)与a%b,b为正整数,*一种叫a对b取模,另一个叫a对b取余,两种叫法有什么区别呢?*通常情况下,取模运算也叫取余运算,*它们返回的结果都是一个数对另一个数的余数,**区别在于当a是一

    2022年6月3日
    35
  • Java大数据学习01–大数据的本质及学习顺序介绍

    Java大数据学习01–大数据的本质及学习顺序介绍随着互联网的使用人数越来越多,产生的数据也越来越多。根据数据我们可以分析出很多有用的信息。这也就是当前为什么大数据这么火的行为。学习大数据有很多种方式,但我们学习的载体是以目前最普遍,最流行的Java语言来进行学习。下面我们进入正题:1、首先是大数据的本质:大数据的本质无非两条:大数据的存储(Hadoop)和大数据的计算(Spark)存储:由于数据量巨大,把所有数据存在一个机器…

    2022年5月28日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号