我想知道如何在汇编中从键盘读取整数。我正在使用 Linux/x86 IA-32 架构和 GCC/GAS(GNU 汇编程序)。到目前为止,我找到的示例是针对 NASM 或其他一些与 Windows/DOS 相关的编译器的。
我听说它与“int 16h”中断有关,但我不知道它是如何工作的(它需要参数吗?结果去 %eax 或者它的任何虚拟寄存器 [AX, AH , AL]?).
提前致谢, 弗莱森。
:D
最佳答案
简单的回答是,您不是从键盘读取整数,而是从键盘读取字符。您也不会在屏幕上打印整数 - 您打印字符。您将需要将“ascii-to-integer”和“integer-to-ascii”转换的例程。您可以为一个“只调用 scanf”,为另一个“只调用 printf”。如果用户行为良好并将输入限制为代表十进制数字的字符,则“scanf”可以正常工作,但很难摆脱输入的任何“垃圾”! “printf”还不错。
尽管我是 Nasm 用户(它在 Linux 上运行良好 - 不是真正的“Windows/dos 相关”),但我可能有 (G)as 语法中的例程。如果你想不通,我会看看能不能找到他们。
正如 Brian 指出的那样,int 16h 是 BIOS 中断 - 16 位代码 - 在 Linux 中没有用。
最好的, 弗兰克
关于linux - 从汇编中的键盘读取整数(Linux IA-32 x86 gcc gas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11542745/