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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 076

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-08-29


Вопрос №683

Привет всем!
Доброго времени суток вам.
Итак, вопрос...
После изучения 15 рассылок я решил написатьпрограмму на асме, которая при запускестановилась бы резидентной и если в оболочке нортона или far'a ее запустить, то она должна
перехватить прерывание 1СН и проверять текст находящийся на экране пользователя, и если в на экране есть подряд три буквы ftp, то данная программа должна последнюю букву "р" изменить на букву "р" только на черном фоне и желтым цветом,
но вот проблема почему-то при работе этой програмы на экране какой-нибудь символ отображается не правильно , а так вроде бы все ОК только оптимизировать еще надо.
Помогите все кто может, а то уже 2 дня сижу с этой проблемой и не знаю в чем дело.
Вот исходник
\/\/\/\/\/\/s

Ответ

Здравствуйте, aeron!
Пока только прокомментирую, позже может и прогу вышлю:
1.Очень нежелательно проверять 18 раз в секунду область видеопамяти, так как эта проверка сама занимает время и вообще если появится еще одна прога, перехватывающая 1Ch, то система зависнет, так что лучше использовать другие преревания, например перехват нажатия клавиши или открытия файла, и если даже использовать сразу несколько обработчиков, то будет выгоднее и надежнее, чем 1ch.
2.Если и проверять видеопамять, то не надо загружать каждый раз в ax символ и сравнивать с искомым, проще использовать repne cmpsb, эта команда будет проверять по байтам, так как неизвестно какой атрибут у символа, но все же будет быстрее(внизу увидишь небольшой отрывок из проги)
3.Сохранил все регистры, но про главное забыл - флаги необходимо сохранять в любых обработчиках.

Приложение:


Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 46

Экспертная группа: Оптимизация программ

Вопрос №687

Здраствуй эксперт!
Если у тебя есть время не мог бы ты мне помоч ответить на вопрос (по Си) :
После запуска этой программы она выводить (в зависимости от выбора) две буквы в разных строках (пример: а
b)
Как заставить ее выводить сообшение в одной строке (пример:ab). Эта простая проблема поставила меня в тупик!
За ранее благодарен=)

Ответ

Здравствуйте, Alex!
изучи функцию printf...


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 91

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №688

Здраствуй эксперт!
Почему сегмент начинается с пораграфа (16-ти байтная величина)?

Ответ

Здравствуйте, Alex!
Адресация памяти в ПК происходит таким образом, что физический адрес вычисляется как seg*16+offset
Это сделано, чтобы команды имели доступ к 1 Мб памяти(20 бит), но в коде комманд можно было указывать только смещение(16 бит), сегмент берется по умолчанию - коды получаются меньше


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 92

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №671

Ну точно надоел:
Еще вопрос: Как правильно вычитать 32bit переменные? Что-то подобное было в рассылке, но я не совсем понял. Оссобенно меня волнует вычитаение когда младшее слово вычитаемого больше источника.
Спасибо еще раз.

Ответ

Здравствуйте, Евгений!
32b1 dw 'xxxx'
32b2 dw 'xxxx'
snak db 1; по умолчанию плюс
start:
...
mov eax,32b1
mov ebx,32b2
sub eax,ebx
jns nextx ;если отрицательный результат, то взять по модулю
neg eax ;изменяет знак
dec snak
nextx
;теперь в еax число по модулю, а в snak-знак числа в eax.
...

Надеюсь теперь понятно.!.


Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 47

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №686

Здравствуйте, уважаемые эксперты!
Проблема следующая – купили винт Maxtor 40-гиговый, БИОС не видит больше 32-х гигов. В мануале к винту написано, что такое может быть, если БИОС старый. Как заставить БИОС «увидеть» оставшиеся 8 гигов? Какой программой воспользоваться, где взять обновленный БИОС?

M/b Chaintech 5TTL, September 1997
Chipset Intel 82430TX

Буду рад квалифицированной помощи!

Ответ

Если у тебя Award-овский BIOS, то на www.award.com, если AMI, то www.AMI.com, третьего не дано.


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 104

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №685

Привет всем!
Доброго времени суток вам.
Итак, вопрос...
После изучения 15 рассылок я решил написатьпрограмму на асме, которая при запускестановилась бы резидентной и если в оболочке нортона или far'a ее запустить, то она должна
перехватить прерывание 1СН и проверять текст находящийся на экране пользователя, и если в на экране есть подряд три буквы ftp, то данная программа должна последнюю букву "р" изменить на букву "р" только на черном фоне и желтым цветом,
но вот проблема почему-то при работе этой програмы на экране какой-нибудь символ отображается не правильно , а так вроде бы все ОК только оптимизировать еще надо.
Помогите все кто может, а то уже 2 дня сижу с этой проблемой и не знаю в чем дело.
Вот исходник
\/\/\/\/\/\/s

Ответ

Здравствуйте, aeron!
Тебе как - 12 ответов писать?
Кнопка мыши наверное запала?:)
Ладно, держи правильную прогу, онатолько не проверяет наличия себя в памяти-сам допишешь:)

Приложение:


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 93

Экспертная группа: Оптимизация программ

Вопрос №668

Долго выбирал подгруппу - решил сюда
М.б. кто знает - как можно прочитать серийный номер процессора?
Спасибо.
P.S. Если, кто из читателей рассылки смогет, что подсказать - плиз pilot@yrg.kuzbass.net

Ответ

