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

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


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

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

Выпуск № 462
от 08.01.2003, 19:50

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


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

Broken Sword
Статус: Профессиональный
Общий рейтинг: 127.42
URL: моя рассылка по Protected Mode
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 139.47
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 113.88
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
Sensey
Статус: Профессиональный
Общий рейтинг: 121.54
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 д.
[Подробней >>]
Igoryk
Статус: Доверительный
Общий рейтинг: 136.5
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.14
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 146.96
[Подробней >>]
Andrew Vext
Статус: Опытный
Общий рейтинг: 107.25
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.38
[Подробней >>]
 
igorash
Статус: Профессиональный
Общий рейтинг: 114.66
Телефон: 8(903)251-86-01
[Подробней >>]
Max
Статус: Доверительный
Общий рейтинг: 105.38
[Подробней >>]
Traish
Статус: Опытный
Общий рейтинг: 126.1
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 118.11
[Подробней >>]
Eugene
Статус: Опытный
Общий рейтинг: 108.57
URL: мощный файловый архив
[Подробней >>]


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

Вопрос № 2322. Здравствуйте Broken Sword! Так я ж и говорю что выставил Universal Video Driver. Lines n/Width n - э... (ответов: 1)
Вопрос № 2323. Доброе время суток, Эксперты. У меня вопрос! Устанавливаю с чистого листа Виндоуз 98 SE. Устанавлива... (ответов: 5)
Вопрос № 2324. Доброго времени суток Эксперты Поздравляю всех новогодними праздниками, желаю всего и много :) У мен... (ответов: 1)
Вопрос № 2325. _Зачем_ SIB(Scale-Index-Base)-байт нужен в командах intell-овских процессоров?... (ответов: 3)
Вопрос № 2326. Здравствуйте, Bob Johnson! Я по поводу вопроса № 2299 Не сочтите за наглость, но не могли бы вы выс... (ответов: 1)
Вопрос № 2329. Здравствуйте Уважаемый Andrew Vext! Извиняюсь за то, что я вас назвал подписчиком, на знал. А то что... (ответов: 1)
Вопрос № 2330. Доброе время суток Bob Johnson! Указываю->http://netlib.wallst.ru/ Добрый человек скоро закончит раб... (ответов: 1)
Вопрос № 2331. Привет всем!!! Наконец-то это случилось и я создал свою страничку, где разместил самые часто спрашив... (ответов: 3)
Вопрос № 2332. Здравствуйте, вот я всё мучаюсь с коммандной строкой сом программы... вот моё творение, я его оптими... (ответов: 6)
Вопрос № 2333. Ребят, может кто-нибудь писал клавиатурную переключалку под Win32 на Асме. От проги необходимо тольк... (ответов: 3)

Вопросов: 10, ответов: 25


 Вопрос № 2322

Здравствуйте Broken Sword!
Так я ж и говорю что выставил Universal Video Driver.
Lines n/Width n - это конечно просто супер, но буковки
всё равно маленькие. А есть ли что-нибудь наподобие
Font?



Вопрос отправлен: 03.01.2003, 04:08
Отправитель: Начинающий ламер

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

Отвечает Broken Sword

Добрый день, Начинающий ламер!
наподобие FONT есть только
SET FONT n
(n = 1...3)
да, и кстати для lines и width не забудь предварительно выставить
SET MAXIMIZE ON

Ответ отправлен: 03.01.2003, 18:18
Отправитель: Broken Sword


 Вопрос № 2323

