![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
![]()
Нужно проверить Int флаг, только один бит. Читал, что получить содержимое регистра флагов можно с помощью
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]()
В 8086 неплохо работала связка
Код:
Правильно поставленная задача - три четверти решения.
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Krasi
Для загрузки значений флагов в регистр EFLAGS и считывания из него предназначены команды LAHF, SAHF, PUSHF, PUSHFD, POPF и POPFD. Значение любого флага всегда можно проверить, для этого нужно сохранить содержимое регистра EFLAGS в стек, затем извлечь его в регистр общего назначения и проверить командами TEST или BT. Изменить значения флагов можно путём загрузки его через стек из регистра общего назначения, но некоторые флаги таким образом изменить нельзя (например, двухбитовое поле IOPL в защищённом режиме). Флаг разрешения прерываний (IF – Interrupt enable flag) находится в 9-ом бите, поэтому команда lahf не подходит, тогда вся программа Код:
Последний раз редактировалось Mikl___; 16.02.2012 в 12:02. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
![]()
Ок, но я не использую стек. Пока еще не дошло, как без него
![]() ![]() Последний раз редактировалось Krasi; 16.02.2012 в 10:35. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Krasi
Это как не используешь? Из религиозных соображений? Команды pushf и pop ax в 8086 существовали |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Специально посмотрел в справочник
LAHF—Load Status Flags into AH Register . SAHF—Store AH into Flags. Маленькое но — регистр AH 8-разрядный, а Interrupt enable flag находится в 9-ом бите (а отсчет идет с нулевого бита) поэтому только через PUSHF |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
![]()
И что делать? Мне не охота прикручивать ОЗУ к схеме только из-за этого казуса, но надо как-то проверить, что таймер в МПС закончил считать, и лучше с применением прерывания. Хотя... int же автоматически загружает данные в стек? А если не поставлю ОЗУ, то никак не сделаю int+ret? Ну можно просто jmp, ну не знаю. Короче, ставить ОЗУ, или нафиг она не нужна по мелочам? Как мне проверить по-грамотнее изменение сигнала на выходе таймера?
Блин, я понял, что имеется недопонимание: как вообще организовать прерывание? Вот я подал на некоторое время "0" на INTR#, а что дальше? Последний раз редактировалось Stilet; 17.02.2012 в 11:21. |
![]() |
![]() |
![]() |
#8 | |||
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]() Цитата:
Цитата:
Флаг IF – Interrupt enable flag в регистре FLAGS разрешает или запрещает использовать прерывания, сам механизм прерывания имеет программную реализацию, связанную с созданием вектора прерывания, но об этом лучше читать в книжке Цитата:
Последний раз редактировалось Mikl___; 17.02.2012 в 06:12. |
|||
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
![]()
Ну правильно же, что во время прихода сигнала INTR#, единичного, кстати (таймер выдает "0", а дальше ставлю инвертор) флаг устанавливается в "0" вплоть до iret? Я не на компьютере, а сам пробую собрать систему, поэтому могут быть и казусы. Но сейчас я спрашиваю именно про то, как получить данные из IF, если стека нету. Но я еще не понял, как сдвиги работают, вроде без ОЗУ никак, а я вчера еще хотел схему без ОЗУ. Но я не в курсе, может можно и без ОЗУ?
|
![]() |
![]() |
![]() |
#10 | ||
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Krasi
Цитата:
![]() Цитата:
Последний раз редактировалось Mikl___; 17.02.2012 в 11:16. |
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача параметров asm-asm | Maksimall89 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 22.12.2011 11:54 |
asm | dosha | Фриланс | 2 | 04.03.2011 01:59 |
Asm в С++ | ge4r | Помощь студентам | 0 | 17.10.2010 17:26 |
[c++]asm | Nightwalker | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 14.10.2008 19:39 |