Консультация № 189747
06.09.2016, 19:35
0.00 руб.
0 2 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Здравствуйте, изучаю книгу Олега Калашникова "Ассемблер это просто 2 издание", остановился на теме 10.4. Первый обработчик прерывания, вот код который написал
prog10.asm
Код:
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Start:
jmp Init

Int_21h_proc proc
cmp ah,9
je Ok_09
jmp dword ptr cs:[Int_21h_vect]
Ok_09:
push ds
push dx
push cs
pop ds

mov dx,offset My_string
pushf
call dword ptr cs:[Int_21h_vect]
pop dx
pop ds
iret
Int_21h_vect dd ?
My_string db 'Моя строка!$'
Int_21h_proc endp

Init:

mov ah,35h
mov al,21h
int 21h

mov word ptr Int_21h_vect, bx
mov word ptr Int_21h_vect+2, es

mov ax,2521h
mov dx,offset Int_21h_proc
int 21h

mov dx,offset Init
int 27h
CSEG ends
end Start

и код второй программы
test10.asm
Код:
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Start:
mov ah, 9h
mov dx, offset t
int 21h

mov ah, 10h
int 16h

int 20h
t db 'my text test10.asm!$'
CSEG ends
end Start

запустил с начало prog10.com, напрямую без отладчика, программа отработала и завершилась, затем я запустил test10.com и она вывела текст "my text test10.asm", а по идеи книги prog10.com должен был перехватить прерывание 21h с командой 9h и вывести свой текст "Моя строка!"
я использую
Windows 7 х86
masm32

Обсуждение

давно
Посетитель
7438
7205
06.09.2016, 20:23
общий
Адресаты:
Здравствуйте!
Запустите сначала CMD. Из под него сначала одну, потом вторую.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
10.09.2016, 20:25
общий
это ответ
Здравствуйте, arti-779!
Досовские программы необходимо запускать в одной "сессии", запустив предварительно CMD.
Иначе, после завершения первой программы, система уничтожит процесс, созданный первой программой.
В результате, вторая программа запустится "с чистого листа". Изменений, сделанных первой, не будет.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа