新浪博客

TIAv17环境下再次学习练习STL-77SRW右移字(16位)

2024-02-15 18:02阅读:
继续学习TIA环境下STL编程,本篇学习SRW 右移字(16 位)。
SRW(右移字)只逐位向右移动 ACCU 1-L 的内容。由零填充移位指令空出的位。将最后一个移出的位装载到状态字的 CC 1 位中。地址<数目>或 ACCU 2-L-L 中的数值指定要移位的位数目。
SRW <数目>:地址<数目>指定移位数目。允许的数值范围为 0 - 15。当<数目>大于 0 时,将状态字的位 CC 0 和 OV 复位为 0。当<数目>等于 0 时,则将此移位指令视为 NOP 操作。
SRW:移位数目由 ACCU 2-L-L 中的数值指定。可能的数值范围为 0 - 255。移位数目大于 16 时,始终产生相同的结果:ACCU 1-L = 0、CC 1 = 0、CC 0 = 0 和 OV = 0。当 0 < 移位数目 <= 16 时,复位状态字的位 CC 0 和 OV 为 0。当移位数目为 0 时,则将移位指令视为 NOP 操作。


在前面练习的基础上继续。
TIAv17环境下再次学习练习STL-77SRW右移字(16位)
十进制11转换成2进制数是0000,0000,0000,1011,第一次右移结果是0000,0000,0000,0000,0101,第二次右移结果是0000,0000,0000,0010,第三次右移结果是0000,0000,0000,0001,最后一次移出的数是0,所以CC1
=0,最终结果是1
SRW对负数的处理和SSI不一样,负数用反码表示后右移,符号位会一同右移,最后不返回原码(我不知道是不是我理解错了,最终结果就是这样子)
-11转换成补码是1111,1111,1111,0101,第一次右移结果是0111,1111,1111,1010,第二次右移结果是0011,1111,1111,1101,第三次右移结果是0001,1111,1111,1110,最后一次移出的数是1,所以CC1=1,0001,1111,1111,1110转换成10进制数是8190

我的更多文章

下载客户端阅读体验更佳

APP专享