Assembly 汇编程序读取位

Assembly 汇编程序读取位,assembly,stdin,bit,Assembly,Stdin,Bit,有人能帮我从汇编中的用户那里读取96位吗? 现在我读的是这样的数字: mov $12, %edx mov $variable1, %ecx mov $STDIN, %ebx mov $SYSREAD, %eax int $0x80 有人能帮我重新格式化这个代码,这样我就可以读取位而不是字节了吗? 我必须添加两个96位的数字-也许我读对了,但后来用错了?96/16=6个字或3个DWORD 您可以将其推到堆栈上,然后通过pop-to(比如eax)加载每个块(16或32位) 然后在循环中使用shl

有人能帮我从汇编中的用户那里读取96位吗? 现在我读的是这样的数字:

mov $12, %edx
mov $variable1, %ecx
mov $STDIN, %ebx
mov $SYSREAD, %eax
int $0x80
有人能帮我重新格式化这个代码,这样我就可以读取位而不是字节了吗?
我必须添加两个96位的数字-也许我读对了,但后来用错了?

96/16=6个字或3个DWORD

您可以将其推到堆栈上,然后通过pop-to(比如eax)加载每个块(16或32位)

然后在循环中使用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来表示大数字 然后在下面打印出96位数的答案…哈哈


(我甚至不知道是否有可能在一行中输入96位数字,别忘了,在打印完整个字符串之前,不会有回车符或换行符)

你没有提到用户应该以哪种格式输入数字(十进制、十六进制、二进制、base64等)。教授只说我必须读一串位