shl和sal有什么区别
答:具体含义:SHL: 逻辑左移;SAL: 算术左移;SHR: 逻辑右移;SAR: 算术右移 具体用法:SHR:每位右移, 低位进 CF, 高位补 0;SAR:每位右移, 低位进 CF, 高位不变,它们的结果影响 OF、SF、ZF、PF、二、循环移位指令 具体含义:ROL:循环左移;ROR:循环右移;RCL: 带进位循环左移;RCR: 带...
答:汇编语言中sal(算术左移指令)和shl(逻辑左移指令)指令的寻址方式、控制移位方式等都一样,区别其实只有一处:\r\nSAL算术移位指令在执行时,实际上把操作数看成有符号数进行移位,最高位符号位移入CF,但本身保持原值;其余位顺序左移,次高位被舍弃。\r\nSHL逻辑移位指令在执行时,实际上把操作...
答:楼上说的对,shl和sal,左移的操作,效果都是一样的(shl和sal的机器码都是相同的)sar和shr的主要区别在于,向右移动时,sar会根据最高为是否为1来扩展符号位,shr只把移出来的位补0 比如 -1 的16位二进制是1111 1111 mov ax, -1 sar ax, 1 ; ax还是1111 1111 shr ax, 1; 这下ax就...
答:SHL和SAL事实际没有区别,移动结果都是一样的,SHL是逻辑左移,SAL,算法左移,它们都是向左移动几位,最右就补几个0比如 SHL ax,CL ;ax=1111 1111B CL=4 ,移动后AX=1111 0000SAL AX,CL ;AX=0101 1100 CL=5移动后 AX=1000 0000 SHR是逻辑右往,向右移动几位,最左边(即最高位补0)...
答:;SHL(Shift Left): 逻辑左移 ;SHR(Shift Right): 逻辑右移 ;SAL(Shift Arithmetic Left): 算术左移 ;SAR(Shift Arithmetic Right): 算术右移 ;其中的 SHL 和 SAL 相同, 但 SHR 和 SAR 不同.;SHL、SAL: 每位左移, 低位补 0, 高位进 CF ;SHR : 每位右移, 低位进 CF, ...
答:用来代替机器码编程的。现在用的 80x86 汇编语言的编译软件,出自微软公司。当年,比尔·盖茨,还十分年轻,手下的程序员,牛,跳槽也是常事。这个人,想用 SHL,那个人,说用 SAL。盖茨不得罪人,和稀泥,两个词,就都流传下来了。像乔布斯,当年,就太强势了,反而,被驱逐出去了。
答:SHL:shift logical left SAL:shift arithmetic left SHR:shift logical right SAR:shift arithmetic right ROL:rotate left ROR:rotate right RCL:rotate left through carry RCR:rotate right through carry
答://其实sal和shl的操作是等价的,上面的操作使用shr操作是一样的结果,都是左移源操作数n位,每次移位将最高位移入cf标志位 注意sar和shl就不同了:mov eax,-2 sar eax,1//有符号右移,高位保持符号位不变,此处为1,操作后eax =0xffff ffff = -1;shr eax,1//无符号右移,高位补0,操作...
答:逻辑左移/右移指令只有它们的移位方向不同,移位后空出的位都补0。注:逻辑移位指令常用于无符号数*2或/2,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。另外,shl 不是pascal 语言本身的指令,是属于汇编语言中的指令。 关于移位指令,有算术左移指令sal和算术右移指令sar, 逻辑左移SHL和...
答:在debug下用A命令输入SAL DX,1会出错,应该用SHL DX,1 二者操作一样,如果在asm文件使用SAL指令 则编译链接不会报错可正常执行.总结一下就是 1. SAL 与SHL相同,但在A命令下不识别SAL ,在asm文件中,两者都可以用。2. debug下支持伪指令 (学艺不精,欢迎指错)...
网友评论:
国唯17790365390:
SAR,SHR,SAL,SHL区别 -
57375查梵
: SHL,SAL分别是逻辑左移和算术左移,运行结果是一样的,都是数据往左移动,然后在右边补零; SHR是逻辑右移,数据往右移动,在左边补零.如:1000 0000->0010 0000(逻辑右移两位) SAR是算术右移,比较特殊.他的最高位一直是不变的.如1000 0000算术右移7位后就成了1111 1111.
国唯17790365390:
SHR,SAR,SAL,SHL区别 -
57375查梵
: 楼上说的对,shl和sal,左移的操作,效果都是一样的(shl和sal的机器码都是相同的) sar和shr的主要区别在于,向右移动时,sar会根据最高为是否为1来扩展符号位,shr只把移出来的位补0比如 -1 的16位二进制是1111 1111 mov ax, -1 sar ax, 1 ; ax还是1111 1111 shr ax, 1; 这下ax就变成0111 1111了这就是“算数”和“逻辑”移位的区别,算数移位保留操作数的符号,逻辑移位只把操作数当作一块单纯的存储空间
国唯17790365390:
算术位移运算符和逻辑位移运算符有什么区别? -
57375查梵
: 在C语言中,涉及位移的运算符有2个,>>表示右移,<<则表示左移. 而汇编指令中,SHL和SHR表示逻辑左移和逻辑右移,SAR和SAL表示算术左移和算术右移. 其中,逻辑左移和算术左移都是寄存器二进制位整体向左移动,并在右边补0. 而右移则不同,逻辑右移是整体向右移,并在左边补0,而算术左移则是根据原符号位的值补与其相同的值. 根据C标准,如果在位移运算符左边的变量是有符号数,如int,char,short等,编译产生的汇编指令是算术位移指令,如果该变量是无符号数,如unsigned int,unsigned char等,编译产生的汇编指令则是逻辑位移指令.
国唯17790365390:
如何理解SAL指令可用于带符号数倍增运算,SHL指令只能用于无符号的倍增运算.那位懂的大哥大姐帮忙给个好理解的例子. -
57375查梵
: 首先你得明白符号数和无符号数的区别 符号数的最高位是符号位,而无符号数则没有符号位,符号数可以为正可以为负,但无符号数只能表示正数或0 看这两个数第一个为符号数,第二个为符号数 1001 1001 第一个数代表-1,而第二个数代表9 ...
国唯17790365390:
8086汇编中,SHL和SAL为什么是一样的而SHR和SAR为什么是不一样的?也就是逻辑左移右移跟 -
57375查梵
: 算术右移和逻辑右移对最高位的填充不同.算术右移填充sf,逻辑右移填充0吧
国唯17790365390:
易语言的 "左移"在汇编里是什么? -
57375查梵
: 位异或是xor 汇编移位指令 ;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
国唯17790365390:
汇编中的逻辑指令 -
57375查梵
: CPU在存储程序原理中扮演的角色是—— 运算器与控制器,运算器对应的就是逻辑运算指令和算术运算指令、浮点运算指令等,控制器对应的是跳转指令,而逻辑运算指令都是基于 布尔代数的,即我们在高中数学中学的 或 且 非. 对应的指令为 and or not 当然还有xor.and 集合观点是取 流(01流)的交集, or是取并集 not是取补集 xor是取子集.数论的观点 and是二进制乘法 xor是二进制加法..等等.逻辑运算是很关键的东西,因为这是cpu控制器实现控制的条件.因此是很重要的.需要深入的理解一下
国唯17790365390:
左移命令<< 循环左移命令 - cror - 有什么区别? -
57375查梵
: 左移指令<< : 是左移指令,低位补零. 左移指令将操作数的bit位向左移动n位,空出来的位用0填充.左移指令包含sal和shl,这两条指令的作用是相同的,空出来的位用0填充. 循环左移指令_cror_: 循环左移指令,低位补高位移除的数据. 使能输入有效时,将IN输入无符号数(字节、字或双字)循环左移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1.当需要移位的数值是零时,零标志位SM1.0为1.
国唯17790365390:
汇编语言中的移位指令具体的操作是怎样的呢? -
57375查梵
: SHL/SAL一样:逻辑/算术左移,最高位进到CF,最低位补0;SHR:逻辑右移,最低位进到CF,最高位补0;SAR:算术右移,最低位进到CF,最高位不变;ROL:循环左移,最高位进到CF的同时补到最低位;ROR:循环右移,最低位进到CF的同时补到最高位;RCL:带进位循环左移,最高位进到CF的,同时CF值补到最低位;RCR:带进位循环右移,最低位进到CF的,同时CF值补到最高位;SHLD:双精度左移,第二个操作数移位到第一个操作数,第一操作数进到CF,和逻辑左移类似,低位移到高位;SHRD:双精度左移,第二个操作数移位到第一个操作数,第一操作数进到CF,和逻辑由移类似,高位移到低位;这样差不多可以了吧.
国唯17790365390:
汇编程序的逻辑位移与算术位移有何本质上的区别?
57375查梵
: 汇编语言中的逻辑右移(SHR)是将各位依次右移指定位数,然后在左侧补0,算术右移(SAR)是将各位依次右移指定位数,然后在左侧用原符号位补齐.