任何人都可以帮我在汇编中从用户那里读取 96 位吗?现在我正在阅读这样的数字:
mov $12, %edx
mov $variable1, %ecx
mov $STDIN, %ebx
mov $SYSREAD, %eax
int $0x80
谁能帮我重铸这段代码,这样我就可以读取位而不是字节了?我必须添加 2 个 96 位的数字——也许我读对了,但后来用错了?
96/16 = 6 个字或 3 个双字
您可以将它推到堆栈上,然后通过弹出加载每个块(16 位或 32 位),例如 eax
然后在循环中使用 shl
mov cx,32 ;The 32 bit loop
.printbinary
shl eax,1 ;shove eax one bit to the left
jnc azero ;jump if no carry flag
PRINT A ONE
loop printbinary
.azero
PRINT A ZERO
loop printbinary
有点东西
(无论您要做什么,进位标志都会读取各个位,并且 shr/shl 将寄存器移动 1 位)
屏幕转储等只会给你十六进制代码
所以在屏幕上打印出二进制的行(每行 96 次???)然后使用 ADD 以您的特定语言风格的 bignumbers 然后打印出下面的 96 位答案......哈哈
(我什至不知道是否可以将 96 位数字放入一行,不要忘记,在打印整个字符串之前没有回车或换行)