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

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 77
от 07.03.2005, 00:10

Администратор:Калашников О.А.
В номере:Вопросов: 2, Ответов: 4


Вопрос № 17647: Резидент из 10 выпуска. Int_21h_proc proc pushf cmp ah,9 je Ok_09 popf jmp dword ptr cs:[Int_21h_vect] Ok_09: push ds push dx push cs pop ds mov dx,offset My_string pushf //заносится в...
Вопрос № 17675: Лмячен чгеи! Йе лкдгубпен унк егнш хя бггеивхем дхц яглкхшфкчбйяц 64 мбфмцдйщъ метягмкч квэетк йбфйбюейяц лмкрб Athlon64. Я убу клняияфямкчбнш лмяхкпейяе лкд лмкрщ г HT? Фб кнченщ чгеи глбгявк....

Вопрос № 17647
Резидент из 10 выпуска.
Int_21h_proc proc
pushf
cmp ah,9
je Ok_09
popf
jmp dword ptr cs:[Int_21h_vect]
Ok_09:
push ds
push dx
push cs
pop ds
mov dx,offset My_string
pushf //заносится в стек. В стеке уже находятся ds, dx
call dword ptr cs:[Int_21h_vect]
pop dx //И снова
pop ds //
popf ////извлекается позже чем, dx и ds
iret
Int_21h_vect dd ?
My_string db 'Моя строка!$'
int_21h_proc endp
Остальное вроде понял.
Отправлен: 01.03.2005, 08:50
Вопрос задал: psevdo (статус: 1-ый класс)
Всего ответов отправлено: 3

Отвечает: Котиев Зураб
Здравствуйте, psevdo!
Остальное вроде понял.
Зато я вопроса не понял.
Судя по всему ты не понял почему делаем popf в конце?
но ты сохранил флаги в стеке перед
cmp ah,9
je Ok_09
а потом делаешь прыжок на метку
Ok_09:
флаги то остались в стеке
Ответ отправил: Котиев Зураб (статус: 2-ой класс)
Отправлен: 01.03.2005, 11:05

Отвечает: Bob Johnson
Здравствуйте, psevdo!
Дело в том, что когда ты делаешь pushf перед call dword ptr.., ты делаешь это не для того, чтобы потом их самому извлечь, а для того, чтобы сымитировать поведение процессора при вызове аппаратного прерывания - он вначале заносит в стек флаги, затем адрес возврата.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 01.03.2005, 12:07

Отвечает: Виктория Путина
Здравствуйте, psevdo!
с помощью pushf ты сохраняешь флаги а не регистры а потом при надобности извлекаешь их оттуды опять таки флаги с помощью popf
Ответ отправила: Виктория Путина (статус: 5-ый класс)
Отправлен: 02.03.2005, 09:39


Вопрос № 17675
Лмячен чгеи!
Йе лкдгубпен унк егнш хя бггеивхем дхц яглкхшфкчбйяц
64 мбфмцдйщъ метягмкч квэетк йбфйбюейяц лмкрб Athlon64.
Я убу клняияфямкчбнш лмяхкпейяе лкд лмкрщ г HT?
Фб кнченщ чгеи глбгявк.
Отправлен: 01.03.2005, 20:46
Вопрос задал: 1 (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Boriss
Здравствуйте, cross!
Так и не подобрал кодировку ..... Видимо, от этого нет ответов Вам :((
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 03.03.2005, 10:04


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное