1

我是汇编编程的新手,我有一个接受用户输入的汇编(x86)代码。控制台将连续(循环)要求用户输入另一个字符,直到按下这样的“输入”键。当按下“enter”键时,控制台将自动停止请求更多输入。

我怎么可能这样做?是否与中断有关?感谢您的建议...

4

2 回答 2

0

在没有操作系统或在 MS-DOS 下运行时,您有两种可能性:

第一个:

  • 直接访问键盘(I/O 端口)(使用 IN 和 OUT 指令)
  • 您还必须捕获或禁用键盘中断,否则 BIOS 将“窃取”键盘请求

第二个:

  • 使用 BIOS 中断“INT 0x16”访问键盘

当您使用现代操作系统(Windows、Linux...)时,您无法直接访问键盘;您必须调用操作系统 API 函数 - 与使用 C 编程时调用的函数相同:

// C example:
getchar();

和:

# Assembler example (Windows: _getchar, Linux: getchar):
call _getchar
于 2013-08-27T20:56:52.637 回答
-1

在 8086 中,当你输入一些东西时,它会被存储在寄存器的 'AL' 部分。因此,您可以简单地将“AL”与“0DH”进行比较(这里,0D 是 ENTER 键的十六进制表示)。

要比较 'AL' 和 '0DH',您可以简单地写“CMP AL,0DH”。

于 2021-09-22T16:45:29.213 回答