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

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


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 697
от 17.03.2007, 04:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 362, Экспертов: 26
В номере:Вопросов: 1, Ответов: 3


Вопрос № 77813: Здравствуйте, уважаемые эксперты! Мне требуется определить текущий видеорежим. Для этого использую mov AH,0F, затем PUSH AL. Но ассемблер помечает в командной строке эти строки как ошибки. Подскажите, пожалуйста, что мне делать? я использу...

Вопрос № 77.813
Здравствуйте, уважаемые эксперты!
Мне требуется определить текущий видеорежим. Для этого использую
mov AH,0F, затем PUSH AL. Но ассемблер помечает в командной строке эти строки как ошибки. Подскажите, пожалуйста, что мне делать? я использую TASM

Приложение:

Отправлен: 11.03.2007, 04:06
Вопрос задал: Archangel (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Archangel!

Не нужно ничего записывать в стек.
Для получения режима просто используй
mov ah, 15
int 16

после этого в AL будет текущий видеорежим. Используй это значение для сохранения или сравнения.

cmp al, 3
jz err

Успехов.
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +78313145721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская
WWW: Eugene Ivanov
ICQ: 214889076
----
Ответ отправлен: 11.03.2007, 04:13

Отвечает: ASMодей
Здравствуйте, Archangel!

mov AH,0Fh
INT 10h
push AX
Ответ отправил: ASMодей (статус: Профессионал)
Россия, Магнитогорск
----
Ответ отправлен: 11.03.2007, 06:47
Оценка за ответ: 5

Отвечает: Волков Павел Юрьевич
Здравствуйте, Archangel!
Ошибка в строке
mov AH,0F

из-за неверного формата записи шестнадцатеричных чисел, правильный вариант:
mov AH,0Fh
или
mov AH,0xF ;сишный формат записи

Вторая ошибка:
push AL

в стек нельзя помещать 8-битные значения, только 16 и 32-битные, для платформы x86.
Для используемого 16-битного режима, в стек по-умолчанию помещается 16-битная переменная, для помещения 32-битной переменной:
push eax
push dword ptr [var] ; применяем специальные указания компилятору
push [var] ;помещается 16-битное число, при var dw 99, при var dd 99, компилятор может подставить dword ptr сам, иначе выдаст ошибку, тогда подставьте сами.

При использовании 32-битного кода, применяется модификатор word ptr
push word ptr [var]

Подробную информацию можете найти в любом учебнике по Ассемблеру, например Юрова "Assembler. Учебник для вузов".
---------
Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: Студент)
Ответ отправлен: 11.03.2007, 07:37
Оценка за ответ: 4


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.45 beta от 20.02.2007
Яндекс Rambler's Top100

В избранное