Занесение данных в регистр ds - Assembler
Формулировка задачи:
Такой вопрос, как мне занести в регистр ds значение 01 по определенному адресу?
Хочу сделать так чтобы, когда происходит прерывание в регистре ds по адресу 106, 00 менялся на 01
Вот код программы с прерыванием 04:
.model small .stack 256 .code old04 dd ? ;старый вектор прерывания 04 msg db 13,10,"OF flaf is set! Check data formats...",13,10,"$" start: mov ax,cs ;Настраиваем сегментные регистры mov ds,ax mov es,ax push es ;сохранить регистр mov ax,3504h ;ф-я получения вектора прерывания 04 int 21h ;получаем вектор 04 прерывания mov word ptr old04,bx ;сохраняем mov word ptr old04+2,es ;его pop es ;восстановить регистр lea dx,new04 ;адрес нового обработчика прерывания 04 mov ax,2504h ;ф-я установки вектора прерывания int 21h ;установить новый обработчик прерывания 04 mov ax,1000 ;1000 add ax,10000 ;1000+10000=11000 -> переполнения нет into ;проверяем переполнение (прерывание не выполняется) add ax,22000 ;11000+22000=33000, но произошло переполнение into ;проверяем переполнение (и в этот раз прерывание выполняется) lds dx,old04 ;загрузить старый вектор прерывания 04 mov ax,2504h ;ф-я установки вектора прерывания int 21h ;вернуть старый обработчик прерывания 04 mov ax,4c00h ;закончить программу int 21h ;новый обработчик прерывания 04 new04 proc push dx ;сохранить регистры push ax mov ah,9 ;функция вывода сообщения на экран lea dx,msg ;выводимое сообщение int 21h ;выводим на экран pop ax ;восстановить регистры pop dx iret new04 endp end start
Решение задачи: «Занесение данных в регистр ds»
textual
Листинг программы
msg db 13,10 x db "OF flaf is set! Check data formats...",13,10,"$" mov [x], '0' mov [x], '1'