Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »
webaristan
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1626
Дата выхода:11.09.2016, 19:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:30 / 10
Вопросов / ответов:1 / 1

Консультация # 189747: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Здравствуйте, изучаю книгу Олега Калашникова "Ассемблер это просто 2 издание", остановился на теме 10.4. Первый обработчик прерывания, вот код который написал prog10.asm
Код ::

Консультация # 189747:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Здравствуйте, изучаю книгу Олега Калашникова "Ассемблер это просто 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

Дата отправки: 06.09.2016, 19:35
Вопрос задал: arti-779 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, arti-779!
Досовские программы необходимо запускать в одной "сессии", запустив предварительно CMD.
Иначе, после завершения первой программы, система уничтожит процесс, созданный первой программой.
В результате, вторая программа запустится "с чистого листа". Изменений, сделанных первой, не будет.

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 10.09.2016, 20:25
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное