2013-04-07 6 views
1

Мне нужно написать программу для записи символов ASCII в видеопамять.Написание символов ASCII в видеопамяти в сборке с TASM на 8086

.model tiny 
.stack 
.data 
.code 
main: 

mov ax, 0b800h 
mov ds, ax 

mov aL, 'x' 
mov es, bx 
mov es:[1], aL 

mov ah, 4ch 
int 21h 

end main 

Этот код еще инертен; он компилируется, запускается и затем выходит без печати. Я думаю, что мне не хватает строки.

+0

Возможный дубликат [Печать строки без ОС] (http://stackoverflow.com/questions/15462807/printing-a-string-without-os) – nrz

+1

Вы устанавливаете 'ds' в' 0b800h' и 'es 'до неопределенного значения или, по крайней мере, не' 0b800h' ('bx'). А затем вы используете 'es' для обращения к видеопамяти, которая, очевидно, не работает. – nrz

+0

блестящий, это было глупо от меня. однако я все еще не могу напечатать символ таким образом, и программа ведет себя по-прежнему. – user2241226

ответ

1

Чтобы записать в видеопамять, установите ES в 0b800h Укажите место (смещение) на экране, где вы хотите написать. Установите DI в (строка * (максимальные строки (80)) + col) * 2 (ROW и COL основаны на нуле). Например, для записи на третий символ в 10-й строке используйте «mov di, (2 * 80 + 9) * 2» Укажите цвета в AH. Установите AH на (backgroundcolor * 16 + foregroundcolor), например, чтобы писать светло-серые (7) буквы на черном (0) фоне использовать «mov ah, 7» Используйте инструкцию STOSW вместо «mov es: [адрес]», и др. Таким образом, вы можете динамически писать в разные места на экране.

 Смежные вопросы

  • Нет связанных вопросов^_^