汇编移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR

SHL、SHR、SAL、SAR: 移位指令


;SHL(Shift Left):             逻辑左移
;SHR(Shift Right):            逻辑右移
;SAL(Shift Arithmetic Left):  算术左移
;SAR(Shift Arithmetic Right): 算术右移

;其中的 SHL 和 SAL 相同, 但 SHR 和 SAR 不同.

;SHL、SAL: 每位左移, 低位补 0,  高位进 CF
;SHR     : 每位右移, 低位进 CF, 高位补 0
;SAR     : 每位右移, 低位进 CF, 高位不变

;它们的结果影响 OF、SF、ZF、PF、CF
;它们的指令格式相同:
SHL r/m, i8

SHL r/m, CL

ROL、ROR、RCL、RCR: 循环移位指令

;ROL(Rotate Left):                循环左移
;ROR(Rotate Right):               循环右移
;RCL(Rotate through Carry Left):  带进位循环左移
;RCR(Rotate through Carry Right): 带进位循环右移

;ROL: 循环左移, 高位到低位并送 CF
;ROR: 循环右移, 低位到高位并送 CF
;RCL: 循环左移, 进位值(原CF)到低位, 高位进 CF
;RCR: 循环右移, 进位值(原CF)到高位, 低位进 CF

;它们的结果影响 OF、CF
;它们的指令格式相同:
SHL r/m, i8
SHL r/m, CL

汇编移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR

时间: 2024-11-06 07:31:20

汇编移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR的相关文章

SHL SHR, SAL SAR, ROL ROR

//____逻辑移动是针对无符号数的______________________________________________ 逻辑左移 SHL  逻辑右移 SHR: unsigned int i = 0x1234; unsigned int j = 0; j = i >> 8;    //右移, 执行后 j = 0x12; j = i << 8;    //左移, 执行后 j = 0x123400;//_____算术移动是针对有符号数的_____________________

delphi 按位运算 not and or xor shl shr

delphi 按位运算 not and or xor shl shr unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; But

汇编学习笔记(3)-80x86指令集

前言 (1)指令的一般格式 [标号:] 助记符 [操作数1 , [操作数2]] [; 注释] 一行一条指令 助记符就是指令的名称,每条指定必定有个助记符. 助记符前面的标号是给汇编编译器看的,由我们自己取名,一般取表示本段功能的相关的名字,对编译器而言表示的是指令的地址. 每个指令根据指令作用的不同会带有一个或者两个操作数,如果有两个操作数,则操作数中间用  逗号","  隔开. ;之后到本行结束为注释 是写个我们自己看的内容,用于描述指令的功能,方便理解程序功能.编译器会将注释内容直

x80386汇编

EAX寄存器:EAX称为累加器,常用于算数运算.布尔操作.逻辑操作.返回函数结果等.EBX寄存器:EBX称为基址寄存器,常用于存档内存地址.ECX寄存器:ECX称为计数寄存器,常用于存放循环语句的循环次数,字符串操作中也常用.EDX寄存器:称为数据寄存器,常常和EAX一起使用. 5.变址寄存器 变址寄存器 顾名思义,变址的含义是内存地址会变动的,也就是说变址寄存器中存放在变动的内存地址.80386架构中有两个变址寄存器,分别是ESI和EDI.ESI和EDI寄存器:ESI:ESI称为源变址寄存器,

16位汇编第六讲汇编指令详解第第三讲

                                          16位汇编第六讲汇编指令详解第第三讲 1.十进制调整指令 1. 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果 2.分成压缩BCD码和非压缩BCD码调整 简而言之: 以前的时候你有个手表,里面的数字是九,如果加一个1就是0了,就会产生进位, 不过这个是10进制进位的,所以应该是 a了,但是a的话就出错了.所以我们就出来了这个调整指令直接变为零,然后进位,也就是16进制码当做10进制使用

汇编语言基本概念汇总

汇编语言应该是我们现在学的最"低级"的语言了,因为现在不会再有人去学机器语言了.而汇编语言还在一些硬件或者嵌入式设备上使用并开发着.以下资料是为了大学的汇编考试整理的资料,现在与大家分享,希望能给大家提供帮助. 汇编语言程序设计汇总 计算机主要由运算器.控制器.存储器和输入输出设备五大部件构成. 字长word是指微处理器内部一次可以并行处理二进制代码的位数,它与微处理器内部寄存器以及CPU内部数据总线宽度是一致的,字长越长,所表示的数据精度就越高. 内存是由若干个存储单元组成,每个单元

gcc, as, ld(转载)

1.本文不是教程,只是描述c语言(gcc环境),编译器,连接器,加载器,at&t汇编,ia32一些相关知识和笔记,很多需要深入的地方需要大家寻找相关的资料学习.如果发现错误,请留言或通知我jinglexy at yahoo dot com dot cn,这个是我的msn.打字不易,请转载时保留作者:http://www.cppblog.com/jinglexy 转自:http://www.cppblog.com/jinglexy/archive/2007/04/19/22298.html 2.g

GCC内嵌AT&amp;T汇编语法

一 基本语法 1 寄存器引用 引用寄存器要在寄存器号前加百分号%,如"movl %eax, %ebx". 80386有如下寄存器: 1.8个32-bit寄存器 %eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp: 2.8个16-bit寄存器,它们事实上是上面8个32-bit寄存器的低16位:%ax,%bx,%cx,%dx,%di,%si,%bp,%sp: 3.8个8-bit寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl.它们事实上是寄

带注释的汇编指令大全

一.数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节.  如:MOV eax,11  意思:eax=11 MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX