08.07.2020, 11:37 [+3 UTC]
в нашей команде: 4 662 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
07.07.2020, 19:11

Последний вопрос:
07.07.2020, 13:03
Всего: 152720

Последний ответ:
08.07.2020, 02:59
Всего: 260323

Последняя рассылка:
07.07.2020, 20:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
12.09.2019, 23:38 »
dar777
Это самое лучшее решение! [вопрос № 196283, ответ № 278658]
16.03.2010, 13:38 »
MrSpencer
Спасибо Вам и Химику СН. Кинетическую энергию нашёл, исходя из Вашего решения. Спасибо! [вопрос № 177277, ответ № 260148]
30.12.2010, 07:57 »
Pinokio
Отличный ответ, большое спасибо. Разобрался с NetBeans, очень удобная программа (хотя пока не нашел ошибку из-за которой не происходит регистрация, зато нашел другую smile ). Большое спасибо. [вопрос № 181631, ответ № 265127]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

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

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 1043
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 303
Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 146220
Раздел: • Assembler
Автор вопроса: Alexeyk
Отправлена: 06.10.2008, 18:19
Поступило ответов: 0

Доброго времени суток!
У меня вопрос по поводу работы перехватчика прерывания. Конкретно, о работе инструкции pushf.
Если её убрать, то программа по iret выйдет вобще нипонятно куда (где одни нули), но с этой инструкцией всё проходит нормально)
Объясните, плиз, почему, если мы не сохраним флаги, происходит такая лажа (кстати мы их не восстанавливаем, т.е. нет инструкции popf)

Пример набран по книге Калашникова, но там объяснения я так и не нашёл (если оно там есть, подскажите где)...

Код (FASM):

org 100h

go:
        jmp     init

myint21:
        cmp     ah, 9h
        je      good
        jmp     dword ptr cs:my_int_vect
good:
        push    dx
        push    ds

        push    cs
        pop     ds

        pushf  

        mov     dx, my_string
        call    dword ptr cs:my_int_vect
        pop     dx
        pop     ds
        iret

my_int_vect dd ?
my_string db 'Replaced string$',0

init:
        mov     ah, 35h
        mov     al, 21h
        int     21h
        mov     word ptr my_int_vect, bx
        mov     word ptr my_int_vect+2, es
        mov     ax, 2521h
        mov     dx, myint21
        int     21h
        mov     dx, init
        int     27h


Зарание большое спасибо)

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 146220
Boriss

# 1

= общий = | 06.10.2008, 19:54

Почему же у Калашникова нет? Просто невнимательно прочитали, как работает iret , и чем отличается от ret .

неизвестный

# 2

= общий = | 06.10.2008, 22:46

Точно! Сейчас почитал рассылку (именно рассылку), где всё подробно описано): smile

Теперь ответ на вопрос: почему перед вызовом прерывания командой вида call dword ptr cs:Int_21h_vect] мы заносим в стек регистр флагов командой pushf?
Все просто. Стоит только посмотреть на отличие оператора RETF от IRET (см. выше). При передаче управления (вызове) прерывания командой call dowrd ptr... процессор заносит в стек только сегмент (CS) и смещение (IP) следующей за командой call инструкции. А IRET (который выполняется при возврате из прерываний) достанет со стека сегмент:смещение и флаги. Но флаги-то не заносятся командой call dword ptr...! Мы их заносим сами, "вручную". Иначе произойдет нарушение работы стека, и компьютер "зависнет". Как я уже говорил, за стеком нужно следить очень внимательно!


в дальнейшем буду больше расчитывать на рассылку, нежели на книгу)
тема закрыта)

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15442 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39