Доброе время суток, Эксперты.
У меня вопрос!
Устанавливаю с чистого листа Виндоуз 98 SE.
Устанавливаю дрова.
Проходит время. И комп начинает глючить.
(Проявление глюка: Глюк при работе с интернет эксплоером.
При просмотре веб-страниц (И локально, И ...), когда прокручиваю скролл.
Комп ни с того, ни с сего начинает глючить. Курсор не поддается управлению
(Хаотично движется), А Изображение шатает (ВВерх - Вниз)
Я уже много раз переставлял ОС.
Подскажите, плиз, в чем может быть дело.
Заранее спасибо за ответ.



Вопрос отправлен: 03.01.2003, 11:15
Отправитель: Читатель с ДВ.

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

Отвечает Maverick

Здравствуйте, Читатель с ДВ.!
Трудно сказать не видя компа. Попробуй проверься на виря, мож он шалит.


Ответ отправлен: 03.01.2003, 14:38
Отправитель: Maverick


Отвечает baldr

Приветствую Вас, Читатель с ДВ.!
90% - мышка повредилась. Проводок, наверное, перетерся... Или просто почистить надо...
Попробуй проводок осторожно подергать, держа мышь неподвижно... Если курсор дергается,
значит - провод и есть... Обычно они перетираются в том месте, где провод входит в мышь...
У меня такое было, провод я чинил. Хотя и геморройно это!


Ответ отправлен: 03.01.2003, 23:19
Отправитель: baldr


Отвечает Sensey

Добрый день, Читатель с ДВ.!
А причем здесь Асм?
Это в железо или в Пользование Виндой...
Вариант - попробуй другую мышь - так бывает, когда шнурок почти перетерся...


Ответ отправлен: 03.01.2003, 11:35
Отправитель: Sensey


Отвечает Igoryk

Приветствую Вас, Читатель с ДВ.!
Одно из двух: либо вирусы, либо пора менять мышку. Просто иногда провод у основания просто рвется. Визуально это не заметно. И еще попробуй в настройках драйвера мыши сделать по-моему стоп-биты (я не уверен, но в настройках найти легко) и изменить на значение "Отсутствует". Работает - по опыту знаю.

Ответ отправлен: 03.01.2003, 12:03
Отправитель: Igoryk


Отвечает Bob Johnson

Здравствуйте, Читатель с ДВ.!
Тебе нужно дизассемблировать драйвера от видеокарты (а, кстати - какая она у тебя?), распечатать это, потом попросить исходники драйверов у фирмы-производителя и покомандно сравнивать, отмечая на глаз потеренную функциональность.


Ответ отправлен: 04.01.2003, 15:11
Отправитель: Bob Johnson


 Вопрос № 2324

Доброго времени суток Эксперты
Поздравляю всех новогодними праздниками, желаю всего и много :)
У меня такой вопрос:
Как получить хендл CDrom ? У меня никак не выходит, нашел инфу что можно его получить функцией CreateFile ("\.C:",0,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL), но не катит.
При ассемблировании выпрыгивает ошибка "missing operator in expression" я как понимаю не хватает какого то параметра.
К сожалению дисков с MSDN у меня нема :( а лезть смотреть в Web проблемматично, инет настолько паршиво ездит ... :(
Попробую вот сейчас вам вопрос отправить.
Кому не сложно, подскажите как решить задачу с хендлом, может есть ещё какая нибудь функция?
Зарание спасибо.



Вопрос отправлен: 03.01.2003, 11:30
Отправитель: Евгений

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

Отвечает masquer

Здравствуйте, Евгений!
Вот пример из MSDN
hDevice = CreateFile("\\\\.\\PhysicalDrive0", \\ drive to open
0, \\ don't need any access to the drive
FILE_SHARE_READ | FILE_SHARE_WRITE, \\ share mode
NULL, \\ default security attributes
OPEN_EXISTING, \\ disposition
0, \\ file attributes
NULL); \\ don't copy any file's attributes

Естественно, все это работает ТОЛЬКО в NT/2K/XP

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


 Вопрос № 2325

_Зачем_ SIB(Scale-Index-Base)-байт нужен в командах intell-овских процессоров?



Вопрос отправлен: 03.01.2003, 19:40
Отправитель: Hronитель

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

Отвечает Bob Johnson

Добрый день, Hronитель!
Чтобы можно было адресоваться удобнее. Intel позволяет использовать в адресе три части (или две, или одну, любую): индекс, базу и смещение. Смещение - это непосредственный адрес. База - это регистр, который содержит адрес. Его значение складывается со смещением. Индекс - это другой регистр, значение которого также складывается со всем вышеперечисленным, но, к тому же, может быть умножено на 1, 2, 4 или 8. Итого получаем:
addr = offset + base + index*{1, 2, 4, 8}
Это очень удобно - представь, что у тебя есть в памяти массив адресов каких-либо структур, тогда для получения его элемента хватит только одной команды:
eax = номер элемента
ebx = адрес массива
mov ecx, [ebx + eax*4]
А вот для кодирования всех таких видов адресации и нужен байт SIB.


Ответ отправлен: 05.01.2003, 13:07
Отправитель: Bob Johnson


Отвечает Andrew Vext

Доброе время суток, Hronитель!
SIB - 1 байт расширение ModR/M для 32-битной адресации
биты 7 и 6 - S (коэффициент масштабирования) 00 - не используется; 01 - умножение на 2; 10 - умножение на 4; 11 - умножение на 8.
биты 5, 4, 3 - I (индексный регистр, то есть тот, который умножается на S) 000 - EAX; 001 - ECX; 010 - EDX; 011 - EBX; 100 - индекса нет; 101 - EBP; 110 - ESI; 111 - EDI
биты 2, 1, 0 - B (регистр базы) 000 - EAX; 001 - ECX; 010 - EDX; 011 - EBX; 100 - ESP; 101 - если MOD=01 или 10, то EBP, если MOD=00 - базы нет; 110 - ESI; 111 - EDI.


Ответ отправлен: 04.01.2003, 13:32
Отправитель: Andrew Vext


Отвечает Ayl

Добрый день, Hronитель!
Нужен для формирования команд в некоторых режимах адресации. Например, базово-индексная с масштабированием. Или для разрешения косвенной адресации с любым регистром.
Просто в 386-м процессоре появились новые команды и режимы адресации, поэтому пришлось вводить новый постбайт для команды.


Ответ отправлен: 04.01.2003, 15:18
Отправитель: Ayl


 Вопрос № 2326

Здравствуйте, Bob Johnson!
Я по поводу вопроса № 2299
Не сочтите за наглость, но не могли бы вы выслать мне тоже свой курсовик и звонилку?



Вопрос отправлен: 03.01.2003, 21:09
Отправитель: Davv (aderadon@mail.ru)

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

Отвечает Bob Johnson

Доброе время суток, Davv!
Опа... А вот теперь я все-таки сделал свою страничку (и даже вопрос послал на Rusfaq, но только сегодня, поэтому читатели его еще не получили). Так что скачай с нее:
http://bobjohnson.nm.ru
Звонилки там пока нет, но скоро будет :-).


Ответ отправлен: 05.01.2003, 13:07
Отправитель: Bob Johnson


 Вопрос № 2329

Здравствуйте Уважаемый Andrew Vext!
Извиняюсь за то, что я вас назвал подписчиком, на знал.
А то что вы делаете-это хорошо, так как иногда не всегда имеется возможность приобрести печатные издания.
А если не сикрет, с какого интереса вы это делаете?
Спасибо за то, что вы делаете!
ЗЫ: Рис 14 и 15 не отображаются.



Вопрос отправлен: 04.01.2003, 09:34
Отправитель: Рифат

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

Отвечает Andrew Vext

Добрый день, Рифат!
Не секрет. На основной работе я занимаюсь разработкой софта для конвертации отсканированых печатных изданий в различные форматы (chm, pdf, html, djvu и т.д.) Вы видите на сайте результаты тестирования софта (просто стереть жалко - вот и выкладываю).
ЗЫ Рис 14 и 15 поправлены.

Ответ отправлен: 04.01.2003, 11:49
Отправитель: Andrew Vext


 Вопрос № 2330

Доброе время суток Bob Johnson!
Указываю->http://netlib.wallst.ru/
Добрый человек скоро закончит работу.
Спасибо ему за ЭТО!



Вопрос отправлен: 04.01.2003, 09:39
Отправитель: ЧЧЧЧЧ

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

Отвечает Bob Johnson

Добрый день, ЧЧЧЧЧ!
Благодарю. Это, как я припоминаю, ссылка, где выкладывают книгу Зубкова.


Ответ отправлен: 05.01.2003, 13:08
Отправитель: Bob Johnson


 Вопрос № 2331

Привет всем!!!
Наконец-то это случилось и я создал свою страничку, где разместил самые часто спрашиваемые у меня файлы.
Напоминаю, что это лабораторные работы, "чижик" на флопи-дисководе и небольшое описание, как самому создать драйвер для 9х.
Поэтому прошу заходить:
http://bobjohnson.nm.ru
Удачи и с Новым Годом!!!



Вопрос отправлен: 04.01.2003, 16:42
Отправитель: Bob Johnson (BobJohn@Newmail.ru)

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

Отвечает igorash

Доброе время суток, Bob Johnson!
Wow, неужели вопросов в 2 раза меньше станет?? ;)

