ASM:在真机上使用 int21h 时遇到问题
ASM : Trouble using int21h on real machine
我想在 ASM 中输入一个字符,将其与定义的字符进行比较,如果相同则打印一条消息,否则重试
问题是我的代码可以在 emu8086 上运行,但不能在 VM 上运行:
mdp DB 'c$'
equal :
mov ah, 1h
int 21h
cmp al,mdp
jne equal
在 emu8086 上,它等待用户按下一个键并按下 enter,在 VM 上(作为引导加载程序)我无法按下任何键。
您不能在引导加载程序中使用 MS-DOS 服务 (INT 21h)。 MS-DOS 是一个操作系统,如 Linux 或 Windows。就像在 Linux 加载之前不能使用 Linux 服务一样,在加载之前不能使用 MS-DOS 服务。
在引导加载程序中,您只能使用 BIOS 服务(或直接访问硬件)。您可以使用 BIOS 服务 INT 16h,AH=00h 来读取键盘。
我想在 ASM 中输入一个字符,将其与定义的字符进行比较,如果相同则打印一条消息,否则重试
问题是我的代码可以在 emu8086 上运行,但不能在 VM 上运行:
mdp DB 'c$'
equal :
mov ah, 1h
int 21h
cmp al,mdp
jne equal
在 emu8086 上,它等待用户按下一个键并按下 enter,在 VM 上(作为引导加载程序)我无法按下任何键。
您不能在引导加载程序中使用 MS-DOS 服务 (INT 21h)。 MS-DOS 是一个操作系统,如 Linux 或 Windows。就像在 Linux 加载之前不能使用 Linux 服务一样,在加载之前不能使用 MS-DOS 服务。
在引导加载程序中,您只能使用 BIOS 服务(或直接访问硬件)。您可以使用 BIOS 服务 INT 16h,AH=00h 来读取键盘。