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

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


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

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

Выпуск № 406
от 23.03.2006, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 287, Экспертов: 23
В номере:Вопросов: 4, Ответов: 7


Вопрос № 37802: Что значит такая вещь: mov dx, 3dah in al, dx Для чего он используется и за что отвечает каждый бит, но хотябы про этот порт(3dah)???...
Вопрос № 37826: Вопрос1: Можите по подробней рассказать о регистрации классов окон (win32) или подсказать литературу, главное чтобы все описывалось по подробней. Вопрос2: На днях разбирался с структурой програмы и пришел к следующему: Есть какой то ц...
Вопрос № 37860: Для посмотра работы со стеком в динмике написал код, почему-то не работает под AFD под TD и DOS - без проблем. В чем дело?...
Вопрос № 37864: Уважаемые эксперты! Как в ассемблере считать число, которое ввел пользователь? (команда read() и Pascal'е или cin и scanf() в С++) Заранее спасибо!...

Вопрос № 37.802
Что значит такая вещь:

mov dx, 3dah
in al, dx

Для чего он используется и за что отвечает каждый бит, но хотябы про этот порт(3dah)???
Отправлен: 17.03.2006, 22:37
Вопрос задал: Яковлев Сергей Павлович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгений Иванов
Здравствуйте, Яковлев Сергей Павлович!

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

    Input status #1 reg. read 03DAh write n/a

    Layout b5-b4 Used in EGA (DIA)
    b3 VR Vertical retrace
    b2-b1 Used in EGA (LSW,LST)
    b0 DE Display enable NOT

    - Vertical retrace (bit 3)
    0 : Display is in display mode
    1 : Display is in vertical retrace mode

    - Display enable NOT (bit 0)
    0 : Display is in display mode
    1 : Display is not in display mode. Either the horizontal or
    vertical retrace period is active.

    b3 b0 Display status
    0 0 Display mode
    1 1 Vertical retrace time
    0 1 Horizontal retrace time


Вот пример кода:


    ;Ждет обратного хода кадрового луча;
    proc Wait1 ;=wa
    push ax dx
    mov ah,8
    @m0:
    mov dx,3DAh
    m4wa:
    in al,dx
    test al,ah
    jnz m4wa
    m5wa:
    in al,dx
    test al,ah
    jz m5wa
    @exit:
    pop dx ax
    ret

    ;Ждет обратного хода строчного луча;
    Wait2:
    push ax dx
    mov ah,1
    jmp @@m0
    endp


В приложенном файле (15 Кбайт) справка о VGA-регистрах.

Всего хорошего.

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Что имеем - не храним, потерявши - плачем

Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +79087645721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская, д. 66
WWW: Eugene Ivanov
ICQ: 214;88;90;76
----
Ответ отправлен: 17.03.2006, 22:47

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Яковлев Сергей Павлович!
Можно только добавить, что анализ обратного хода луча
был необходим при прямой записи в видеопамять в эпоху CGA.
Если этого не делать, то на мониторе был "снег" из-за
конфликта обращения к видеопамяти видеоадаптера и
пользовательской программы.
Уже, начиная с EGA, надобность в таком анализе отпала.
"Снег" уже не наблюдался. Но еще долго для совместимости
с CGA, включалась опция "борьбы со снегом"
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 17.03.2006, 23:19

Отвечает: Пан Павел Константинович
Здравствуйте, Яковлев Сергей Павлович!
Как дела у вас?
Начнём.
in <reg>,порт
<reg> - Регистр, куда будут записоваться данные из порта.
порт - Порт ввода-вывода

По команде in осуществляется передача байта или слова из порта ввода-вывода в регистр <al> или <ax>. Адрес порта может быть указан в виде константы от 0 до 255 или как содержимое регистра <dx>, как в вашем случае.Используя регистр <dx> для задания порта, вы сможете адресоваться к 65536 портам.
Команда in не влияет на содержимое регисра флагов.

Про порт 3DAH:
У монохромного и цветного адапторов имеются еще три порта, которые важны для программистов. Они имеют адреса 3B8H, 3B9H и 3BAH для монохромного и 3D8H, 3D9H и 3DAH - для цветного адаптора. Первый устанавливает режим экрана, второй - связан в основном с установкой цветов экрана, а третий сообщает полезную информацию о статусе дисплея.

---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 3-ий класс)
Ответ отправлен: 17.03.2006, 23:31


Вопрос № 37.826
Вопрос1:
Можите по подробней рассказать о регистрации классов окон (win32) или подсказать литературу, главное чтобы все описывалось по подробней.
Вопрос2:
На днях разбирался с структурой програмы и пришел к следующему:
Есть какой то цикл обработки системных сообщений (что то типо того) и сами функции выполняющие какое либо действие.
так вот из всего этого я понял, что цикл подает номер функции с данными, функция выполняется и возращает данные циклу, после цикл передает номер след. функции...
На сколько я близок к истине?
Отправлен: 18.03.2006, 11:21
Вопрос задал: Gwest (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгений Иванов
Здравствуйте, Gwest!
Вот только что недавно пробегало по RSDN.ru/

http://www.rsdn.ru/article/baseserv/api32.xml

удачи :)
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +79087645721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская, д. 66
WWW: Eugene Ivanov
ICQ: 214;88;90;76
----
Ответ отправлен: 18.03.2006, 11:29

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Gwest!
Кроме этого, хочу порекомендовать вытянуть книгу Петзольда (Petzold)
http://anatolix.naumen.ru/oldsite/win32books.htm
Там найдешь очень много доходчиво изложенного материала по WINAPI
Там на С, но WINAPI одинаково везде.

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 18.03.2006, 11:47


Вопрос № 37.860
Для посмотра работы со стеком в динмике написал код, почему-то не работает под AFD под TD и DOS - без проблем. В чем дело?

Приложение:

Отправлен: 18.03.2006, 17:41
Вопрос задал: Павлов Павел (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Пан Павел Константинович
Здравствуйте, Павлов Павел!

Как дела У вас?

У меня AFDPRO и я протестировал вашу программу ВСЁ нормально.
Может дела в правильном чередовании нажатия в AFDPro кнопок F1 и F2.
Вам надо было более детально описать неполадку.
Вот попробуйте это:

CSeg segment
assume CS:CSeg,DS:CSeg,ES:CSeg,SS:CSeg
org 100h
begin:

inter equ 3 ;<=== Я уменьшил колл-во интерацай для более легкого сопровождения

mov bx,1254
mov cx,inter ;<=== Три заноса в стек числа

lab_:
mov ah,1h
int 21h

cmp al,27
je lab_2

push bx
inc bx

loop lab_
exit_:
int 20h

lab_2:
cmp cx,inter
je exit_

pop bx
inc cx
cmp cx,inter
je exit_

inc cx
loop lab_

mov sp,0fffeh ;<=== Обратите внимание!
CSeg ends
end begin

С, Уважением MnEm0n!C.
---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 3-ий класс)
Ответ отправлен: 18.03.2006, 23:44


Вопрос № 37.864
Уважаемые эксперты!
Как в ассемблере считать число, которое ввел пользователь?
(команда read() и Pascal'е или cin и scanf() в С++)
Заранее спасибо!
Отправлен: 18.03.2006, 19:30
Вопрос задал: Долгавин Алексей Сергеевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Thorman
Здравствуйте, Долгавин Алексей Сергеевич!
Как таковой команды считывания нет, оно происходит с помощью прерывания 21h и считывания буфера клавиатуры.
Пример смотри в приложении.

Приложение:

---------
Героями не рождаются...

Ответ отправил: Thorman (статус: 2-ой класс)
Ответ отправлен: 22.03.2006, 19:14


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

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

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

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

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


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


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

В избранное