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

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


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

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

Выпуск № 396
от 13.03.2006, 00:05

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


Вопрос № 36948: Пишу программу (резидент) под дос, когда запускаю в нортоне все отлично работает, если в winXP, запускается консоль и сразу же закрывается. Программа в памяти не остается. Не ужели нужно использовать winAPI? Расширение программы - com. ...
Вопрос № 36974: Здравствуйте уважаемые эксперты. Мне надо запретить аппаратное прерывание от клавиатуры, показав это в буфере клавиатуры. Я это делаю так: Запускается прога и выводится буфер клавиатуры (сначала он пустой) далее идёт задержка во время...
Вопрос № 36996: Начал читать книгу Калашникова Ассемблер это просто. Примеры связанные с видеобуфером не работают. Это программы из глав 3,4,5. Программа запускается, но никакие рожицы не выводятся. Как решить данную проблему...

Вопрос № 36.948
Пишу программу (резидент) под дос, когда запускаю в нортоне все отлично работает, если в winXP, запускается консоль и сразу же закрывается. Программа в памяти не остается.
Не ужели нужно использовать winAPI?
Расширение программы - com.
Отправлен: 07.03.2006, 12:43
Вопрос задал: Gwest (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгений Иванов
Здравствуйте, Gwest!
запускай в окне эмулятора.
но всё зависит, от того, что тебе нужно сделать.
Если работу через клавиши, то нужно писать для win32.

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 07.03.2006, 12:58
Оценка за ответ: 3
Комментарий оценки:
Добавлю к вопросу:
Написал программу которая запускается и проверяет есть ли в памяти другая(резидент), если есть то работаем дальше, если же нет , просто закрываемся.
Все написано и отлично работает, но только в NortonCom. и VolkovCom., в винде работает только первая программа, резиден не хочет оставаться в памяти. МОЙ ВОПРОС: КАК Е ;ГО ЗАСТАВИТЬ ТАМ ОСТАТЬСЯ, чтобы первая программа могла работать.

Отвечает: FreeManC
Здравствуйте, Gwest!
Прерывание завершает прогу, оставляя резидентную часть в памяти - это если программить под дос. Иначе же завершение проги в винде ничего не оставляет резидентным. Под виндой чтоб оставить резидентную часть в памяти запускай прогу из cmd.exe должно помочь. А вообще не парься и если пишешь в винде - пиши под винду. Расширение проги правда будет .ехе, но разве это когото останавливает?
Ответ отправил: FreeManC (статус: 2-ой класс)
Отправлен: 07.03.2006, 14:37

Отвечает: Беляев Валерий (ака seaman)
Здравствуйте, Gwest!
Ну вообще-то главное отличие XP это отсутствие DOS. В ней есть эмулятор ДОС.
Я думаю в этом все проблемы. Что позволит ВИНДА, то и работает.
Тут выходов несколько - или работать в обычной ДОС, или писать под XP, или работать в виртуальной машине, запущенной под XP, с установленной на ней ДОС.
Ответ отправил: Беляев Валерий (ака seaman) (статус: 3-ий класс)
Отправлен: 07.03.2006, 16:56


Вопрос № 36.974
Здравствуйте уважаемые эксперты.
Мне надо запретить аппаратное прерывание от клавиатуры, показав это в буфере клавиатуры.
Я это делаю так:
Запускается прога и выводится буфер клавиатуры (сначала он пустой)
далее идёт задержка во время которой произвольно нажимаются клавиши
После задержки вновь выводится буфер в котором должны быть коды нажатых клавиш
Потом идёт отключение прерываний клавы
(in al, 21h
or al, 00000010b
out 21h, al)
теперь ещё одна задержка при которой снова нажимаются клавиши и опять вывод буфера клавиатуры который на этот раз измениться не должен.
Возникает проблемма с выводом содержимого буфера.
При обращении к нему по адресу 0:41Ah выводится какая-то ерунда и при нажатии клавиш ничего не меняется. Не важно какие клавиши нажимаются выводится всё время одно и тоже.
Пробовал в среде Дос win98 и Win XP и содержимое буфера всё время разное.
Может у этого буфера сменился адрес или я что-то не так делаю?
Код проги в приложении.
Заранее спасибо.

Приложение:

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

Отвечает: Ayl
Здравствуйте, Rus!

Данная адресация некорректна:
fd: mov al,0000h:[041Eh+bx]

Нужно обращаться через сегментный регистр, например так:
xor ax, ax
mov es, ax
fd: mov al, es:[041Eh+bx]


---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Академик)
Отправлен: 09.03.2006, 13:53
Оценка за ответ: 5


Вопрос № 36.996
Начал читать книгу Калашникова Ассемблер это просто. Примеры связанные с видеобуфером не работают. Это программы из глав 3,4,5. Программа запускается, но никакие рожицы не выводятся. Как решить данную проблему

Приложение:

Отправлен: 07.03.2006, 23:18
Вопрос задал: Мещеряков Илья Николаевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Евгений Иванов
Здравствуйте, Мещеряков Илья Николаевич!

    
    
    P586
    P587

    Assume CS:smile,DS:smile
    smile segment 'code' use16
    Org 256
    start:

    finit
    fldpi
    mov cx, 0B800h
    frndint
    mov es, cx
    fistp [video]
    sub di, di
    mov ax, [video]
    int 16

    mov ah, 31
    mov al, 1
    mov es:[di], ax

    mov ah, 10h
    int 16h

    int 20h

    video dw ?

    smile Ends
    End start



---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 07.03.2006, 23:51

Отвечает: Пан Павел Константинович
Здравствуйте, Мещеряков Илья Николаевич!

Если у вас Win XP попробуйте в "Командной строке", ну в Сеансе Ms-Dos набрать вот так:
c:debug.exe
т.е. запустить программу debug.exe и когда запустите у вас появится такое:
-
а вы сделайте вот так:
-q
тем самым вы выйдите из программы. Теперь не закрывая сеанс наберите:
с:ваша-программа.com
тем самым у вас должно быть всё нормально.
Соль такова:
Сеанс использует не тот видеобуфер. Ваша задача заставить сменить видеобуфер Сеанса т.е. сделать активным видеобуфер-0B800h.

С, Уважением MnEm0n!C.

Приложение:

---------
Hello Worlds

Ответ отправил: Пан Павел Константинович (статус: 3-ий класс)
Отправлен: 08.03.2006, 00:28


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.18 от 09.03.2006
Яндекс Rambler's Top100

В избранное