Как вы печатаете смайлик в сборке?
Вопрос
Я написал программу на ассемблере и скомпилировал ее. Он предназначен для печати синего смайлика, а затем для ожидания, пока пользователь нажмет клавишу, прежде чем он завершит работу. Он делает это последнее, но не печатает смайлик.Кто - нибудь может объяснить , что я сделал не так ?
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).Щелкните правой кнопкой мыши строку заголовка окна и перейдите на вкладку Шрифт.