Занесение данных в регистр 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'

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы