 |
Ассемблер в примерах - Вывод символа на экран
- Вопрос:
- Здраствуйте,помогите разобраться с проблемой
arver 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
arver ends
end begin
у меня при открытии com файла ни рожицы,ничего вообще не отображается (менял в регисте al цифры) и в эмуляторе тоже ничего не отображется, хотелось бы узнать почему?
- Ответ:
- Данный код при выполнении в среде Windows 2000 и выше не приводит к ожидаемому результату потому, что окно DOS-задачи в текстовом режиме в качестве активной использует видеостраницу №1, которая имеет начальный адрес видеопамяти B800:04001000, а приведенный код выводит "рожицу" в видеостраницу №0, которая начинается с адреса B800:0000.
Принудительная установка режима (mov ax, 3; int 10h) приводит к тому, что активной страницей становится нулевая, после чего запись данных в видеопамять приводит и к их отображению.
Вместо вызова функции установки режима также может быть использована функция установки активной страницы (mov ax 0500h; int 10h).
|  |