Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 120 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-10-19
Вопрос №1254
Какой лучше взять винт?
HDD 20.5 Gb IDE IBM (IC35L020AVER07-0) UDMA100 7200rpm
HDD 20.0 Gb IDE Maxtor 541DX (2B020H1) UDMA100
HDD 20.5 Gb IDE Quantum Fireball Plus AS (AS20A01x) UDMA100 7200
HDD 20.4 Gb IDE Seagate (320423A/320413A) UDMA66/100
HDD 20.4 Gb IDE Seagate U6 (320410A) UDMA100 [NEW]
HDD 20.4 Gb IDE Seagate Barracuda ATA III (ST320414A) UDMA100 7200rpm
HDD 40.8 Gb IDE Seagate U6 (340810A) UDMA100 [NEW]
HDD 20.0 Gb IDE Western Digital (200EB) UDMA100 5400rpm
HDD 30.7 Gb IDE Western Digital (307AA) UDMA66 5400rpm
просто все они в пределах 3000 ~ 3600р.
Ответ
Здравствуйте, Владимир!
Вообще, я бы склонился к IBM, они пока самые лучшие в этом деле, но и Quantum от них не сильно отстает!
Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 145
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1246
Здравствуйте эксперты
Я работаю под Win2000.
Поумолчанию Win2000 автоматически закрывает окна всех DOS-приложений по завершении их выполнения
Если я использую *.bat в котором содержится командная строка
tasm /всякадребедень 1.asm 2.asm
То позавершении ассемблирования консольное окно закрывается чпб
Как сделать чтобы оно осталось
tasm.pifы не помогают Я пробовал
Заранее благодарен
ivekm
Ответ
Здравствуйте, ivekm!
А ты пускай свою лабудень из под FARa или DNа там всякого...
И НЕЗАЧЕМ СТОЛЬКО РАЗ НАЖИМАТЬ КНОПКУ ПОСЛАТЬ ВОПРОС И ВСЁ ТАКОЕ.
Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 192
Экспертная группа: Работа с MASM/TASM
Вопрос №1253
лЕМЪ ХМРЕПЕЯСЕР ЛМЕМХЕ ЯОЕЖХЮКХЯРНБ ОН ФЕКЕГС ЙЮЙ АСДСР БЕЯРХ ЯЕАЪ hdd uata100 Х CD-Rom uata33 МЮ НДМНЛ ЬКЕИТЕ
ЙНМРПНККЕП ЛЮРЕПХМЙХ Uata100 Б ВЮЯРМНЯРХ ЛЕМЪ ХМРЕПЕЯСЕР АСДЕР КХ ПЮАНРЮРЭ hdd Б ПЕФХЛЕ Uata100 ЕЯКХ Й ЬКЕИТС ОНДЙКЧВЕМН АНКЕЕ ЛЕДКЕММНЕ СЯРПНИЯРБН ХКХ НМ АСДЕР РНПЛНГХРЯЪ. еЯКХ ЛНФМН ОНОНДПНАМЕЕ НАЗЪЯМХРЕ.
Ответ
Здравствуйте, igor!
Естественно будет тормозить, особенно при одновременном использовании.
Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 194
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1254
Какой лучше взять винт?
HDD 20.5 Gb IDE IBM (IC35L020AVER07-0) UDMA100 7200rpm
HDD 20.0 Gb IDE Maxtor 541DX (2B020H1) UDMA100
HDD 20.5 Gb IDE Quantum Fireball Plus AS (AS20A01x) UDMA100 7200
HDD 20.4 Gb IDE Seagate (320423A/320413A) UDMA66/100
HDD 20.4 Gb IDE Seagate U6 (320410A) UDMA100 [NEW]
HDD 20.4 Gb IDE Seagate Barracuda ATA III (ST320414A) UDMA100 7200rpm
HDD 40.8 Gb IDE Seagate U6 (340810A) UDMA100 [NEW]
HDD 20.0 Gb IDE Western Digital (200EB) UDMA100 5400rpm
HDD 30.7 Gb IDE Western Digital (307AA) UDMA66 5400rpm
просто все они в пределах 3000 ~ 3600р.
Ответ
Здравствуйте, Владимир!
Я бы взял IBM, только бы вот на сорок (типа бабок поднакопи). И не бери IBM серии DTLA.
Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 195
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1252
Здравствуйте уважаемые Эксперты!
Подскажите с такой _непоняткой_:пишу прогу, в которой использую джамп по текущему значению счетчика+какое либо значение. Что такое это значение - известно, можете не объяснять. Так вот, эта самая команда JMP $+значение весьма странно работает в EXE. Опытным путем просек что прыгать нужно на NOP тогда все работает нормально, иначе - виснет (хотя тоже интересно почему, в COM такого не надо было) Привел бы исходник где такое сделал но здоровый он сильно... Но это еще ничего - работает и ладно - принес работающий исходник домой (прогу на работе писал) и откомпилил тоже тасмом но другой версии. Прога снова отказалась работать ! Получается, что компиляторы разных версий по разному транслируют одни и те же мнемокоманды ! Я прав или может другая причина есть?
Знаю что удобней джамп ставить на метку(так и сделал в конце концов) просто интересен сам факт - почему?
Ответ
Здравствуйте, Диман!
Попробуй jmp $+offset-1
А то ты прыгаешь не на начало команды, а на ее середину. А с nop'ом не на него а на следущую за ним команду
Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 39
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1259
Привет всем!!!
У меня такой вопрос. Вот имеем команду jmp. Ее смещение асм переводит в машинные коды т.е. меняет ip и по потребности cs. так вот команда короткого перехода м.б. написана как db 0ebh и байт смещения. Это понятно. А как тогда адресуется смещение назад. И вообще эта замена точки входа пока не работает не знаю почему.Например в win.com сделать шутку вроде пароля на загрузку или т.п., а потом возвратить управление на нормальное место. А ближний переход как db 0e9h и два байта смещения. В общем помогите кто чем может.
Ответ
Здравствуйте, DiGiT!
Смещение в переходе как в коротком, так и в ближнем оформляется в виде отрицательного числа - абсолютное значение смещения назад можно получить инвертировав все биты и прибавив к полученному единичку (не обижайся за подсказку, если знал)
Удачи ;)
Отправил эксперт: MOByte
Эксперт отправил ответов (всего): 8
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1253
лЕМЪ ХМРЕПЕЯСЕР ЛМЕМХЕ ЯОЕЖХЮКХЯРНБ ОН ФЕКЕГС ЙЮЙ АСДСР БЕЯРХ ЯЕАЪ hdd uata100 Х CD-Rom uata33 МЮ НДМНЛ ЬКЕИТЕ
ЙНМРПНККЕП ЛЮРЕПХМЙХ Uata100 Б ВЮЯРМНЯРХ ЛЕМЪ ХМРЕПЕЯСЕР АСДЕР КХ ПЮАНРЮРЭ hdd Б ПЕФХЛЕ Uata100 ЕЯКХ Й ЬКЕИТС ОНДЙКЧВЕМН АНКЕЕ ЛЕДКЕММНЕ СЯРПНИЯРБН ХКХ НМ АСДЕР РНПЛНГХРЯЪ. еЯКХ ЛНФМН ОНОНДПНАМЕЕ НАЗЪЯМХРЕ.
Ответ
Здравствуйте, igor!
Никогда не ставь сидюк и винт на один шлейф, даже если оба 33-жутко тормозит!
В твоем случае либо будет работать на 33, либо вообще не будет работать.
Можешь проверить практически размер тормозов-поставь на один шлейф, на сидюке запусти играть аудиодиск и что-то копируй на винте-сам увидишь...
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 181
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1257
Уважаемые эксперты!
Спасибо всем за ответ на предыдущий вопрос! Про loop я читал, но т.к. в рассылке было написано, что JNZ и DEC работают быстрее LOOP я попробовал и вариант с ними, но почему-то использовал JMP вместо JNZ, поэтому такая фигня и получилась, в следующий раз буду внимательнее.:-)
Теперь еще один вопрос, как в AFDPro при отладке программы, когда она ждет нажатия клавиши эту самую клавишу нажимать? То есть запустил я программу под отладчиком и как сделать так, чтоб отладчик понимал по какому ему варианту идти дальше, если нажата клавиша.
ЗЫ: Что-то многие меня сразу так пинать стали, а я ведь только начал язык изучать, только на 4 главе рассылки.:-)
Ответ
Здравствуйте, Ilya!
Вы вообще отладчик запускали то хоть??? Запустите и посмотрите, чего спрашивать то. Ничего придумывать не нада, ведь идет простое cmp al,keypress или че вы там придумали
Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 193
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1255
Какую лучше взять видео карту?
SVGA 32Mb
SVGA 32Mb
SVGA 16Mb
SVGA 32Mb
SVGA 32Mb
Ответ
Здравствуйте, Владимир!
У еня вуду3 3дфх ща стоит...не плохая видяшка и погаматься с ней можно неплохо...
Отправил эксперт: змей
Эксперт отправил ответов (всего): 69
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1259
Привет всем!!!
У меня такой вопрос. Вот имеем команду jmp. Ее смещение асм переводит в машинные коды т.е. меняет ip и по потребности cs. так вот команда короткого перехода м.б. написана как db 0ebh и байт смещения. Это понятно. А как тогда адресуется смещение назад. И вообще эта замена точки входа пока не работает не знаю почему.Например в win.com сделать шутку вроде пароля на загрузку или т.п., а потом возвратить управление на нормальное место. А ближний переход как db 0e9h и два байта смещения. В общем помогите кто чем может.
Ответ
Здравствуйте, DiGiT!
Байт(слово) смещения рассматривается как знаковое, т.е. если написать FFh -это будет -1
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 182
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1259
Привет всем!!!
У меня такой вопрос. Вот имеем команду jmp. Ее смещение асм переводит в машинные коды т.е. меняет ip и по потребности cs. так вот команда короткого перехода м.б. написана как db 0ebh и байт смещения. Это понятно. А как тогда адресуется смещение назад. И вообще эта замена точки входа пока не работает не знаю почему.Например в win.com сделать шутку вроде пароля на загрузку или т.п., а потом возвратить управление на нормальное место. А ближний переход как db 0e9h и два байта смещения. В общем помогите кто чем может.
Ответ
Здравствуйте, DiGiT!
Да нормально адресуется, в дополнительном коде. Поэтому смещение может быть только от -128 до +127 байт. А представляется это так:
Dec Hex Bin
-1 ff 11111111
-2 fe 11111110
-3 fd 11111101
...
-126 82 10000010
-127 81 10000001
-128 80 10000000
А по поводу "эта замена не работает" я немного не понял. Хотя бы кусок кода привели...
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 36
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1261
Привет всем!
Вопрос для MOByte. Я так и думал но меня разуверило в этом слудующее действие. Например запускаешь debug. Пишешь команды jmp metka jmp metka. Так дампишь память по этому месту и видиши смещение вперед 0fc и 0аe например как тогда ведь это числа отрицательные, а смещение-то вперед
Ответ
Здравствуйте, DiGiT!
и 0fch и 0aeh - это смещение назад.
Но это только в том случае если речь идет об относительном смещении.
абсолютные смещения содержат в себе адреса.
Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 176
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1260
Вот ...че получилось...
но если ысче подумать мона ысче покруче сляпать...:)))
Ответ
Здравствуйте, Змей!
Ну сляпал, ну и молодец. И что у тебя получилось? Простейший файловый нерезидентный вирус, который элементарно ловится, блокируется любым детектором и т.п. Кроме этого, размер его не много ни мало 8784 байта! Помнится, т.н. венский вирус был размером всего 169 байт, кажется... Потому как на ассемблере был.
А как насчет того, чтобы сляпать резидентный полиморфный стелс-вирус? Заражающий при любом обращении к файлу? Слабо на языке высокого уровня, а? :)
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 37
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1261
Привет всем!
Вопрос для MOByte. Я так и думал но меня разуверило в этом слудующее действие. Например запускаешь debug. Пишешь команды jmp metka jmp metka. Так дампишь память по этому месту и видиши смещение вперед 0fc и 0аe например как тогда ведь это числа отрицательные, а смещение-то вперед
Ответ
Здравствуйте, DiGiT!
У меня такое подозрение, что команда jmp metka генерит код для внутрисегментного перехода, а он задается в абсолютных значениях смещения внутри сегмента. Чтобы получить короткий переход попробуй поставить jmp short metka
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 38
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1262
Пытаюсь установить MASM6.12 на 486 под ДОС. (дистрибутив с сайта Калашникова). Первая дискета грузится нормально, на второй сообщение: не могу найти файл BIN\cref.exe, хотя на дискете есть файл BIN\cref.ex$.
Что бы это значило?
Спасибо за помощь.
Ответ
Здравствуйте, Виктор!
Ну как вам сказать. Значит это только то, что файл BIN\cref.ex$ не есть тоже самое, что файл BIN\cref.exe. Как вам честно и сообщается.
А получиться так могло из-за того, что вы неправильно устанавливаете программу. В чем ошибка - не знаю, попробуйте полностью описать ваши действия.
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 39
Экспертная группа: Пользовательская работа c DOS
Вопрос №1255
Какую лучше взять видео карту?
SVGA 32Mb
SVGA 32Mb
SVGA 16Mb
SVGA 32Mb
SVGA 32Mb
Ответ
Здравствуйте, Владимир!
А что есть GeForce 2 MX? Доска, конечно, хорошая, но вот СУМА и Гигабайт...
Берите лучше Асус ГеФорс 2 GTS... Или на худой конец Гигабайт... :-((
Отправил эксперт: Anvar
Эксперт отправил ответов (всего): 15
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1263
Добрый день!
Я на днях скачал пару книжек со странным разришением или форматом (странным для меня, я такова некогда не встречал), к примеру: Assemble.ng!Как мне его открыть?
P.S. Painbringer бедняга..., давно заметил что у тебя там что-то болтается... .
Ответ
Здравствуйте, Alex!
для просмотра нужен Norton Guide Database Viewer - достаточно одного файла ng.com - это резидент, который вызывается по Shift-F1
при желании могу выслать на email.
Отправил эксперт: borneo
Эксперт отправил ответов (всего): 2
Экспертная группа: Пользовательская работа с Windows
Вопрос №1268
Здраствуйте уважаемые эксперты!
Спасибо Broken Sword-у за ответ на 1257, вы открыли мне глаза!:) Отладчик я запускал, не ту кнопку жал, поэтому было много непонятного, а понятного совсем мало! Теперь с отладчиком я разобрался. Извините за тупость.:)
Теперь вопрос. Программа из 7 выпуска рассылки. Я ее немного изменил и она все равно работает.
1) Тогда мне не очень понятно, почему нужно заносить в стек значения регистров CX,AX,ES, если и без этого программа у меня работает?
2) Не понял до конца, как узнать за сколько тактов выполняется та или иная операция? То есть что будет быстрей
add di,2 или inc di inc di.
Ответ
Здравствуйте, Ilya!
В данном конкретном случае действительно не надо сохранять регистры - потеря времени и места.
Но сделано это для того, чтобы запомнить на всю жизнь - процедура НИКОГДА (!) не должна изменять значения регистров (или переменных в языках высокого уровня), кроме случаев возврата результата! В противном случае можно получить тяжело обнаруживаемые ошибки.
В программе процедура Out_char должна заполнить экран символом, заданным в регистре al. И все! Ничего возвращать она не должна! Поэтому и стояло сохранение регистров. А то решишь использовать это процедуру в другой программе - и оппаньки! Изменили AH, BX, CX, DI, ES - и там эти регистры позарез нужны! И все - ищи потом ошибку!
А насчет тактов - справочники надо смотреть... Знаю точно, что количество тактов описано у Джордейна.
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 40
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1266
Помогите пожалуйста!
Я не пониманию как сравниваются строки посредством test eax,eax.
Заранее благодарю ! Алексей!
Ответ
Алексей!
Смотри: test - побитовое логическое "И", устанавливает флаги SF,ZF,PF в зависимости от результата. Ты скажешь, что тоже самое делает и команда AND. Да. Почти. Только AND - сохраняет результат логических преобразований в приемнике, а test - только устанавливает флаги И НИКУДА НИЧЕГО НЕ СОХРАНЯЕТ!!! вот почему ее удобно использовать для сравнения (почему ты пишешь, что именно строк???): например, если ax=bx, то после test ax,bx флаги Z и P сброшены в 0. Если ax<>bx, то Z и P устанавливаются в 1. А дальше уже впрягаешь jnz jp и т.п.
Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 194
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1268
Здраствуйте уважаемые эксперты!
Спасибо Broken Sword-у за ответ на 1257, вы открыли мне глаза!:) Отладчик я запускал, не ту кнопку жал, поэтому было много непонятного, а понятного совсем мало! Теперь с отладчиком я разобрался. Извините за тупость.:)
Теперь вопрос. Программа из 7 выпуска рассылки. Я ее немного изменил и она все равно работает.
1) Тогда мне не очень понятно, почему нужно заносить в стек значения регистров CX,AX,ES, если и без этого программа у меня работает?
2) Не понял до конца, как узнать за сколько тактов выполняется та или иная операция? То есть что будет быстрей
add di,2 или inc di inc di.
Ответ
Здравствуйте, Ilya!
1) да нафиг не нужно было. просто наверное сохранили на всякий случай - для приличия, чтоб мол кады ктото копаться начнет или как ты выкинет, или вставив кусок ничего не потеряет.
2) Чтобы узнать за сколько тактов выполняется та или иная команда скачай доку на процессор с сайта производителя (intel, amd или кто там у тебя). По числу тактов конечно быстрее 2 инкремента, но тут на пентах и старше произойдет agi (т.е. команды не смогут распаралелиться по конвеерам) и ты потеряешь несколько тактов. Сколько конкретно опять таки из доки.
Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 196
Экспертная группа: Общие вопросы по программированию на Ассемблере под 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 |
В избранное | ||