我正在使用不包含乘法、除法或位移位指令的汇编语言。我知道只需将相同的数字添加到自身即可实现左移 -
add A, A
- 但我不确定右移。我如何使用 add
、sub
、not
、and
和 or
等指令实现右位移位?
还有
adc
和 sbb
如果有帮助的话。这是我正在设计的自制计算机的指令集,我想看看我已经实现的指令集是否可行。
完整指令集为
add
、sub
、adc
、sbb
、nand
、or
、cmp
、mv
、ld
、st
、 lda
,
lpm
、
push
、
pop
、
jnz
和
halt
。
从左侧一次复制一点(最重要的),如果进行 16 次迭代,您将获得原始版本的精确副本,但在 15 次迭代时停止,您将获得 1 位右移原始的,并且原始的被减少到余数(尽管现在处于 MSB 位置)。