Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 080 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-09-01
Вопрос №736
Экспертам.
Изучаю ассемблер только месяц и возник такой
небольшой вопросик.
Сделал рисунок. Затем захотел переместить его в центр.
Пришлось увеличивать координаты. Напр:
было
mov cx,3
после каждой подобной координаты добавил
add cx,number
Был ли более экономный способ?
Можно ли эти две команды записать одной строкой?
С уважением ...
Ответ
Здравствуйте, Alex12!
Дык сразу пиши mov cx,{3+number}, где вместо {3+n}- число. Странный какой-то вопрос... А может я его и не понял...
Отправил эксперт: DM
Эксперт отправил ответов (всего): 7
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №737
Экспертам.
Спасибо, ребята!
Вылечился. Второй был SCAM32.EXE.
Тогда в нагрузку еще вопрос (может кто знает).
При выключении комп проверяет диск А:
С чем это может быть связано?
С уважением ...
Ответ
Здравствуйте, Alex12!
Обычно это делает антивирус, чтобы проверить, есть ли в загрузочном секторе дискеты вирус. Т.е. чтобы не было "оставил дискету в драйве - загрузился - гипс". Но в твоём случае это может быть черти что...
Отправил эксперт: DM
Эксперт отправил ответов (всего): 8
Экспертная группа: Пользовательская работа с Windows
Вопрос №736
Экспертам.
Изучаю ассемблер только месяц и возник такой
небольшой вопросик.
Сделал рисунок. Затем захотел переместить его в центр.
Пришлось увеличивать координаты. Напр:
было
mov cx,3
после каждой подобной координаты добавил
add cx,number
Был ли более экономный способ?
Можно ли эти две команды записать одной строкой?
С уважением ...
Ответ
Здравствуйте, Alex12!
Чего то я не полностью втыкнулся в твой вопрос, но одно сказать точно могу:)
при рисовании не используй прерывание биос, так как это занимает много времени, копируй сразу в видеопамять, и перемещай соответственно, вот тогда получится действительно быстро.., ну а точнее по поводу твоего вопроса смогу сказать, если прогу увижу..
Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 58
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №730
Здравствуйте эксперты.
У меня такой вопрос: Как можно искать файлы не только в заданной папке, с помощью ф-ций 4Eh и 4Fh но и например в на диске C со всеми вложенными папками.
Ответ
Здравствуйте, Алексей!
Чувак, ты знаешь что есть рекурсия? Классика. (Коли не знаешь слушай сюда, пише процедуру ищущую файлы в нужном каталоге, после этого ищешь каталоги в данном каталоге, нашел - заходишь и выполняешь процедуру для данного каталога (типа рекурсия если не знаешь это когда ты процедура вызывается сама из себя).
Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 77
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №733
Привет коллеги!
Вопрос по Exsel
Есть два документа
Слышал, но не знаю как, что
Можно сравнить эти документы по столбцу А и ести ячейки в столбце А совпадают, то обновить соответствующие строки из второго документа
Для примера-обновление цен на комплектующие
Ответ
Здравствуйте, Sensey!
Попробуй слить документы в один.
Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 78
Экспертная группа: Пользовательская работа с Windows
Вопрос №737
Экспертам.
Спасибо, ребята!
Вылечился. Второй был SCAM32.EXE.
Тогда в нагрузку еще вопрос (может кто знает).
При выключении комп проверяет диск А:
С чем это может быть связано?
С уважением ...
Ответ
Здравствуйте, Alex12!
ХреНортон антивирус стоит?
Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 81
Экспертная группа: Пользовательская работа с Windows
Вопрос №737
Экспертам.
Спасибо, ребята!
Вылечился. Второй был SCAM32.EXE.
Тогда в нагрузку еще вопрос (может кто знает).
При выключении комп проверяет диск А:
С чем это может быть связано?
С уважением ...
Ответ
Здравствуйте, Alex12!
Раньше были дисководы на 40 и 80 дорожек. И, чтобы определить,
сколько дорожек поддерживает дисковод, BIOS пытается перейти на 80-ю
дорожку, а затем возвращает головку на нулевую.
Нынче, все дисководы поддерживают 80 дорожек и эта фича не требуется..
Чтобы её отключить смотри BIOS Setup..
Ищи что-нибудь вроде Bootup Floppy Seek. Должно быть Off.
Или, второй вариант, что BIOS ищет в первом флопе загрузочную дискету.
Это тоже последствия времён, когда не было ни винтов, ни загрузочных
CD-ROM'ов (и CD-ROM'ов вообще :( ).
Чтобы это отключить ищи либо First Boot Device, либо
Boot sequence в BIOS Setup.
Отправил эксперт: Nik
Эксперт отправил ответов (всего): 89
Экспертная группа: Пользовательская работа с Windows
Вопрос №739
Где трабл (см. программу)? Компилируется нормально. Из командной строки запускается тоже нормально. Если же запустить из FAR Manager'а писать можно будет только до Enter'а. Жмешь Enter и все! Система виснет НАМЕРТВО. Причем второй раз я резидент не запускаю (курсор перемещаю на другой файл).
Ответ
Здравствуйте, Snake!
Во-первых, ты забыл прерывания разрешить, вообще удивляюсь, как она даже запускалась, во-вторых намного эффективнее использовать для резидентов ком-проги, меньше в памяти места занимают, а в третьих лучше пользоваться прерываниями дос для определения адреса обработчика..
Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 59
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №738
Ну вот.. Опять я :-)
Вот какой вопрос: купил я себе TV-Tuner. Поставил драва,
перезагрузился и... "Программа msgsrv32 выполнила недопустимую
операцию и будет закрыта". Далее винды не грузятся.. Как я
понял, msgsrv32 инициализирует девайсы. (Винды 98 SE)
Так вот... Гружусь в Safe-моде, открывают список девайсов и...
у меня появилось 2 контроллЈра DMA, 4 контроллЈра ACPI IRQ Holding Steer, 3 винта (физически, он у меня один), 2 клавиатуры и 3 монитора (2 конфликтующих Default Monitor, и
не конфликтующий с ними Samsung SyncMaster 750s). После их
удаления и перезагрузки винды находят эти же девайсы в
полном объеме (см. выше). Переустановка не помогла. Попробовал
поставить WinME - не помогло :-(
А вот в Win2K всЈ работает идеально!
Единственно, иногда программа AverTV "выполняет недопустимую
операцию", но это происходит не раньше раза в неделю..
Система Pentium III, мамка Abit BE6-II, чипсет Intel 440BX..
Пробованые винды -> Win98 SE, WinME, Win2K.
TV Tuner - AverMedia TV Studio (PCI), видюха nVidia GeForce2 MX.
Может кто знает, чего с этим делать??
Или мне теперь до смерти сидеть под 2k ??
С уважением, эксперт Nik.
Ответ
Здравствуйте Nik! Мой ответ кому-то может показаться глупым и несколько неуместным, но раз вообще никто не отвечает, то я постараюсь помочь хоть чем-то.
1. Переткни свой TV-Tuner из одного PCI в другой; с видеокартой я подобным образом решил себе вопрос года два назад (она с VooDoo I хотела эээээ.... иметь сношения только когда первая была установлена в третий PCI, а вуда соответственно в первый) - такая композиция не вызывала никаких конфликтов и все было ОК.
2. Если первый метод не помог (80% что так и есть) зайди в BIOS, пошарься там, найди в меню PNP PCI что то типа Auto config и поставь его на мануал. Эта фича кода-то мне раздуплила мой ESS 1868 и у него наконец прорезало голосок.
3. Ближе к теме. Подобные расстройства у виндовоза (именно 98), и именно несколько мониторов, жестких дисков и т.п. наблюдались исключительно в версии, которая вышла раньше официальной на 2 месяца. Щас самая последняя что я встречал 4.2222а, проверь, может у тебя один из таких "эксклюзивных" 98 и стоял, хотя ты ясно написал SE...
4. Поедь на фирму и поменяй его на другой тюнер (бери с ФМ радио сразу), - пока не поздно!
5. А вообще то сиди ка ты на Win2k, а до смерти не выйдет по любому, т.к. вот-вот появиться Windows 2002...(хаха); вот будет у меня тачка чуть помощнее (памяти еще 128 хотя б добавлю) и я к тебе с удовольствием присоединюсь.
Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 119
Экспертная группа: Пользовательская работа с Windows
Вопрос №739
Где трабл (см. программу)? Компилируется нормально. Из командной строки запускается тоже нормально. Если же запустить из FAR Manager'а писать можно будет только до Enter'а. Жмешь Enter и все! Система виснет НАМЕРТВО. Причем второй раз я резидент не запускаю (курсор перемещаю на другой файл).
Ответ
Здравствуйте, Snake!
Да ты классик! Первое, на что я наткнулся - ты запрещаешь прерывания и их так и не восстанавливаешь. Да еще в бреду вызываешь. Я под виндами делал такое всего за 3 байта...
Второе: в old_int_21h пишешь вместо смещение-сегмент всё наоборот.
Замечания: стек великоват, при установке прерываний сохранять флаги вовсе не обязательно, зачем для резидента делать EXE-шник?
Программа прилагается.
Приложение:
Отправил эксперт: DM
Эксперт отправил ответов (всего): 9
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №742
Уважаемые эксперты, не могли бы мне подробнее рассказать об
логических операторах OR, AND,XOR. Я не понимаю куда приплюсовываются биты при OR и отнимаются при AND.
НАПРИМЕР вот в этих строчках:
mov ax,1010b
or ax,1111b
Теперь AX=1111b. Т.о. мы включили (установили) первые четыре бита.
ПО подробнее об том что ниже:
1 OR 1 = 1 ??????????
1 OR 0 = 1 ?????????
0 OR 0 = 0 ????????
Ответ
Здравствуйте, Speedy Gonsalez!
Просто запомни
Логическое И==>Если оба операнда истина то истина, иначе ложь
1 and 1 = 1
иначе всегда 0
--------
Логическое ИЛИ==>Если хоть один оператор истина то истина, иначе ложь
0 or 0 = 0
иначе всегда 1
---------
Логическое Исключающее ИЛИ ==>Если операнды различны то истина, иначе ложь
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0
1 xor 1 = 0
дважды xor=>в исходное
применяется так
Установить бит
ax or бит
Сбросить бит
ax and (not бит)
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 102
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №738
Ну вот.. Опять я :-)
Вот какой вопрос: купил я себе TV-Tuner. Поставил драва,
перезагрузился и... "Программа msgsrv32 выполнила недопустимую
операцию и будет закрыта". Далее винды не грузятся.. Как я
понял, msgsrv32 инициализирует девайсы. (Винды 98 SE)
Так вот... Гружусь в Safe-моде, открывают список девайсов и...
у меня появилось 2 контроллЈра DMA, 4 контроллЈра ACPI IRQ Holding Steer, 3 винта (физически, он у меня один), 2 клавиатуры и 3 монитора (2 конфликтующих Default Monitor, и
не конфликтующий с ними Samsung SyncMaster 750s). После их
удаления и перезагрузки винды находят эти же девайсы в
полном объеме (см. выше). Переустановка не помогла. Попробовал
поставить WinME - не помогло :-(
А вот в Win2K всЈ работает идеально!
Единственно, иногда программа AverTV "выполняет недопустимую
операцию", но это происходит не раньше раза в неделю..
Система Pentium III, мамка Abit BE6-II, чипсет Intel 440BX..
Пробованые винды -> Win98 SE, WinME, Win2K.
TV Tuner - AverMedia TV Studio (PCI), видюха nVidia GeForce2 MX.
Может кто знает, чего с этим делать??
Или мне теперь до смерти сидеть под 2k ??
С уважением, эксперт Nik.
Ответ
Здравствуйте, Nik!
ИМХО ты сам и ответил :()
Хотя попробуй найти дрОва посвежее на сайте производителя,
да и вообще можно поставить 2 ОС: 98 и 2000...
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 103
Экспертная группа: Пользовательская работа с Windows
Вопрос №742
Уважаемые эксперты, не могли бы мне подробнее рассказать об
логических операторах OR, AND,XOR. Я не понимаю куда приплюсовываются биты при OR и отнимаются при AND.
НАПРИМЕР вот в этих строчках:
mov ax,1010b
or ax,1111b
Теперь AX=1111b. Т.о. мы включили (установили) первые четыре бита.
ПО подробнее об том что ниже:
1 OR 1 = 1 ??????????
1 OR 0 = 1 ?????????
0 OR 0 = 0 ????????
Ответ
Здравствуйте, Speedy Gonsalez!
Друг,это написано в любом простом учебнике на PC!
там приводится таблица!!!
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 20
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №741
Здравствуйте эксперты по WINdows!!! Вопрос следующий:
У меня две OS WIN98 & WIN2000. Соответсвенно они загружались
из "Выбирателя систем", который установил автоматически при
инсталляции WIN2000. Всё это прописалось в BOOT.INI.
Но вот недавно, мне пришлось восстановить кое-какие системные файл WIN98 с помощью загр. дискеты фалом SYS.com
После этого пропало это меню выбора OS и автоматически сразу
загружается WIN98, т.е. пропал доступ к WIN2000.
Вопрос: Как восстановить доступ к WIN2000, соответсвенно, чтобы вновь появлялось это меню выбора?
Ответ
Здравствуйте, Speedy Gonsalez!
windows настолько нестабильная система,что..sys.com видимо несовместим с W2000
Советую- только W98 SE 4.10.222
А доступ к W2000...необходимо либо поэксперементировать с реестром,либо в Config.sys и autoexec.bat прописать менюху...
Это написано в книге Фигурнов IBM для пользователя!(издание 6-7..)
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 21
Экспертная группа: Пользовательская работа с Windows
Вопрос №740
Здравствуйте.
Экспертам.
Рисовал все "вручную" (циклов мало), поэтому прога большая.
Но принцип вот он - см.прогу.
Задаешь смещения xxx и yyy и рисунок сдвигается.
Orlando - на счет видеопамяти пока ничего не соображаю.
Ну может покажете примерчик, а то действительно,
больно долго это все вычерчивается.
И еще, мне кажется, что программа немного некоректна.
Нужно ли в начале вычислять Get video mode, а в конце
восстанавливать?
С уважением Alex12
Ответ
Здравствуйте, Alex12!
Друг,не пиши так точку на экран!-просто глупо!!!(BIOS- тормоз)
В ближайшее время я тебе вышлю нормальный sample-
напиши поподробнее что он должен делать!!!
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 22
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №739
Где трабл (см. программу)? Компилируется нормально. Из командной строки запускается тоже нормально. Если же запустить из FAR Manager'а писать можно будет только до Enter'а. Жмешь Enter и все! Система виснет НАМЕРТВО. Причем второй раз я резидент не запускаю (курсор перемещаю на другой файл).
Ответ
Здравствуйте, Snake!
времени нет!!
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 23
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №738
Ну вот.. Опять я :-)
Вот какой вопрос: купил я себе TV-Tuner. Поставил драва,
перезагрузился и... "Программа msgsrv32 выполнила недопустимую
операцию и будет закрыта". Далее винды не грузятся.. Как я
понял, msgsrv32 инициализирует девайсы. (Винды 98 SE)
Так вот... Гружусь в Safe-моде, открывают список девайсов и...
у меня появилось 2 контроллЈра DMA, 4 контроллЈра ACPI IRQ Holding Steer, 3 винта (физически, он у меня один), 2 клавиатуры и 3 монитора (2 конфликтующих Default Monitor, и
не конфликтующий с ними Samsung SyncMaster 750s). После их
удаления и перезагрузки винды находят эти же девайсы в
полном объеме (см. выше). Переустановка не помогла. Попробовал
поставить WinME - не помогло :-(
А вот в Win2K всЈ работает идеально!
Единственно, иногда программа AverTV "выполняет недопустимую
операцию", но это происходит не раньше раза в неделю..
Система Pentium III, мамка Abit BE6-II, чипсет Intel 440BX..
Пробованые винды -> Win98 SE, WinME, Win2K.
TV Tuner - AverMedia TV Studio (PCI), видюха nVidia GeForce2 MX.
Может кто знает, чего с этим делать??
Или мне теперь до смерти сидеть под 2k ??
С уважением, эксперт Nik.
Ответ
Здравствуйте, Nik!
format C:
win2K beta
/...
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 24
Экспертная группа: Пользовательская работа с Windows
Вопрос №733
Привет коллеги!
Вопрос по Exsel
Есть два документа
Слышал, но не знаю как, что
Можно сравнить эти документы по столбцу А и ести ячейки в столбце А совпадают, то обновить соответствующие строки из второго документа
Для примера-обновление цен на комплектующие
Ответ
Здравствуйте, Sensey!
Друг- это не по windows!!!
Читай help!(Exel для чайников!)
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 28
Экспертная группа: Пользовательская работа с Windows
Вопрос №732
Уважаемые эксперты!
Большое спасибо всем ответившим на вопрос 689-690.
Замена mov ax, 3Fh на mov ah, 3Fh помогла радикально! В уроке 009 приведена строка mov ax, 3F00h; чем это лучше? А если так: mov ah, 3Fh; mov al, 00 ?
Однако с выводом на экран содержимого тестируемого файла (y.dat; длина 400 байт, т.е. 5 экранных строк по 80 каких-либо символов) не получается: сначала выводится примерно около половины файла правильно, потом появляются символы из сегмента данных y. еxe и после них продолжается вывод символов из файла y.dat, но только опять(!?) с его начала.
В чЈм тут дело? Как правильно объявить Buffer? Я пробовал 4 варианта (см. прилагаемый листинг) и только <2> выводит строку на экран, да и то неправильно.
Может быть, дело в значении регистра ds? Достаточно ли одной инициализации ds (mov ax, @data; mov ds, ax) в начале программы?
Я заметил, что если строку Buffer db 1024 dup (?) поместить не в конце сегмента данных, то exe-файл увеличивается на 1024 байта, причЈм эти байты - одни точки (по F3 - вьюер). А если мне надо объявить, например, 4 буфера по 32 Кб, то получается, что ехе-файл увеличится на 128 Кб бесполезных точек? Как этого избежать?
Вопрос к Broken Sword. Ответ по п. 5 я не понимаю. Почему должны затереться 8 байт кода и переменная Handle? Мне казалось, что ничего такого не должно происходить. И насчЈт экономии 10 байт тоже не понятно.
Прилагаю всю программу целиком: 9 файлов, главный называется "y.asm".
Спасибо!
Ответ
Здравствуйте, Vasil!
Извини друг,столько времени нет...
mov ax,3F00h по смыслу = mov ah,3fh mov al,0
но вроде бы побыстрее!
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 29
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №730
Здравствуйте эксперты.
У меня такой вопрос: Как можно искать файлы не только в заданной папке, с помощью ф-ций 4Eh и 4Fh но и например в на диске C со всеми вложенными папками.
Ответ
Здравствуйте, Алексей!
Читай рассылку по низкоуровнему програмированию на ASM!
Отправил эксперт: Michael
Эксперт отправил ответов (всего): 30
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Подписаться на рассылки
Форма подачи вопроса
ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!
Регистрация в качестве эксперта
Архив выпусков
Ведущий рассылки,
Калашников Олег:
Assembler@Kalashnikoff.ru
ICQ No.: 68951340
URL сайта подписчиков:
http://www.Kalashnikoff.ru
______________
По вопросам сотрудничества, рекламы и спонсорства обращайтесь:
- Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
- Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
- Издание книги (спонсорство): Sponsor@Kalashnikoff.ru
(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав. |
Реклама на сайте Kalashnikoff.ru
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу | Рейтингуется SpyLog |
В избранное | ||