ВУЗ:
Составители:
77
lea dx,text ; Смещение текста
int 21h
mov byte ptr flag,1
; Ожидание ввода клавиши пробела
m1: mov ah,0 ; Функция 0
int 16h
cmp al,' ' ; Пробел ?
jz loop1 ; Да !
mov ah,11h ; Функция 11h подфункция 11h
mov al,11h
; Загрузка шрифта ПЗУ 8х14
mov bl,0 ; Блок знакогенератора
int 10h
mov ah,0 ; Функция 0
int 16h
cmp al,' ' ; Пробел ?
jz loop1 ; Да !
jmp loop2 ; Выход из программы
loop1: int 20h
; Таблица перепрограммирования знакогенератора
; (здесь могут быть другие коды)
tabl db 3ch,42h,81h,0a5h,81h,99h,99h,99h,81h,0a5h,99h,42h,3ch,0
db 3ch,42h,81h,0a5h,81h,99h,99h,99h,81h,99h,0a5h,42h,3ch,0
text db 0dh,0ah,0ah,'Замена символов произведена:'
db 0dh,0ah,'41h = A',0dh,0ah,'42h = B',0dh,0ah,'$'
Code ENDS
END Start
Задача 3.1.4. Написать программу, которая поместила бы процедуру,
выводящую сообщение о своем местонахождении, по адресу 8800h. Выход
из пересланной процедуры должен осуществляться по клавише ENTER.
После возврата в основную программу должно выводиться сообщение об
успешном завершении программы.
Выход из основной программы должен осуществляться по нажатию
клавиши пробела. После переписывания дальней процедуры в область
8800h следует стереть ее текст в основной программе для демонстрации
того, что на исходном месте она не может быть выполнена.
Для выполнения дальнего перехода следует использовать команду
RETF, поместив предварительно в стек сегмент и смещение желаемого
места перехода. Перед переходом в дальнюю процедуру следует
позаботиться о правильном значении сегментного регистра DS. О
том же
следует позаботиться и при возвращении в основную программу.
Попробуйте выполнить эту программу с другими адресами места
назначения, в частности, в экранной области: B800h, BC00h, B900h.
77
lea dx,text ; Смещение текста
int 21h
mov byte ptr flag,1
; Ожидание ввода клавиши пробела
m1: mov ah,0 ; Функция 0
int 16h
cmp al,' ' ; Пробел ?
jz loop1 ; Да !
mov ah,11h ; Функция 11h подфункция 11h
mov al,11h
; Загрузка шрифта ПЗУ 8х14
mov bl,0 ; Блок знакогенератора
int 10h
mov ah,0 ; Функция 0
int 16h
cmp al,' ' ; Пробел ?
jz loop1 ; Да !
jmp loop2 ; Выход из программы
loop1: int 20h
; Таблица перепрограммирования знакогенератора
; (здесь могут быть другие коды)
tabl db 3ch,42h,81h,0a5h,81h,99h,99h,99h,81h,0a5h,99h,42h,3ch,0
db 3ch,42h,81h,0a5h,81h,99h,99h,99h,81h,99h,0a5h,42h,3ch,0
text db 0dh,0ah,0ah,'Замена символов произведена:'
db 0dh,0ah,'41h = A',0dh,0ah,'42h = B',0dh,0ah,'$'
Code ENDS
END Start
Задача 3.1.4. Написать программу, которая поместила бы процедуру,
выводящую сообщение о своем местонахождении, по адресу 8800h. Выход
из пересланной процедуры должен осуществляться по клавише ENTER.
После возврата в основную программу должно выводиться сообщение об
успешном завершении программы.
Выход из основной программы должен осуществляться по нажатию
клавиши пробела. После переписывания дальней процедуры в область
8800h следует стереть ее текст в основной программе для демонстрации
того, что на исходном месте она не может быть выполнена.
Для выполнения дальнего перехода следует использовать команду
RETF, поместив предварительно в стек сегмент и смещение желаемого
места перехода. Перед переходом в дальнюю процедуру следует
позаботиться о правильном значении сегментного регистра DS. О том же
следует позаботиться и при возвращении в основную программу.
Попробуйте выполнить эту программу с другими адресами места
назначения, в частности, в экранной области: B800h, BC00h, B900h.
Страницы
- « первая
- ‹ предыдущая
- …
- 75
- 76
- 77
- 78
- 79
- …
- следующая ›
- последняя »