Здравствуйте, Евгений!
Самый простой способ прочитать номер процессора!!!
Для того, что бы прочитать номер процессора необходимо раскрутить системный блок (4-6 винтов), снять cooler, достать процессор на нем дожен быть указан номер. Таким же образом можно узнать номера всех комплектующих:).
Если тебя интерисует soft номер Р!!!, то я не зняю как :(.


Отправил эксперт: Viktor
Эксперт отправил ответов (всего): 1

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №662

Уважаемые эксперты,
Вот уже второй (или третий) день как я воюю с своей звуковушкой
Acer Magic S23. Я еЈ не спалил - это радует, но в недавних пор win'98
(да и osr2 тоже) на загрузке, если драйвера не установлены, обнаруживает
только первое логическое устройство из четырЈх (_codec_,opl3,4232_CTRL,
ide-контроллер), но после в Мой комп->система пишет что этому
устройству bios неправильные ресурсы передаЈт (а вручную их поставить-
закладочки нет). ПричЈм в дос'е и в эмуляции всЈ работает.
Вот отчего это, возможно произошло: копался с запоротым винтом приятеля
и помимо остального использовал программку Disk Manager 2000 (9.xx -
она же) запускал еЈ с дискетки - всЈ чин-чинарЈм. И вот я там в ручном
режиме в опциях cmos поменял disk type с 0 на, кажется, 80, потом,
через какое-то время, на ноль обратно. В процессе всего этого комп мой
стал перед загрузкой простаивать (т.е. до того как видеоадаптер
заработает, и монитор из stand by перейдЈт в idle) где-то секунду,
иногда две.
В заключении добавлю, что конфигурация компа не совсем обычная:
P5-100 с 40-гиговым винтом, повешанным на pci-контроллер CMD-649U;
После его установки звуковушка на pnp не всегда правильно настраивалась,
но при отмене pnp и ручном указании ресурсов всЈ и даже везде заботало
отлично.
Заранее с благодарностью.
COLD Endeed.

Ответ

Здравствуйте, COLD Endeed!
Не все устройства имеют закладку "Ресурсы".
Для начала попробуй установить остальные три устойства в ручную :
Панель управления -> Установка оборудования -> и т.д.
Должна появиться данная закладочка.
Но скорей всего прийдется переустанавливать систему полностью:(.
Совет при установке системы когда все оборудование работает создай образ диска, легче в последствии систему восстанавливать.
Удачи!


Отправил эксперт: Viktor
Эксперт отправил ответов (всего): 2

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №690

Уважаемые эксперты!

Не могу прочесть файл с помощью функции 3Fh.

Посылаю часть кода для exe-файла: две процедуры.
Программа работает не под DOS, а под эмуляцией DOS в Windows98 (может быть причину нужно искать в этом?)


После компиляции (TASM) процедура Read_file иногда работает иногда нет: компилированная программа зависает, "портится" драйвер видео в режиме 24 бита и приходится переустанавливать весь Windows.


.DATA
FileName db 'y.dat',0 ;,'!$'
Buffer equ $
Handle dw 0
. . .

.CODE

. . .
Open_file PROC
ini_ds
mov ah,3Dh ; open file: DOS function
mov al,02h ; open for read and write
mov dx,offset FileName
int 21h
jc Error_open_file
mov Handle,ax
ret
Error_open_file:
ret
Open_file ENDP

Read_file PROC
mov bx, Handle
mov ax, 3Fh ; read file: DOS function
mov cx, 10 ; Read length
mov dx, offset Buffer
int 21h
jc Error_read_file
ret
Error_read_file:
ret
Read_file ENDP

. . .

Спасибо!

Ответ

Здравствуйте, Василь!
Да....
Под буффер надо память выделять вообще-то! А то совсем чепуха получается:(
Измени строку на
Buffer db 1024 dup(?)
И еще
номер ф-ции передается в AH а не в AX!


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 94

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №689

Уважаемые эксперты!

Не могу прочесть файл с помощью функции 3Fh.

Посылаю часть кода для exe-файла: две процедуры.
Программа работает не под DOS, а под эмуляцией DOS в Windows98 (может быть причину нужно искать в этом?)


После компиляции (TASM) процедура Read_file иногда работает иногда нет: компилированная программа зависает, "портится" драйвер видео в режиме 24 бита и приходится переустанавливать весь Windows.


DATA
FileName db 'y.dat',0 ;,'!$'
Buffer equ $
Handle dw 0
. .

CODE

. .
Open_file PROC
ini_ds
mov ah,3Dh ; open file: DOS function
mov al,02h ; open for read and write
mov dx,offset FileName
int 21h
jc Error_open_file
mov Handle,ax
ret
Error_open_file:
ret
Open_file ENDP

Read_file PROC
mov bx, Handle
mov ax, 3Fh ; read file: DOS function
mov cx, 10 ; Read length
mov dx, offset Buffer
int 21h
jc Error_read_file
ret
Error_read_file:
ret
Read_file ENDP

. .

Спасибо!

Ответ

Здравствуйте, Василь!
Твоя ошибка в том, что ты открываешь файл для записи, а не для чтения, надо mov al,1!
А в остальном вроде порядок..


Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 48

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №689

Уважаемые эксперты!

Не могу прочесть файл с помощью функции 3Fh.

Посылаю часть кода для exe-файла: две процедуры.
Программа работает не под DOS, а под эмуляцией DOS в Windows98 (может быть причину нужно искать в этом?)


После компиляции (TASM) процедура Read_file иногда работает иногда нет: компилированная программа зависает, "портится" драйвер видео в режиме 24 бита и приходится переустанавливать весь Windows.


.DATA
FileName db 'y.dat',0 ;,'!$'
Buffer equ $
Handle dw 0
. . .

.CODE

. . .
Open_file PROC
ini_ds
mov ah,3Dh ; open file: DOS function
mov al,02h ; open for read and write
mov dx,offset FileName
int 21h
jc Error_open_file
mov Handle,ax
ret
Error_open_file:
ret
Open_file ENDP

Read_file PROC
mov bx, Handle
mov ax, 3Fh ; read file: DOS function
mov cx, 10 ; Read length
mov dx, offset Buffer
int 21h
jc Error_read_file
ret
Error_read_file:
ret
Read_file ENDP

. . .

Спасибо!

Ответ

1. Что за странный комментарий: ,'!$' ???
2. Что за странная инструкция: ini_ds ???
3. Убедись, что файл y.dat УЖЕ СУЩЕСТВУЕТ(!!!), причем ОБЯЗАТЕЛЬНО УКАЗАТЬ ПОЛНЫЙ ПУТЬ, ЕСЛИ ОН НЕ В ТЕКУЩЕМ КАТАЛОГЕ (если даже в текущем, все равно укажи на всяк. случай), ането - СF=1 и AX=02h - файл не найден.
4. После mov Handle,AX инструкция ret - совершенно излишняя, также совершенно не нужны строки:
jc Error_read_file
ret
Error_read_file:
в процедуре Read_File
5. После int 21h во второй процедуре, как думаешь, что произойдет??? правильно, затреться все начало (8 байт) кода и переменная Handle. Впринципе, виснуть не должно, если у тебя больше не будет туда переходов, но на всякий случай, убери Buffer куда-нить за конец и инициализируй его вопросиками, а не нулями (так на 10 байт меньше в твоем случае займет само файло)

А вообще, мало ли у тя там еще ошибок и глюков??? пришли всю прогу, разложу по полочкам


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 105

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №689

Уважаемые эксперты!

Не могу прочесть файл с помощью функции 3Fh.

Посылаю часть кода для exe-файла: две процедуры.
Программа работает не под DOS, а под эмуляцией DOS в Windows98 (может быть причину нужно искать в этом?)


После компиляции (TASM) процедура Read_file иногда работает иногда нет: компилированная программа зависает, "портится" драйвер видео в режиме 24 бита и приходится переустанавливать весь Windows.


.DATA
FileName db 'y.dat',0 ;,'!$'
Buffer equ $
Handle dw 0
. . .

.CODE

. . .
Open_file PROC
ini_ds
mov ah,3Dh ; open file: DOS function
mov al,02h ; open for read and write
mov dx,offset FileName
int 21h
jc Error_open_file
mov Handle,ax
ret
Error_open_file:
ret
Open_file ENDP

Read_file PROC
mov bx, Handle
mov ax, 3Fh ; read file: DOS function
mov cx, 10 ; Read length
mov dx, offset Buffer
int 21h
jc Error_read_file
ret
Error_read_file:
ret
Read_file ENDP

. . .

Спасибо!

Ответ

Самого главного то в попыхах и не увидел!!! mov ax,3Fh!!!!!! ah при этом ну никак не меняется!!! уловил???
p.s. кстати, это моя любимая ошибка при выводе на экран через 9 функцию... ;)


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 106

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №691

Здравствуйте!
Экспертам.
После очистки корзины не запускаются программы
через ярлыки рабочего стола.
Выводится сообщение: "Не удается найти SirC32.exe.
Эта программа необходима для открытия файлов типа
Приложение"
Перезапускаю комп и все опять работает.
Еще такая штука: когда запускал DrWeb, то комп
завис, а в строке проверки находилось
C:\RECYCLED\SirC32.exe
В корзине смотрел там его нет : - )

С уважением ...

Ответ

Здравствуйте, Alex12!
Очень похоже на вирус:(
Загрузись с дискеты(или другого винта), и с этой же дискеты запусти антивирус, может поможет...


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 95

Экспертная группа: Пользовательская работа с Windows

Вопрос №687

Здраствуй эксперт!
Если у тебя есть время не мог бы ты мне помоч ответить на вопрос (по Си) :
После запуска этой программы она выводить (в зависимости от выбора) две буквы в разных строках (пример: а
b)
Как заставить ее выводить сообшение в одной строке (пример:ab). Эта простая проблема поставила меня в тупик!
За ранее благодарен=)

Ответ

Здравствуйте, Alex!
юзайте printf("%s",a); и т.д.

eVent


Отправил эксперт: Event
Эксперт отправил ответов (всего): 11

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №687

Здраствуй эксперт!
Если у тебя есть время не мог бы ты мне помоч ответить на вопрос (по Си) :
После запуска этой программы она выводить (в зависимости от выбора) две буквы в разных строках (пример: а
b)
Как заставить ее выводить сообшение в одной строке (пример:ab). Эта простая проблема поставила меня в тупик!
За ранее благодарен=)

Ответ

Здравствуйте, Alex!
юзайте printf("%s",a); и т.д.

eVent


Отправил эксперт: Event
Эксперт отправил ответов (всего): 12

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №694

Уважаемые эксперты подскажите возможно ли в Винде 98 запаролировать папку, чтобы ни на сетевом, ни на локальном уровне в нее без пароля войти было невозможно.

Ответ

Уважаемый Dron! Можно, только нужна специальная прога, на www.freesoft.ru штук 5 точно есть, нада только поискать! Удачи!


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 107

Экспертная группа: Пользовательская работа с Windows

Вопрос №694

Уважаемые эксперты подскажите возможно ли в Винде 98 запаролировать папку, чтобы ни на сетевом, ни на локальном уровне в нее без пароля войти было невозможно.

Ответ

Здравствуйте, Dron!
Точно не знаю, может быть есть какой либо софт (типа того же PGP) но прямым способом нет (т.е. как в NT низя). Фигня в том что в 9х FAT а том NTFS. Короче если очень надо юзай ПГП.


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 68

Экспертная группа: Пользовательская работа с Windows

Вопрос №691

Здравствуйте!
Экспертам.
После очистки корзины не запускаются программы
через ярлыки рабочего стола.
Выводится сообщение: "Не удается найти SirC32.exe.
Эта программа необходима для открытия файлов типа
Приложение"
Перезапускаю комп и все опять работает.
Еще такая штука: когда запускал DrWeb, то комп
завис, а в строке проверки находилось
C:\RECYCLED\SirC32.exe
В корзине смотрел там его нет : - )

С уважением ...

Ответ

Здравствуйте, Alex12!
Поищи с чем у тебя сассоциированы exe файлы (в свойствах папки там есть типы файлов или напрямую в реестре).


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 69

Экспертная группа: Пользовательская работа с Windows

Вопрос №670

Подскажите пожалуйста, что делать. Не можем установить драйвер для видеокарты на материнке Intel 7120. (родные утеряны). Заходили туда на сайт там есть только 8110, которые не подходят. Раскрыли комп, а в середине видео отдельной платой не идет, вроде бы встроенная. Короче мы немного растерялись.

Ответ

Здравствуйте, Dron!
Есть такая фича - интернет называется (где-то я это слыщал). Там можно слазить на сайт производителя видюхи (intel то бишь), производителя мамы (если видео интегрированная), колекции всяких дров (www.drivers.ru и т.п.) или воспользоваться поисковиками типа яндексов, абортов и т.п.
З.Ы. А еще можно послушать эксперта Michael поражающего своей гениальностью и остроумием, а так же способностью давать на х.й ни кому не нужные ответы, засерая рассылку и зае..вая её читателей. Помнится был у группы F.P.G. (привет Нижнему Новгороду) альбомчик про таких как он "Родина ждёт героев, п..да рождает дураков".
Короче привет всем кто любит давать советы по восстановлению удаленных файйлов с помощью NDD!!!!
Кстати, эксперт Michael, отвечайте на все повторяющиеся вопросы - баллов больше будет (толку от твоих ответов всеровно меньше не будет).
С уважением, Terrible Painbringer!!!!


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 72

Экспертная группа: Пользовательская работа с Windows

Вопрос №695

Здравствуйте експерты!
У меня вопросик, в общем по порядку, я скачал браузер-arachne под дос, в общем я его настраиваю, звоню провайдеру,
и при соединени, дос выдает ошибку что типа не хватает памяти. Я помню, что раньше как-то прописывал, чтобы при загрузке дос, под дос выделялась большая память чем обычно расширеная (HIGH) или старшая(UMB), не помню, смысл в том, что если прописать это в config.sys (dos=high,umb), то всеравно ошибка нехватки памяти, помню была у меня подобная программа требующая много памяти - она у меня заработала только тогда, когда я установил дос 6.., но после установки винды, винда подтерла файлы дос'а и опять началось тоже самое. Так в чем же дело уважаемые эксперты?

Да, совсем забыл, если кому нибудь интересно, что это за графический браузер под дос, то пишу ниже как его можно получить. Итак, для этого вам достаточно послать пустое письмо по этому адресу: send-me-arachne@arachne.cz
Ну вот и все жду ответов...

Ответ

Здравствуйте, aeron!

Пропиши в CONFIG.SYS строчку

DEVICE=C:\WINDOWS\EMM386.EXE RAM

или, если тебе не надо EMS, то

DEVICE=C:\WINDOWS\EMM386.EXE RAM NOEMS

Должно помочь. Также проверь, грузится ли там HIMEM.SYS


Отправил эксперт: Nik
Эксперт отправил ответов (всего): 85

Экспертная группа: Пользовательская работа c DOS

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


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

В избранное