ASM:麻烦在真机上使用int21h

时间:2015-06-09 10:50:25

标签: assembly x86 bootloader

我想在ASM中输入一个字符,将它与已定义的字符进行比较,如果它们相同则打印一条消息,如果它们不是

则重试

问题是我的代码适用于emu8086但不适用于VM:

mdp DB 'c$'
equal : 

       mov ah, 1h
       int 21h

cmp al,mdp
jne equal

在emu8086上,它等待用户按下一个键并按下回车键,在VM上(作为引导加载程序)我不能按任何键。

1 个答案:

答案 0 :(得分:0)

您无法在引导加载程序中使用MS-DOS服务(INT 21h)。 MS-DOS是一个操作系统,如Linux或Windows。就像在Linux加载之前你不能使用Linux服务一样,你无法在加载之前使用MS-DOS服务。

在引导加载程序中,您仅限于使用BIOS服务(或直接访问硬件)。您可以使用BIOS服务INT 16h,AH = 00h来读取键盘。