Написание собственного прерывания - Assembler
Формулировка задачи:
Доброго времени суток. Нужно написать собственное прерывание, которое выводит на экран строку. Написать, вроде, написал, но при прогоне в Turbo Debugger (v3.2), при входе в прерывание входит непонятно куда. Аналогичная ситуация с запуском файла программы. В окне неизвестные символы, среди которых моя строка. Ассемблирую в TASM. Расширение файла программы .exe.
Если допустил ошибки в описании проблемы, прошу прощения, не очень в этом силен. Заранее спасибо.
Так вот, вопрос: что не так?
s_s segment stack "stack" s_s ends d_s segment save_cs dw 0 ;хранит сегмент заменяемого прерывания save_ip dw 0 ;хранит смещение прерывания Message db 'This is my int!!!$' d_s ends c_s segment assume cs:c_s, ds:d_s begin: mov ah, 35h ;функция получения вектора mov al, 60h ;номер вектора int 21h mov save_cs, es ;сохраняем сегмент mov save_ip, bx ;сохраняем смещение ;установка прерывания push ds ;сохраняем ds mov dx, offset myint ;смещение для процедуры в dx mov ax, seg myint mov ds, ax mov ah, 25h ;функция установки вектора mov al, 60h ;номер вектора int 21h ;меняем прерывание pop ds ;восстанавливаем ds int 60h myint proc far push ax ;сохраняем все регистры push dx mov ah, 9h mov dx, offset Message int 21h pop dx pop ax iret myint endp mov ah, 4ch int 21h c_s ends end begin
Решение задачи: «Написание собственного прерывания»
textual
Листинг программы
s_s segment stack "stack" dw 40 dup(?) s_s ends
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д