Б 6 Подпрограмма отображения 4х страниц сегмента EMS
Пример Б.6. Подпрограмма отображения 4-х страниц сегмента EMS
mapseg: mov ex, 04 ; количество повторов цикла
xor al, al нулевая физическая страница
maplp : reov ah, 44h код функции отображения памяти
int 67h обращение к драйверу
or ah, ah отображение выполнено?
jne @F -> нет, переход на локальную метку
inc ax следующая физическая страница
inc bx следующая логическая страница
loop maplp управление повторами цикла
clc очистка С-разряда
ret возврат на основную программу
@@: stc установка С-разряда
ret возврат на основную программу
При входе в точку mapseg задается 4 повтора цикла отображения начиная с нулевой физической страницы. После этого выполняется цикл отображения, имеющий метку mapip (вторая точка входа).
Если отображение происходит без ошибок, то номера физической и логической страницы увеличиваются на 1 и цикл повторяется до тех пор, пока не будет отображено заданное количество страниц.
При возникновении ошибки ее код возвращается в регистре ah. В этом случае выполнение цикла прекращается и происходит переход на локальную метку, что приведет к возврату из подпрограммы с установленным признаком переполнения.