0

任何人都可以帮我在汇编中从用户那里读取 96 位吗?现在我正在阅读这样的数字:

mov $12, %edx
mov $variable1, %ecx
mov $STDIN, %ebx
mov $SYSREAD, %eax
int $0x80

谁能帮我重铸这段代码,这样我就可以读取位而不是字节了?我必须添加 2 个 96 位的数字——也许我读对了,但后来用错了?

4

1 回答 1

0

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 位数字放入一行,不要忘记,在打印整个字符串之前没有回车或换行)

于 2013-06-10T10:17:31.923 回答