Я нашел то, что представляется полной копией кода на родном языке ОП (Poli sh). https://ideone.com/fork/YQG7y. Вот этот раздел кода (прогон через гугл переводчик):
; ================================================= =======
; main program - installation and uninstallation of the procedure
; interrupt handling
; determining page number 0 for text mode
start:
mov al, 0
mov ah, 5
int 10
Из этого кода видно, что это ошибка. Это должно быть int 10h
, а не int 10
(аналогично int 0ah
). int 10h
задокументировано как:
VIDEO - SELECT ACTIVE DISPLAY PAGE
AH = 05h
AL = new page number (00h to number of pages - 1) (see #00010)
Return:
Nothing
Desc: Specify which of possibly multiple display pages will be visible
int 10
- это нечто совершенно другое:
IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
Вызов обработчика прерываний IRQ2 с помощью int 10
фактически ничего не сделает с точки зрения программы. Поскольку текстовая страница по умолчанию, вероятно, уже равна 0, программа работает, как и ожидалось.
Правильный код:
mov al, 0
mov ah, 5
int 10h
установит для страницы отображения текстового режима значение 0, используя B IOS сервис 10 ч. Функция 5.