汇编程序 - 读取位

时间:2013-06-10 08:19:03

标签: assembly stdin bit

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

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

任何人都可以帮我重新编写这段代码,所以我可以读取位而不是字节吗? 我必须添加2个96位的数字 - 也许我正确读取它,但后来使用它们错了?

1 个答案:

答案 0 :(得分:0)

96/16 = 6个字或3个双字

你可以把它推到堆栈然后通过pop加载每个块(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 for bignumbers 然后打印下面的96位数答案... lol

(我甚至不知道是否可以将96位数字放入一行,不要忘记,除非你打印完整个字符串,否则没有回车或换行)