2015-06-09 2 views
-1

Я хочу, чтобы ввести символ в ASM сравнить его с определенной полукокса и напечатать сообщение, если они являются одинаковыми или повторить попытку, если они не являютсяASM: Проблема с использованием INT21h на реальной машине

Проблема в том, что мой код работает на EMU8086, но не на виртуальной машине:

mdp DB 'c$' 
equal : 

     mov ah, 1h 
     int 21h 

cmp al,mdp 
jne equal 

на Emu8086 подождать пользователь нажать клавишу и клавишу вВОДА, на виртуальной машине (как загрузчик) я не могу нажать любую клавишу.

+1

Спрашивает автора (т. Е. Сам Sebatian Plotz) –

+0

'int 21h' является частью DOS API (также реализуется в Windows). Вы не можете использовать его в загрузчике, где ОС еще не загружена. – interjay

ответ

0

Вы не можете использовать службы MS-DOS (INT 21h) в загрузчике. MS-DOS - это операционная система, такая как Linux или Windows. Точно так же, как вы не можете использовать службы Linux до загрузки Linux, вы не сможете использовать службы MS-DOS перед загрузкой.

В загрузчике вы можете использовать службы BIOS (или напрямую обращаться к оборудованию). Вы можете использовать службу BIOS INT 16h, AH = 00h для чтения клавиатуры.

+0

Спасибо, я обнаружил его 5 минут назад ahah. Моя проблема решена благодаря вам! – Azuron