Написание собственного прерывания - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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