8086/8088 移位指令解释

作者: 爱一直在线 | 来源:发表于2018-01-08 17:27 被阅读29次

目录

  1. 非循环移位
    1.1 逻辑左移——SHL
    1.2 逻辑右移——SHR
    1.3 算术左移——SAL
    1.4 算术右移——SAR
  2. 循环移位
    2.1 循环左移——ROL
    2.2 循环右移——ROR
    2.3 带进位循环左移——RCL
    1.4 带进位循环右移——RCR
  3. 总结

1. 非循环移位

1.1 逻辑左移——SHL

操作数每左移一次,操作数的最低位补零,最高位移入CF(CF的原值丢失)。
例:将 10100101 逻辑左移三次,每次移一位
第一次:01001010 CF=1
第二次:10010100 CF=0
第三次:00101000 CF=1

1.2 逻辑右移——SHR

操作数每右移一次,操作数的最高位补零,最低位移入CF(CF的原值丢失)。
例:将 10101101 右移三次,每次移动一位
第一次:01010110 CF=1
第二次:00101011 CF=0
第三次:00010101 CF=1

1.3 算术左移——SAL

与逻辑左移相同

1.4 算术右移——SAR

每右移一次,操作数的最低位移入CF,最高位(符号位)不变,次高位与最高位相同。
例:将 10000101 算术右移三次,每次一位。
第一次:11000010 CF=1
第二次:11100001 CF=0
第三次:11110000 CF=1

2. 循环移位

2.1 循环左移——ROL

每移位一次,操作数的最高位被移入操作数的最低位,同时(最高位)移入标志位CF。
例:将 10011010 循环左移三次,每次一位。
第一次:00110101 CF=1
第二次:01101010 CF=0
第三次:11010100 CF=0

2.2 循环右移——ROR

每移位一次,操作数的最低位被移入操作数的最高位,同时(最低位)移入标志位CF。
例:将 10011010 循环右移三次,每次一位。
第一次:01001101 CF=0
第二次:10100110 CF=1
第三次:01010011 CF=0

2.3 带进位循环左移——RCL

每移位一次,操作数的最高位移入标志位CF,而原CF中的值移到操作数的最低位。
例:将 10011010 带进位循环左移三次,每次一位。初始CF=0
第一次:00110100 CF=1
第二次:01101001 CF=0
第三次:11010010 CF=0

1.4 带进位循环右移——RCR

每移位一次,操作数的最低位移入标志位CF,而原CF中的值移到操作数的最高位。
例:将 10011010 带进位循环左移三次,每次一位。初始CF=0
第一次:01001101 CF=0
第二次:00100110 CF=1
第三次:10010011 CF=0

总结

  1. 非循环移位指令,每移一位相当于乘2(左移时)或除2(右移时)。由此可知,无符号数倍增或减半时,使用逻辑左移或右移指令;带符号数要倍增或减半时,可用算术左移或右移指令。只有当移位后的数未超出一字节或一个字(与目的操作数为字节或字相对应)的表达范围,数的倍数和减半才是正确的。
  2. 循环移位指令,循环移位之后,操作数中原来各数位的信息不会丢失,而是移到了操作数的其他位或进位标志CF中,必要时还可以恢复。
  3. 当右移一次时,若结果的最高位与次高位不同,则溢出标志位OF=1,否则OF=0;当左移一次时,若结果的最高位与进位标志不相等,则溢出标志位OF=1,否则OF=0。
  4. 指令格式:移位指令 dst, CL/1

相关文章

  • 8086/8088 移位指令解释

    目录 非循环移位1.1 逻辑左移——SHL1.2 逻辑右移——SHR1.3 算术左移——SAL1.4 算术右移——...

  • 命题-第四章-填空

    8086/8088CPU的结构包括( )和( )两部分。 【解析】 8086/8088CP...

  • 命题-第四章-简答

    8088与8086在软件上是否完全兼容? 【解析】是 8086/8088内部都采用16位字进行操作及存储器寻址,因...

  • docker安装 influxdb

    docker run -d -p 8053:8086 -p8054:8088 -v /mydata/influxd...

  • 命题-第四章-填空

    8086和8088的指令队列长度分别为____、 ____个字节? 【解析】6 4 8086的指针队列为6个字节,...

  • 8086/8088寄存器

     8086/8088 包括四个16位数据寄存器,两个16位指针寄存器,两个16位变址寄存器,一个16位指令指针,四...

  • 8088/8086的数据寻址方式

    寻址方式:通过地址来找到数据,也就是表示数据的方式 先来看看一条指令mov AX,0102h ;ax为目的操作数,...

  • CPU实模式和保护模式

    原文链接 16位微处理器 8086寄存器组成 8086/8088包括:4个16位的数据寄存器,2个16位的指针寄存...

  • 汇编指令LEA

    LEA是微机8086/8088系列的一条指令,取自英语Load effect address——取有效地址,也就是...

  • 微处理器8088/8086结构

    谈8088内部结构之前,先来看一下微处理器的基本结构 微处理器一般由算数逻辑单元(ALU),寄存器,指令处理单元等...

网友评论

    本文标题:8086/8088 移位指令解释

    本文链接:https://www.haomeiwen.com/subject/dowbnxtx.html