Ответ отправлен: 04.01.2003, 17:40
Отправитель: igorash


Отвечает Igoryk

Доброе время суток, Bob Johnson!
Вопросов 100 наверное отпадет. Теперь будут задавать вопросы, а EXперты будут посылать на сайт. :) Сайт хороший. Недостаток: долго грузится.

Ответ отправлен: 04.01.2003, 17:59
Отправитель: Igoryk


Отвечает masquer

Добрый день, Bob Johnson!
Ой на скриптах все как некрасиво в опере смотрится, особенно marquee :(
Теперь главное чтобы трафик nm выдержал :)

Ответ отправлен: 05.01.2003, 15:07
Отправитель: masquer


 Вопрос № 2332

Здравствуйте, вот я всё мучаюсь с коммандной строкой сом программы... вот моё творение, я его оптимизировал как мог, может быть можно его ещё оптимизировать ?
#####################################################
;fasm prog.asm prog.com
org 0x100
movsx di, byte [0x80]
add di, 0x0081
mov byte [di], '$'
mov dx, 0x0081
mov ah, 0x09
int 0x21
int 0x20
####################################################
и тут у меня появилась новая идея, вот она
####################################################
org 0x100
movsx cx, byte [0x80]
mov di, buffer
add di, cx
mov byte [di], '$'
mov si, 0x82
mov di, buffer
rep movsb
mov ah, 0x09
mov dx, buffer
int 0x21
int 0x20
buffer db ?
###############################################
вроде тут всё работает, но тоже кажется не оптимизированным... а основной вопрос вот в чём:
код который будет располагаться за меткой буффер затрётся ?
если да, то как зарезервировать для него место ?
я делал так, но тогда что-то глючит...допустим резервируем 10 байт:
##################################################
org 0x100
mov cx, 10
mov si, 0x82
mov di, buffer
rep movsb
mov ah, 0x09
mov dx, buffer
int 0x21
int 0x20
buffer rb 10
stop db '$'
################################################
он почемуто помнит предыдущие символы...
Вообще дальнейшей целью всего этого, будет написание процедуры, которая создаст буффер по длине командной строки и скопирует её туда...
и попутно у меня возникла пара вопросов:
1. почему нельзя использовать для адресации памяти любые регистры, например ах ?
строка mov byte [ax], '$' ; выдаёт ошибку :
error: reserved word used as symbol.
или illegal instruction....(fasm)
2. почему нельзя mov memory, memory ?
mov [x1], [x2]
x1 db ?
x2 db 1
####################################################
заранее спасибо !



