吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1994|回复: 1
收起左侧

[易语言 转载] 易语言无符号右移/逻辑右移模块

[复制链接]
wapj152321 发表于 2021-12-7 14:13
易语言无符号右移/逻辑右移模块



汇编语言中SAR和SHR指令的区别
1、方向不同通过gdb动态调试得到每次循环的值进行比对,才发现出现错误的具体原因。sar在符号位为1时,右移时填充1,符号位为0时填充0。而python默认的右移运算为逻辑右移运算,右移时默认填充0,与符号位无关。
2、作用不同
汇编语言中SAR和SHR指令都是右移指令,SAR是算数右移指令(shift arithmetic right),而SHR是逻辑右移指令(shift logical right)。SAR右移时保留操作数的符号,即用符号位来补足,而SHR右移时总是用0来补足。例如10000000算数右移一位是11000000,而逻辑右移一位是01000000。3、顺序不同SAR是算术右移,比较特殊。他的最高位一直是不变的。如1000 0000算术右移7位后就成了1111 1111。SAR右移的时候,最高位不变,最低位移入CF。



易语言位操作  【右移】为算术右移,相当于SAR,若想实现SHR右移指令,可以采用以下办法



.版本 2


.子程序 右移_逻辑, 长整数型, , ※易语言无符号右移/逻辑右移模块
.参数 x, 长整数型, , ※参数_右移数值   长整数型
.参数 y, 整数型, , ※参数_右移长度   整数型
.局部变量 s, 长整数型
.局部变量 w, 长整数型
.局部变量 d, 长整数型


' 2021年12月7日来源于互联网
s = 右移 (x, y)
w = 左移 (取字节集长度 (到字节集 (s)), 3)
d = 位与 (s, 位取反 (左移 (-1, w - y)))
返回 (d)

















发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

幽溪左畔 发表于 2022-6-26 21:34
测试 33 >>> 0 结果为0  正确为 33
下面的代码没问题
.版本 2

.子程序 逻辑右移, 整数型, 公开, 无符号(逻辑)右移左边补0,有符号(算数)右移左边补符号位
.参数 欲移动的整数, 整数型, , 易语言自带的右移为有符号右移,与无符号右移计算结果不同
.参数 欲移动的位数, 字节型, , 右移范围0~31

置入代码 ({ 102, 81, 139, 69, 8, 138, 77, 12, 211, 232, 102, 89, 201, 194, 8, 0 })
' push cx
' mov eax,[ebp+8]
' mov cl,[ebp+12]
' shr eax,cl
' pop cx
' leave
' retn 8
返回 (0)

来自互联网
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-4 10:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表