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

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


Информационный Канал Subscribe.Ru

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

Выпуск № 324
от 22.07.2002, 20:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 798
Отправлено ответов: 2281
Активность: 285.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Beeblebrox
Статус: Профессиональный
Общий рейтинг: 120.17
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Топор
Статус: Профессиональный
Общий рейтинг: 118.93
URL: Хорошая Русская Металлическая команда
Телефон: (8462)500298
[Подробней >>]
ASMодей
Статус: Доверительный
Общий рейтинг: 136.17
[Подробней >>]
 
Igoryk
Статус: Доверительный
Общий рейтинг: 108.12
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 160.82
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 140.22
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 125.59
[Подробней >>]
Shal
Статус: Доверительный
Общий рейтинг: 106.89
[Подробней >>]
Александр
Статус: Профессиональный
Общий рейтинг: 117.79
[Подробней >>]
 
Guess Who
Статус: Доверительный
Общий рейтинг: 104.52
[Подробней >>]
Gibbel
Статус: Опытный
Общий рейтинг: 109.52
URL: Страничка обо мне и моих друзьях
[Подробней >>]
Dron
Статус: Профессиональный
Общий рейтинг: 128.34
URL: Операционная система с нуля!
[Подробней >>]
 
kvINT
Статус: Опытный
Общий рейтинг: 112.6
[Подробней >>]
Pablo
Статус: Доверительный
Общий рейтинг: 110.79
[Подробней >>]
Portnov
Статус: Опытный
Общий рейтинг: 122.35
[Подробней >>]
 
Kalashnikoff
Статус: Профессиональный
Общий рейтинг: 101.73
URL: Информационный ресурс
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 753. День добрый, граждане эксперты! Вот маленькая программка, которая позволяет вводить символы с клави... (ответов: 8)
Вопрос № 754. Привет всем экспертам и подписчикам!! У меня такой вопрос: mov ah,09h int 16h Скан-код нажатой б... (ответов: 7)
Вопрос № 755. Привет вам, Эксперты!! У меня проблема: Tasm 4.1 считает за ошибку команды pusha и popa. Выводит: I... (ответов: 11)
Вопрос № 756. Где взять инфу о программировании Видеокарт в protected mode с целью установить режимы высокого разр... (ответов: 1)
Вопрос № 757. Бодрое время суток, господа эксперты! В программе встретился такой код: mov bx, dx and bx, 8... (ответов: 9)
Вопрос № 760. ИнтЛист Ральфа Брауна конечно впечетляет, вот только, это куча неструктурированой инфы 8( Качал я ег... (ответов: 4)
Вопрос № 761. Поставил софтайс из драйверстудии 2.5. Стоит. Работает. Единственная (пока;) проблема, при установке... (ответов: 2)
Вопрос № 762. Добрый день, господа эксперты. У меня тут возникла проблема с защищенным режимом. Почему, как только... (ответов: 1)
Вопрос № 763. Товарищи эксперты!!! Можно ли отправлять ответы по мылу??? И стоит ли? ... (ответов: 2)
Вопрос № 766. Драсьте, эксперты асьма. Я СтРаШнО извиняюсь, так как мой вапрос совсем не в тему. Но это потому, чт... (ответов: 2)
Вопрос № 767. Получилось как вы говорили сохранить в ХТМЛ, а потом из ЭКСПЛОРЕРА отправить! У меня бровсер Мозилла... (ответов: 2)
Вопрос № 768. Здравствуйте уважаемые эксперты! Имеется программа писаная на Дельфи (для проведения тестирования), ... (ответов: 1)

Вопросов: 12, ответов: 50


 Вопрос № 753

День добрый, граждане эксперты!
Вот маленькая программка, которая позволяет вводить символы с клавиатуры, а при нажатии "y" выходит в дос:
CSEG segment
assume cs:CSEG;ds:CSEG
org 100h
Start:
mov ah,09h
mov dx,offset mess1
int 21h
Begin:
mov ah,10h
int 16h
cmp al,"y"
je Stop
mov ah,09h
mov dx,offset mess3
int 21h
jmp Begin
Stop:
int 20h
mess1 db "Enter symvol:$"
mess3 db "*$"
end Start
end segment
Вроде без ошибок. А когда я заменяю "y" на 1Ch(в одном из примеров у Зубкова написано, что это скан-код Enter, то ничего не происходит (не выходит в дос). Почему так?




Вопрос отправлен: 17.07.2002, 21:48
Отправитель: _nod_ (_nod_@tyt.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает Beeblebrox

Доброе время суток, _nod_!
Потому что функция 10h прерывания 16h возвращает ASCII код символа в al, а сканкод в ah. То есть надо либо cmp al,0Dh, либо cmp ah,1Ch


Ответ отправлен: 18.07.2002, 10:45
Отправитель: Beeblebrox


Отвечает Топор

Добрый день, _nod_!
Потому что DOS в обязательном порядке интерпретирует управляющие символы. Если уж нужна конкретная закорючка, то или через BIOS, или прямым швырянием в память.


Ответ отправлен: 18.07.2002, 08:42
Отправитель: Топор


Отвечает ASMодей

Приветствую Вас, _nod_!
Дело в том, что функция 10h прерывания INT 16h возвращает
в регистре AL ASCII-код нажатой клавиши, а в регистре
AH - Scan-код клавиши. Так что если проверять Scan-код,
то проверять нужно регистр AH а не AL.
Кстати, сегмент правильно завершать нужно так:
CSEG ends
и уже после этого писать
end Start


Ответ отправлен: 18.07.2002, 10:02
Отправитель: ASMодей


Отвечает Igoryk

Приветствую Вас, _nod_!
У Enter скан-код 0Dh.

Ответ отправлен: 18.07.2002, 10:49
Отправитель: Igoryk


Отвечает masquer

Доброе время суток, _nod_!
а ты al на ah замени, тогда это будет сканкодом, а так это ASCII character code, который у Enter = 0dh если не ошибаюсь

Ответ отправлен: 17.07.2002, 22:03
Отправитель: masquer


Отвечает Broken Sword

Приветствую Вас, _nod_!
ответ на этот вопрос: причем здесь скан код до ASCII-кода
ответ на вопрос про pusha - пиши вначале .186
и еще ты чето спрашивал... а! как вывести на экран из al. ну это очень сложно сделать, так сразу и не объяснишь. нужно перечитать горы литературы и вообще ты на асме должен как минимум два года программить. еще для этой задачи желательно знать мотороловский асм и знать наизусть все API-ф-ции.

Ответ отправлен: 17.07.2002, 22:50
Отправитель: Broken Sword


Отвечает Ayl

Добрый день, _nod_!
И не будет работать!
Читайте внимательнее описание функций!
На выходе функции 10h прерывания 16h в регистре AL возвращается ASCII-код (!) нажатой клавиши либо 0 для расширенных кодов (для Enter'а будет либо 0, либо 0dh). А скан-код клавиши возвращается в регистре AH!
В любом дебаггере ты бы понял свою ошибку за 5 минут!

Ответ отправлен: 17.07.2002, 23:51
Отправитель: Ayl


Отвечает Shal

Здравствуйте, _nod_!
При нажатии enter'a, в ax 1c0d. Поэтому ты должен заменять не на 1ch, а на 0dh.


Ответ отправлен: 18.07.2002, 19:10
Отправитель: Shal


 Вопрос № 754

Привет всем экспертам и подписчикам!!
У меня такой вопрос:
mov ah,09h
int 16h
Скан-код нажатой будет в al. Как вывести его на экран?
С уважением, _nod_




Вопрос отправлен: 17.07.2002, 21:54
Отправитель: _nod_

[Следующий вопрос >>] [Список вопросов]

Отвечает ASMодей

Добрый день, _nod_!
Функция 09h прерывания INT 16h не возвращает никаких
скан-кодов, она предназначена для получения информации о
функциях, поддерживаемых клавиатурой. Если тебе нужен
скан-код, то нужно воспользоваться функцией 10h, которая
возвращает в регистре AH скан-код нажатой клавиши.
Вывести его на экран можно, например, так:
mov dh,ah
mov al,dh
ror al,4
and al,0Fh
cmp al,10h
sbb al,69h
das
mov dl,al
mov ah,02h
int 21h
mov al,dh
and al,0Fh
cmp al,10h
sbb al,69h
das
mov dl,al
mov ah,02h
int 21h


Ответ отправлен: 18.07.2002, 10:03
Отправитель: ASMодей


Отвечает Топор

Приветствую Вас, _nod_!
Если тебе нужен только скан-код, то тебе надо просто перевести его в шестнадцати- или в десятеричную форму. Как это делается - в этой рассылке перетёрто дальше некуда, смотри архив.


Ответ отправлен: 18.07.2002, 08:37
Отправитель: Топор


Отвечает Igoryk

Приветствую Вас, _nod_!
Вообще-то для считывания символа используется функция 10h. Но для вывода на экран введенного символа используйте после своей программы функцию BIOS:
mov ah, 0Eh
mov bh, 0
int 10h
или прерывание DOS:
int 29h
Только вывод будет осуществляться от текущего положения курсора, т.е. поверх набранного символа.
А вообще скан-код помещается в ah.

Ответ отправлен: 18.07.2002, 10:49
Отправитель: Igoryk


Отвечает Александр

Приветствую Вас, _nod_!
Ко всем. Читайте дальше. Нашёл недавно на одном из своих дисков с доками. Вообще-то я бы ЭТО положил где-нибудь на видном месте www.RusFAQ.ru Пока этого не сделано выложу на своём почтовом сервере, он же временное пристанище для страничек http://travorez.nm.ru
RU.ASM.CHAINIK FAQ
--------------------------------------------------------------------------------
Содержание:
1. Покажите маленькую программку типа 'Hello, world!'
2. А как ее запустить (слинковать, асссемблировать)?
3. А где можно взять tasm и tlink?
4. Что такое PSP?
5. Где хранится командная строка и как ее получить?
6. Как узнать полный путь к запущенной пpогpамме из нее самой?
7. Что такое прерывание и как оно работает?
8. Что такое вектор прерывания?
9. А как можно сгенерировать звук?
10. Что лучше - стандартные или упрощенные директивы определения сегментов?
11. Для чего нужна команда LEA. То же самое может и OFFSET, да и Tasm
заменяет LEA на MOV...OFFSET.
12. Откуда программа узнает адрес сегмента? После компиляции стоит mov ax,1.
13. Как сделать COM с отладочной информацией, понимаемой TD ?
14. Hе получается! COM есть, TDS есть, а TD отладочную информацию не
видит: "Program has no symbol table"
15. Как расчитать количество памяти, необходимое для резидента?
16. Hе могу запустить дочернюю задачу функцией 4Bh
17. Hе выделяется память по функции 48h
18. Да вроде все есть, почему не выделяет-то?
19. Как сжать блок памяти, занимаемый программой?
20. А что за команда такая rdtsc?
21. И еще, расскажите русским языком, что такое рекурсия (никогда не
сталкивался!)?
22. Расскажите про сопроцессор, как его использовать?
23. Что делать, если "Relative jump out of range"?
24. А какие-нибудь ссылки в интернете?
25. А что такое CMOS и как с ней работать?
26. Что делать, если метки одинаковые?
27. Как вывести число в шестнадцатеричном виде?
28. Как слинковать драйвер устройства?
last. А как это ... сделать?


Ответ отправлен: 20.07.2002, 09:38
Отправитель: Александр


Отвечает Guess Who

Доброе время суток, _nod_!
Эта функция возвращает скан-код в AH, а в AL возвращает код ASCII нажатой клавиши.
Как вывести число в шестнадцатиричной форме из регистра, так это пользуйся пожалуйста поиском, тут уже столько раз это было!
Код, на самом деле, очень простой.


Ответ отправлен: 17.07.2002, 22:42
Отправитель: Guess Who


Отвечает masquer

Добрый день, _nod_!
Преобразуй hex 2 string, затем выводи.

Ответ отправлен: 17.07.2002, 23:14
Отправитель: masquer


Отвечает Shal

Добрый день, _nod_!
Берешь и выводишь.
xchg ah,al
В al число из двух цифер. Выводишь сначала первую(сдвиг), затем вторую(обнуление).
int 29h-вывод символа на экран из al.
Учти, что цифрой может быть и буква(a,b,c,d,e,f).
Если, не понятно, то пиши...shal@programmer.net

Ответ отправлен: 18.07.2002, 19:10
Отправитель: Shal


 Вопрос № 755

Привет вам, Эксперты!!
У меня проблема: Tasm 4.1 считает за ошибку команды pusha и popa. Выводит: Illegial instruction for currently selected processor. Или дело в процессоре? Команды push (pop) и pushf (popf) воспринимает нормально. В чем проблема?
С уважением, _nod_



Вопрос отправлен: 17.07.2002, 22:04
Отправитель: _nod_

[Следующий вопрос >>] [Список вопросов]

Отвечает ASMодей

Доброе время суток, _nod_!
Команды PUSHA и POPA впервые появились в процессорах 80186,
а так как ассемблер по умолчанию использует команды
процессора 8086, то понятно что он не может использовать
PUSHA и POPA. Для использования этих команд нужно перед
ними поставить директиву .186, которая разрешит ассемблеру
использовать команды процессора 80186.


Ответ отправлен: 18.07.2002, 10:04
Отправитель: ASMодей


Отвечает Gibbel

Добрый день, _nod_!
Здесь уже тысячу раз об этом писалось. Задай процессор, поддерживающий эту команду. Например так:

Приложение:

Ответ отправлен: 18.07.2002, 10:45
Отправитель: Gibbel


Отвечает Топор

Здравствуйте, _nod_!
Скорее всего, ты забыл поставить директиву набора команд процессора, по умолчанию действует .8086. Ставь .386.


Ответ отправлен: 18.07.2002, 08:33
Отправитель: Топор


Отвечает Beeblebrox

Приветствую Вас, _nod_!
В первой же строке программы напиши .286

Ответ отправлен: 18.07.2002, 10:47
Отправитель: Beeblebrox


Отвечает Igoryk

Доброе время суток, _nod_!
Чтобы использовать команды popa и pusha. Нужно поставить в начало программы (после .model tiny) - .186.

Ответ отправлен: 18.07.2002, 10:48
Отправитель: Igoryk


Отвечает Guess Who

Здравствуйте, _nod_!
Эти команды появились начиная с 80186 процессора, делайте выводы!


Ответ отправлен: 17.07.2002, 22:38
Отправитель: Guess Who


Отвечает masquer

Здравствуйте, _nod_!
Поставь .286 вначале

Ответ отправлен: 17.07.2002, 23:16
Отправитель: masquer


Отвечает Dron

Доброе время суток, _nod_!
Дело в том что tasm по умолчанию предполагает что тип процессора равен 8086... а в 8086 действительно нет команды pusha/popa.
Чтобы проблема разрешилась, в начале программы поставь
.286


Ответ отправлен: 18.07.2002, 13:52
Отправитель: Dron


Отвечает kvINT

Здравствуйте, _nod_!
Дело не в процессоре, а в том, что эти инструкции поддерживаются, начиная, по-моему с 386. Соответственно, поставь директиву .386 или выше.

Ответ отправлен: 18.07.2002, 14:55
Отправитель: kvINT


Отвечает Shal

Доброе время суток, _nod_!
Да! Дело в проце. Нужно после .code поставить директиву .386.


Ответ отправлен: 18.07.2002, 19:09
Отправитель: Shal


Отвечает Pablo

Добрый день, _nod_!
Ну, я думаю как тебе уже тут ответили, pusha и popa это команды введены начиная с 486 процессора.
Для модели flat они имеют вид pushad и popad, а для остальных как ты и написал! Ну вообще и соотвестсвенную разрядность 32 и 16 бит.


Ответ отправлен: 18.07.2002, 20:15
Отправитель: Pablo


 Вопрос № 756

Где взять инфу о программировании Видеокарт в protected mode с целью установить режимы высокого разрешения. Есть ли стандарты на прямое программрование портов или только VESA int 10h extension. Где взять доку на VESA или VESA это херня? Буду рад посмотреть на Ваш код, к-рый делает то о чем я спрашиваю



Вопрос отправлен: 17.07.2002, 23:21
Отправитель: Joker (jokeridze@tele-kom.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Добрый день, Joker!
Насчет портов - у каждого производителя они свои и просто так такую информацию не достанешь. Доки на vesa.org. Кода нет.

Ответ отправлен: 17.07.2002, 23:59
Отправитель: masquer


 Вопрос № 757

Бодрое время суток, господа эксперты!
В программе встретился такой код:
mov bx, dx
and bx, 8
shl bx, 1
shl bx, 1
shl bx, 1
or bx, 2
Для чего это надо было делать? Ведь можно и так:
shl bx, 3
Понятно, что это не от балды, есть какая-то тонкость. Какая?
Спасибо.



Вопрос отправлен: 18.07.2002, 03:48
Отправитель: Lelik (mitrosha@mtu-net.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Добрый день, Lelik!
Скорее всего, это код какой-нибудь старой программки, которая работала еще на проце 8086/8088... А в них команды сдвига на непосредственное значение не было. Поэтому приходилось писать несколько раз инструкцию shl(r) reg, 1

Ответ отправлен: 18.07.2002, 10:46
Отправитель: Ayl


Отвечает ASMодей

Доброе время суток, Lelik!
Скорее всего это сделано для того, чтобы данный код мог
выполняться на процессоре 8086, где такие команды могли
сдвигать операнд только на один разряд.


Ответ отправлен: 18.07.2002, 10:05
Отправитель: ASMодей


Отвечает masquer

Доброе время суток, Lelik!
Это для совместимости сделано. Не все поцессоры понимают shl bx, 3
Для проц. ниже 286 нужно было так писать:
mov cl, 3
shl bx, cl

Ответ отправлен: 18.07.2002, 08:13
Отправитель: masquer


Отвечает Gibbel

Добрый день, Lelik!
Дык, не все процы поддерживают shl reg,const если const отличается от 1...

Ответ отправлен: 18.07.2002, 10:48
Отправитель: Gibbel


Отвечает Beeblebrox

Приветствую Вас, Lelik!
shl bx,3 не будет работать на 8086,8088 процессорах. Нет там такой команды

Ответ отправлен: 18.07.2002, 10:55
Отправитель: Beeblebrox


Отвечает Broken Sword

Здравствуйте, Lelik!
"тонкость" заключается в том, что если написать shl bx,3 без .186 вначале (как минимум 186), то компиль скомпилит в три shl bx,1. Отсюдава вывод: на 8086 максимум, что стояло справа в сдвиговых командах - это единица.
Кстати, аналогичная ситуация наблюдается и при "push число". Попробуй сделать "push число" без .186.
Так что ТАСМ молодец впринципе - полностью эмулирует то, что указано.


Ответ отправлен: 18.07.2002, 11:30
Отправитель: Broken Sword


Отвечает Dron

Добрый день, Lelik!
Нет, ты что-то путаешь...
and bx, 8 ; оставляет в bx только третий бит.
shl bx, 3 ; ну тут все ясно, только на 8086 это
; развернется в три команды.
or bx, 2 ; устанавливает второй бит в 1.
; третий теперь стал шестым.
И в результате в зависимости от содержимого dx получится либо 0x22 либо 0x02
Вот.


Ответ отправлен: 18.07.2002, 13:57
Отправитель: Dron


Отвечает Александр

Здравствуйте, Lelik!
Тонкость заключается в том, что для сдвига на 1 существует отдельный опкод. Т.е. при выполнении операции сдвига регистра на 1 обращений к памяти не происходит, и всё получается очень быстро. К тому же в старых процессорах для сдвига более чем на 1 необходимо было использовать инструкцию shl bx, cl Причём перед этим необходимо было записать величину сдвига в CL. Вот и все обоснования. Оптимизация-с.


Ответ отправлен: 18.07.2002, 18:48
Отправитель: Александр


Отвечает Shal

Добрый день, Lelik!
shl bx,3 в отладчике выглядит сл.образом:
shl bx,1
shl bx,1
shl bx,1.


Ответ отправлен: 18.07.2002, 19:09
Отправитель: Shal


 Вопрос № 760

ИнтЛист Ральфа Брауна конечно впечетляет, вот только, это куча неструктурированой инфы 8( Качал я его с CS.CMU.EDU Файл combine.com работать отказывается (может я просто делаю с ним что-то не то), говорит что все компоненты листа должны быть, а у меня файл interrup.r последний 8(



Вопрос отправлен: 18.07.2002, 06:35
Отправитель: Deadcat (Deadcat777@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Beeblebrox

Здравствуйте, Deadcat!
Я пользуюсь этой инфой прямо в том виде, как она есть, и меня это не напрягает. Хотя где-то в инете я видел html-версию.

Ответ отправлен: 18.07.2002, 11:19
Отправитель: Beeblebrox


Отвечает Broken Sword

Добрый день, Deadcat!
не оттудава качаешь - нада отсюдова: http://www.pobox.com/~ralf
должны быть следующие файлы -
inter61 (a-f) - всего 6 шт.
rbpci
hc
dwint
скачай это все (или проверь все ли они у тебя есть), дальше пиши мне разберемся

Ответ отправлен: 18.07.2002, 11:30
Отправитель: Broken Sword


Отвечает Shal

Здравствуйте, Deadcat!
У меня все нормально! Все работает.


Ответ отправлен: 18.07.2002, 19:09
Отправитель: Shal


Отвечает Александр

Приветствую Вас, Deadcat!
У меня в Interrupt List'е был combine.bat, а не combine.com да и для того, чтобы слить все файлы в 1 надо просто набрать команду copy interrup.a + interrup.b + ... + interrup.r interrup.lst или подредактировать bat - файл, стерев лишние буковки. Вот и всё.


Ответ отправлен: 22.07.2002, 07:16
Отправитель: Александр


 Вопрос № 761

Поставил софтайс из драйверстудии 2.5. Стоит. Работает. Единственная (пока;) проблема, при установке bpx ничего не происходит. (только файл Winice.brk появился)
пишу
bpx getwindowtexta
он её съедает всё ок.(символы загружены)
я понимаю, что при вызове этой функции должно появляться окно SI и дальше уж заниматься. Написал специально прожку:
Dim str As String * 255
GetWindowText Text1.hwnd, str, 255
SetWindowText Text2.hwnd, str
Она работает, айса нету:( Вспомнил, что у кого-то была такая проблема и решилась очень просто. Кто-то так небрежно ответил, как о чём-то само-собой разумеющемся, но найти этого ответа не смог.
Помогите пожалуйста.
В строке инит винайс.дат только x;



Вопрос отправлен: 18.07.2002, 08:46
Отправитель: Дмитрий

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Доброе время суток, Дмитрий!
Попробуй bpx getwindowtextw написать, если не ловит - значит она так явно не вызывается.

Ответ отправлен: 18.07.2002, 08:54
Отправитель: masquer


Отвечает Broken Sword

Здравствуйте, Дмитрий!
щас уже не уверен, но для SI getwindowtextA и getwindowtext (без А) - две большие разницы

Ответ отправлен: 22.07.2002, 08:58
Отправитель: Broken Sword


 Вопрос № 762

Добрый день, господа эксперты.
У меня тут возникла проблема с защищенным режимом.
Почему, как только я устанавливаю размер сегмента Code16 в
соответствующем дескрипторе, програма отказывается выходить
в DOS и виснет? Причем для остальных сегментов размер
можно устанавливать - все работает.
Я предположил, что при возврате в реальный режим процессор
вешается из-за того, что размер сегмента оказывается не
равным 0FFFFh, но сразу после выхода в реальный режим,
я перезагружаю регистр CS так что все должно работать.
PS. Та же проблема возникает и при установке размера
сегмента дескриптора disp, который я использую для вывода
сообщения на экран в защищенном режиме.
PPS. Эта программа сделана на основе примера из Зубкова,
но у него размеры сегментов были максимальными и
все работало.


Приложение:


Вопрос отправлен: 18.07.2002, 10:01
Отправитель: Eugene

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Доброе время суток, Eugene!
В официозном мануале Интела по пунктам расписаны ВСЕ необходимые дейсвтия для перехода из PM обратно в RM. Так вот, третьим пунктом идет следующее:
3. Transfer program control to a readable segment that has a limit of 64 Kbytes (0FFFFh). This operation loads the CS register with the segment limit required in real-adress mode
Причем, манипуляции с CR0 идут уже шестым пунктом, а jmp - седьмым
поэтому на момент манипуляций с CR0 лимит в дескрипторе, селектор которого в CS ДОЛЖЕН быть равен FFFF и ничему больше.

Ответ отправлен: 18.07.2002, 11:30
Отправитель: Broken Sword


 Вопрос № 763

Товарищи эксперты!!!
Можно ли отправлять ответы по мылу??? И стоит ли?



Вопрос отправлен: 18.07.2002, 11:12
Отправитель: ALastorZ (alastorz@mtu-net.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Топор

Здравствуйте, ALastorZ!
Можно, но они не учтутся в рассылке, соответственно и баллов не будет.


Ответ отправлен: 18.07.2002, 13:50
Отправитель: Топор


Отвечает Александр

Приветствую Вас, ALastorZ!
Пока низзя. Но если кто-нибудь напишет такую обработку, то об этом будет столько воплей радости.
Администраторы. Ау. Я опять прошу вас выслать мне check.cgi Очень нужно для отладочных целей.


Ответ отправлен: 18.07.2002, 18:47
Отправитель: Александр


 Вопрос № 766

Драсьте, эксперты асьма. Я СтРаШнО извиняюсь, так как мой вапрос совсем не в тему. Но это потому, что я уже не знаю, где мне его спросить - нигде мне толком ничего не могут сказать. Так что ВЫ у меня - последняя надежда :(
Тут такая трабля: при установке на некоторых машинах под вин2к некоторых прог с MSI инсталлером наблюдается обшибка 1311: файл не найден или недоступен. Например, для оффиса - office1.cab. Стопроцентно известно: файл читаем. Более того, проги ставились раныше без траблем. Если слить на винт, то оттуда тоже без траблем. Вот только фишка в том, что ставить сии проги-то НАДО нам с сидюков, и сносить винду тоже не дело. Бьёмся уже с месяц, но кроме частных решений общего не нашли. Трабли замечены на MSOffice, Autocad, Promt. Если есть чем помочь напишите ПОЖАЛУЙСТА!!!



Вопрос отправлен: 18.07.2002, 20:16
Отправитель: Frank (fqc@mksat.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Portnov

Здравствуйте, Frank!
А вы уверены, что дело не в сидюке? Такое очень даже может быть. Вот у меня есть диск, у меня с ним все нормально, приношу к знакомому - некоторые директории не читаются совсем, другие глючат. Но у меня сидюк 40х, а у него - 8х. Так что проверьте.
С уважением, Portnov.

Ответ отправлен: 19.07.2002, 17:48
Отправитель: Portnov


Отвечает masquer

Здравствуйте, Frank!
Проверь, есть ли в системе файлы instmsia.exe, instmsiw.exe

Ответ отправлен: 18.07.2002, 20:42
Отправитель: masquer


 Вопрос № 767

Получилось как вы говорили сохранить в ХТМЛ, а потом из ЭКСПЛОРЕРА отправить!
У меня бровсер Мозилла и из него не отправляет ответ!
Благодарю за ответы!



Вопрос отправлен: 18.07.2002, 20:20
Отправитель: Pablo

[Следующий вопрос >>] [Список вопросов]

Отвечает Kalashnikoff

Добрый день, Pablo!
Как я уже говорил, многие баузеры (кроме IE) работают НЕКОРРЕКТНО с формами. Пользуйтесь IE 4.0+, причем не только на RusFAQ.ru, но и на других подобных сайтах.

Ответ отправлен: 18.07.2002, 22:05
Отправитель: Kalashnikoff


Отвечает Александр

Добрый день, Pablo!
Если ты это читаешь, то отправка произведена успешно из Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.0rc2) Gecko/20020510

Ответ отправлен: 18.07.2002, 22:54
Отправитель: Александр


 Вопрос № 768

Здравствуйте уважаемые эксперты! Имеется программа писаная на Дельфи (для проведения тестирования), вся проблема в том что на время работы она должна получать все события от клавиатуры не давая их обработать другим приложениям(включая Ctrl+Alt+Del и т.п.), причем это должно работать под NT и Win2k, средствами делфи у меня это не получилось, пробовал вешать Hook, но и он под Win2к отказался работать. И тут я подумал, может мне кто-нибудь подскажет как написать програмульку на Асме кторая перехватывала бы события и отсылала бы моему приложению. Может свои дрова надо писать? Но я этого еще неумею, может у кого инфа есть?. Приветствуются все виды советов: линки, сырцы или идеи как это можно реализовать. Можно на мыло: alche@mail.ru.Помогите pls, прогу скоро сдавать надо:(. Заранее благодарен.



Вопрос отправлен: 18.07.2002, 20:38
Отправитель: Alche (alche@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Здравствуйте, Alche!
NT раньше перехватит событие клавиатуры, чем твой хук. Качай DDK, там был пример работы с клавиатурой.

Ответ отправлен: 18.07.2002, 21:19
Отправитель: masquer



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (43)
C / C++ (32)
Perl (9)
Delphi (17)
Pascal (30)
Basic / VBA (12)
Java / JavaScript (8)
PHP (6)
MySQL / MSSQL (10)
Пользователю
Windows 95/98/Me (43)
Windows NT/2000/XP (34)
"Железо" (35)
Поиск информации (17)
Администратору
Windows NT/2000/XP (18)
Linux / Unix (16)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (7)
КоАП (2)

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




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное