Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Вывод символа на экран

Вопрос:
Здраствуйте,помогите разобраться с проблемой
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).


   Вперёд
   Содержание