Вопрос отправлен: 04.01.2003, 17:31
Отправитель: spaces (s-p-a-c-e-s@narod.ru)

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

Отвечает Bob Johnson

Добрый день, spaces!
1. Твои проблемы начнутся, когда в командной строке появится бакс ($). Сам понимаешь...
2. Ты не знаешь, сколько займет у тебя ком строка, поэтому и байт не знаешь, сколько надо. ты мог бы использовать динамическое выделение памяти, но тут это неэффективно. Обычно выделяют столько памяти, чтобы хватило для строки максимальной длины (а это - около 128 байт).
3. Адресоваться по ax нельзя. Так уж придумали 8086. Зато начиная с 80386 можно адресоваться по eax. Если уж совсем не хватает регистров - используй их:
xor eax, eax; eax = 0
...
mov ax, offset ...
mov [eax], cx
mov [eax + 5], dx
...
4. mov [x1], [x2] - это уже слишком жирно. Тогда может еще и так бы сделать:
mov [[eax] + [ebx*7] + offset my_label], eax + [[ebx]]]???
Всегда есть предел возможностям процессора.


Ответ отправлен: 05.01.2003, 13:08
Отправитель: Bob Johnson


Отвечает Max

Добрый день, spaces!
1 есть некие правила или режимы адресации.
Адресовать можно только через регистры BX,DI,SI,BP остальные регистры адресовать память немогут.
2 Представь себе , что можно было бы сделать так
mov [bx],[di]
тогда навязывается один вопрос - а нахера тогда ваще нам нужен процессор ???!!!!
Ты не можешь переслать ни одного байта из памяти в память минуя проц.



Ответ отправлен: 04.01.2003, 19:57
Отправитель: Max


Отвечает Ayl

Здравствуйте, spaces!
Начну с конца. Почему нельзя - это вопрос к разработчикам процессора. Возможно, просто нехватило разрядов, возможно, фантазии. В общем, нельзя. Нет таких команд. Для 386 процессора и выше для косвенной адресации можно использовать любой 32-разрядный регистр. А 16-разрядные все равно нельзя.
Пересылка память-память допустима только для строковых команд. В других случаях требуется промежуточная запись в регистр. Причина - возможно, упрощение системы команд (в машинном представлении), возможно, ограничения по работе с памятью.
В Приложении см, как можно немного пооптимизировать.
Насчет буфера. Место под буфер можно отвести так:
buffer db N dup (?)
где N - размер буфера.
Либо выделять динамически во время работы программы.

