Вопрос

Я написал программу на ассемблере и скомпилировал ее. Он предназначен для печати синего смайлика, а затем для ожидания, пока пользователь нажмет клавишу, прежде чем он завершит работу. Он делает это последнее, но не печатает смайлик.Кто - нибудь может объяснить , что я сделал не так ?

CSEG segment
org 100h
Begin:

mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end Begin

Я скомпилировал его с помощью МАСМ с помощью 16 - битный компоновщик

Это было полезно?

Решение

Вы можете напрямую использовать видеобуфер только в том случае, если вы находитесь в режиме видео только для текста.Я предполагаю, что вы используете какую-то Windows и на самом деле не загружаете DOS, так что вы, вероятно, находитесь в графическом режиме.

Что ты мочь быть в состоянии сделать, это открыть окно консоли, а затем АльтВойти чтобы перейти в полноэкранный текстовый режим.Попробуйте запустить свою программу там.

Другие советы

Прошло около года с тех пор, как я работал с MASM, и единственный справочник, который у меня есть дома, - это MIPS, так что я, по общему признанию, немного подзабыл, однако для вывода на экран требуется системное прерывание (int 21h), но единственное системное прерывание, которое я вижу, - это вызов завершения программы после прерывания с клавиатуры.

Ваш код в порядке, вам просто нужно либо запустить полноэкранный режим, как предложил Грег Хьюджилл, либо настроить ваше командное окно на использование старого растрового шрифта (например, SYSTEM).Щелкните правой кнопкой мыши строку заголовка окна и перейдите на вкладку Шрифт.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top