Приложение:

Ответ отправлен: 04.01.2003, 18:16
Отправитель: Ayl


Отвечает Traish

Добрый день, spaces!
1. По поводу оптимизации. Я, кажется, советовал использовать movzx. Хотя movsx здесь, в принципе, делает тоже самое - распространяет 0 на свободные старшие разряды.
Если введешь больше символов, чем отвел под буфер - затрется то, что после него. Только кода в данном случае там нет.
2. Не все 16-разрядные регистры (в отличии от 32-разрядных) можно использовать при косвенной адресации.

Приложение:

Ответ отправлен: 04.01.2003, 20:04
Отправитель: Traish


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

Добрый день, spaces!
Вот первый вариант, слегка оптимизированный:
org 0x100
movzx di,byte [0x0080]
mov byte [di+0x81], '$'
mov dx, 0x0081
mov ah, 0x09
int 0x21
ret
Вот третий вариант без затирания и лишних символов:
org 0x100
mov si, 0x0082
movzx cx,byte [si-0x02]
mov di, buffer
mov dx,di
rep movsb
mov byte [di],'$'
mov ah, 0x09
int 0x21
ret
buffer rb 10
Теперь вопросы:
1. Да, с 16-разрядными регистрами такое не пройдет, но с
32-разрядными - запросто.
2. А вот это уже вопрос к Intel. Действительно во всех
процессорах этой компании присутствует такое ограничение.


Ответ отправлен: 04.01.2003, 20:09
Отправитель: ASMодей


Отвечает Eugene

Приветствую Вас, spaces!
1)Прооптимизировать можно вот так:
org 0x100
mov cl, byte [0x80]
mov bl, 1
mov dx, 0x0081
mov ah, 0x40
int 0x21
ret
Занимает 14 байт вместо прежних 21.
2)Код затрётся.
3)Конечно он будет помнить то, что там было. Чтобы этого не произошло, надо насильно инициализировать память нулями. Например так:
buffer: times 10 db 0
4) и 5) В силу архитектурных тонкостей строения процессора.

Ответ отправлен: 06.01.2003, 12:48
Отправитель: Eugene


 Вопрос № 2333

Ребят, может кто-нибудь писал клавиатурную переключалку под Win32 на Асме. От проги необходимо только переключение клавиатуры по CapsLock'y и висение в трее. Исходников не надо. Хочется поиметь такую прожку взамен стандартного Виндузового переключателя или имеющихся монстров на просторах Шаровар. Хочется маленькую, быструю, неглючную. :) Может у кто-нибудь напишет? Пиво, водка шоколад за мной. Все могу залить по почте. :)



Вопрос отправлен: 04.01.2003, 19:50
Отправитель: BuTbKA

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

Отвечает Bob Johnson

Здравствуйте, BuTbKA!
Знаешь, есть такая интересая прога, как punto switcher - она переключает клавиатуру в зависимости от того, что ты набираешь (исправляя при этом неправильный язык). Попробуй ее (кажется www.punto.com). Она как раз в трее висит и еще у нее много всяких возможностей. Занимает около 250 кб.


Ответ отправлен: 05.01.2003, 13:09
Отправитель: Bob Johnson


Отвечает masquer

Здравствуйте, BuTbKA!
Давай точное техзадание, глядишь, кто и возьмется. Тут делов на полчаса, если не сильно наворачивать.

Ответ отправлен: 05.01.2003, 15:30
Отправитель: masquer


Отвечает Igoryk

Здравствуйте, BuTbKA!
Есть у меня такая в разработке. Ты только напиши на почту igoryk@yandex.ru - правильно ли я понял, что если Caps Lock On, то допустим раскладка Ru, и наоброт. Или ты хочешь, чтобы при любом нажатии Caps Lock Менялась раскладка?

Ответ отправлен: 06.01.2003, 12:41
Отправитель: Igoryk



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (37)
C / C++ (29)
Perl (4)
Delphi (22)
Pascal (23)
Basic / VBA (11)
Java / JavaScript (7)
PHP (3)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (27)
"Железо" (33)
Поиск информации (16)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (16)
Юристу
Гражданское право (8)
Семейное право (5)
Трудовое право (4)
КоАП (3)

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




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

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


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

В избранное