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

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


Служба Рассылок Subscribe.Ru

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

Выпуск N 143

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

Дата выхода: 2001-11-28


Вопрос №1626

Здравствуйте уважаемые эксперты!
Вот часть исходника моей программы форматирования 0-й дорожки винта:
.model tiny
.code
.386
org 100h

;Данные************************************************************************
desc0 db 0000
desc1 db 0000

format: mov ah,05
mov dh,00
mov dl,00 ; 80h - Для жесткого диска (C:\)
mov ch,00
int 13h
ret

start: lea dx,desc0
mov es,dx
lea dx,desc1
mov bx,dx
call format
... И. Т. Д.

Вторая программа намного больше, я ее вставил в приложение.
Вторая программа - самый безобидный тест.

Я пытался совместить эти две программы, но ничего не получилось.

Я хочу сделать так, чтобы при запуске второй программы (теста) код первой программы помещалась в файл command.com и при следующем запуске компьютера действовал.

Пожалуйста, покажите, как это сделать. Если возможно, измените исходник второй программы так, чтобы мой замысел удался.

Заранее благодарен.

Ответ

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

Ну и на какой ляд это тебе нужно? Очередной вирус или троян, гробящий винчестер? Надеюсь, что никто из экспертов не станет отвечать на этот вопрос.


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

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

Вопрос №1627

Привет всем ! Уже задаю задаю вопросы а на них ни кто не отвечает :( Так вот...О чем это я ? Ага... Как поставить аппаратный брейкпоинт на обращение к памяти (кстаи с его помощью можно например защитить вирь от нападения злобных Dr.Web'ов и ему подобных :)) Я слышал что это вроде делается с помощью отладочных регистров процессора, но ведь они появляются помоему только начиная с Pentium 2 (или просто с MMХ ?) а Турбо Дебагер помоему все это может делать и на 486...или это он програмно ?
и еще...Пишем какую-нибудь резидентеную прогу, однако она почему то занимает в памяти вовсе не столько сколько можно было ожидать ? и даже не "размер проги+psp" !!! И вообще написал я рез. таймер (висит в левом верх. углу и время показывает) так вот первый раз написал, запустил - занимает 128б. Дальше... Оптимизировал, оптимизировал, оптимизировал... все равно 128 !!!! ;(((((( тут еще раз оптимизировал... о ! теперь занимает 115б !!!! Т.е. размер изменялся дискретно и непонятно вообще как (а вовсе не на то кол-во байт на которые я уменьшал её (оптимизировалась только рез. часть )) !!!!! Что это за бред еще ????

Ответ

Здравствуйте, Барт Симпсон!

Как поставить - не знаю, а вот по поводу отладочных регистров - они появились еще в 386... Как только появился защищенный режим и режим виртуального 86-го.

По поводу памяти... Ну, память в DOS'е, вообще-то, выделяется кратно параграфу (16 байт), т.ч. не всякая оптимизация приведет к уменьшению занимаемой памяти... И у меня, честно говоря, большие сомнения по поводу числа 115 байт. Может, все-таки 112? Это как раз на 1 параграф меньше, чем 128 байт. Следующее число, к которому надо стремиться - это 96 байт :)


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

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

Вопрос №1627

Привет всем ! Уже задаю задаю вопросы а на них ни кто не отвечает :( Так вот...О чем это я ? Ага... Как поставить аппаратный брейкпоинт на обращение к памяти (кстаи с его помощью можно например защитить вирь от нападения злобных Dr.Web'ов и ему подобных :)) Я слышал что это вроде делается с помощью отладочных регистров процессора, но ведь они появляются помоему только начиная с Pentium 2 (или просто с MMХ ?) а Турбо Дебагер помоему все это может делать и на 486...или это он програмно ?
и еще...Пишем какую-нибудь резидентеную прогу, однако она почему то занимает в памяти вовсе не столько сколько можно было ожидать ? и даже не "размер проги+psp" !!! И вообще написал я рез. таймер (висит в левом верх. углу и время показывает) так вот первый раз написал, запустил - занимает 128б. Дальше... Оптимизировал, оптимизировал, оптимизировал... все равно 128 !!!! ;(((((( тут еще раз оптимизировал... о ! теперь занимает 115б !!!! Т.е. размер изменялся дискретно и непонятно вообще как (а вовсе не на то кол-во байт на которые я уменьшал её (оптимизировалась только рез. часть )) !!!!! Что это за бред еще ????

Ответ

Здравствуйте, Барт Симпсон!

Отладочные регистры появились начиная с 386.

размер резидента вопервых выровнен по параграфам (16 байт) как получилось 115 мне не понятно, наверное 112 всетаки.

Во вторых. На чем написан то? на асме? исключай ненужный код.
Резидент размещай в начале программы, код инициализации - в конце.
При установке резидента код инициализации отключай. кстати PSP занимает 256 байт. но его можно обойти. (то есть исключить из резидента) пришли пример проги - разберемся.


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 191

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

Вопрос №1628

Доброго времени суток!
По просьбе Ayl даю дополнение к своему вопросу про отладчик для Z80(вопрос №1610). Машина и ОС на которой он должен "крутиться" Celeron с Win'98 или MS-DOS. А программируется процессор Z80182 - это процессор с ядром Z80 и кучей периферии на кристалле (2 SIO, таймер контроллер прерываний параллельные порты I/O и пр.) Он по COM соединен с компьютером. Я слышал, что есть Monitor'ы позволяющие через COM осуществлять дистанционную отладку, но у меня таковых не имеется. Если кто знает где взять - подскажите.
Извиняюсь что вопрос несколько не в тему рассылки, но я подумал, что люди программирыющие на Asm'e часто пишут не только для x86 процессоров.

Ответ

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

у нашей рассылки помоему нет жесткой платформенной направленности. :)


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 192

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

Вопрос №1629

Доброго времени суток!
По просьбе Ayl даю дополнение к своему вопросу про отладчик для Z80(вопрос №1610). Машина и ОС на которой он должен "крутиться" Celeron с Win'98 или MS-DOS. А программируется процессор Z80182 - это процессор с ядром Z80 и кучей периферии на кристалле (2 SIO, таймер контроллер прерываний параллельные порты I/O и пр.) Он по COM соединен с компьютером. Я слышал, что есть Monitor'ы позволяющие через COM осуществлять дистанционную отладку, но у меня таковых не имеется. Если кто знает где взять - подскажите.
Извиняюсь что вопрос несколько не в тему рассылки, но я подумал, что люди программирыющие на Asm'e часто пишут не только для x86 процессоров.

Ответ

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

Извините, но такого у меня нет... Давно уже не возился с Z80.
Может, где в инете есть?


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

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

Вопрос №1632

Доброго времени суток эксперты!
1)Как всем известно знаковое число размером в байт имеет диапозон [-128, 127]. На мантису из этого числа уходит 7 битов, а восьмой бит- знаковый. Как тогда скажите обстоит дело с числом -128? Ведь в битовой интерпритации оно будет выглядеть так:10000000, выдь 8-й бит знаковый!
2)По каким свойствам асм. определяет надо ли в данной ситуации (образна выражаясь) применить знаковый байт или незнаковый? К примеру 127+2=129, если это будет знаковй бит то тут число -127, а если не знаковый то 129 (все путем:).

Ответ

Здравствуйте, Alex!
на самом деле никакой разницы нет, а 8 разряд учитывается только в зависимости от самой команды (почему и придумали DIV/IDIV) - понимаешь, о чем я?


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 221

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

Вопрос №1632

Доброго времени суток эксперты!
1)Как всем известно знаковое число размером в байт имеет диапозон [-128, 127]. На мантису из этого числа уходит 7 битов, а восьмой бит- знаковый. Как тогда скажите обстоит дело с числом -128? Ведь в битовой интерпритации оно будет выглядеть так:10000000, выдь 8-й бит знаковый!
2)По каким свойствам асм. определяет надо ли в данной ситуации (образна выражаясь) применить знаковый байт или незнаковый? К примеру 127+2=129, если это будет знаковй бит то тут число -127, а если не знаковый то 129 (все путем:).

Ответ

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

Вот число 10000000 и есть -128.

А вычисляются они достаточно просто, целочисленно.

если ты к 127 прибавишь 2, то получишь 129, оно же -127
А если ты от 1 отнимешь 2, то получишь 255, оно же -1.
Все зависит от того, что ты собираешься с этим в дальнейшем делать.

Пересечение нижней/верхней границы процессором не контролируется.
Можно проверить знаковым битом, что не всегда будет справедливо.
Ну если ты работаешь исключительно (применю сишный термин) c signed char, то проблем нет. 127 + 127 = 254 (знаковый бит изменился, значит переполнение) то же самое в обратную сторону. -128 - 127 = 1.
или же -128 + -128 = 0. большие значения не допустимы для типа.

В ассемблере об этом голова должна болеть у тебя. все зависит от того чего ты хочешь добиться.


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 193

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

Вопрос №1634

Уважаемый Sensey может такое быть что в моей библиотеке stdlib.h нету прототипа этой функции randomize()? Потому как при наведение на него мышкой не всплывает подсказки... . Может подскажеш где можно скачать такую библиотеку? Сказать по правде я полный чайник и потому я могу предпологать что в этих библиотеках находятся только прототипы этих функция, ну тогда как скачать (полную версию) файла stdlib.h?
P.S. Примного благодарен за внимание!

Ответ

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

Я уже писал тебе что такой функции в си нет. есть функция srand. пользуйся ею.


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 194

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

Вопрос №1632

Доброго времени суток эксперты!
1)Как всем известно знаковое число размером в байт имеет диапозон [-128, 127]. На мантису из этого числа уходит 7 битов, а восьмой бит- знаковый. Как тогда скажите обстоит дело с числом -128? Ведь в битовой интерпритации оно будет выглядеть так:10000000, выдь 8-й бит знаковый!
2)По каким свойствам асм. определяет надо ли в данной ситуации (образна выражаясь) применить знаковый байт или незнаковый? К примеру 127+2=129, если это будет знаковй бит то тут число -127, а если не знаковый то 129 (все путем:).

Ответ

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

1. Ну и что тут такого? Да, -128 = 10000000 в доп.коде. И что не нравиться? По-моему, нормальное отрицательное число :)

2. А ему (асму) по барабану, знаковое или не знаковое (это относительно сложения и вычитания). Потому как:

127 + 2 = 01111111 + 00000010 = 10000001. Флаг SF установился в 1! А далее можно проверить, что CF = 0, SF = 1, а до операции было 2 положительных числа - оппаньки, переполнение!

А вот при умножении/делении есть по 2 команды - mul (div) и imul (idiv). Первые - беззнаковые, вторые - знаковые. Переполнение тут отлавливается еще с учетом флага OF.

В общем, читайте, разбирайтесь. Если что - пишите. Всегда рады ответить.


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

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

Вопрос №1595

Прошу объясните детально что такое перепрограммируемая логическая матрица

Ответ

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

Матрица - двумерный массив.
Логическая - элементами матрицы являются логические величины (true,false).
Если обозначить 1 - true; 2 - false, то матрица
1 1 1 0 1
0 1 1 1 1
0 1 1 0 1
1 1 0 1 1
1 1 1 0 1
является логической.

Что означает слово перепраграмируемый, надеюсь пояснять не надо.


Отправил эксперт: progmas (a-kireev,narod.ru - HOMEPAGE)
Эксперт отправил ответов (всего): 16

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

Вопрос №1593

Прозвучал такой вопрос:

А у меня такой вопорос: есть матричный принтер Epson FX-1180. С недавних пор у него появился некий глюк - при печати из-под Винды (в любом приложении) эта собака печатает часть страницы(например шапку документа), потом пол-страницы просто пропускает и с середины листа продолжает печать! Шо делать???
Прим.: пропускает не пол-страницы текста, а проматывает пол-листа заправленной бумаги...

ОТВЕТ:
В настройках (свойствах) принтера надо указать подачу бумаги не в ручную, а бумага с перфорацией.

Ответ

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

Попробуй переставить драйвера и почистить принт


Отправил эксперт: progmas (a-kireev,narod.ru - HOMEPAGE)
Эксперт отправил ответов (всего): 17

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

Вопрос №1642

Здравствуйте!
Есть прог-ма, которая меняет заглавные буквы на прописные и наоборот,но кол-во букв приходится считать в ручную и записывать в СХ,как сделать что бы строка вводилась с клавиатуры и буквы менялись,подправте плз :)

Ответ

Здравствуйте, Anton!
Да чего здесь париться, госсспади!!! Дядя Билл уже обо всем позаботился - юзаешь для ввода с клавы 0Ah функцию int 21h (готовишь буфер, причем второй его байт после ввода строки, будет содержать реальное количество введенных символов (то что тебе и нада) ). Я, пожалуй, удержу себя от написания самой проги... прости уж! ))


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 222

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

Вопрос №1639

Всем привет.

Читаю я тут рассылку читаю, читаю и возник у меня вопрос, это касается не только экспертов.
А подскажите плз, ну понимаю я программить на асме под экзотические процессоры, под винду, всякие там загрузчики, ОС писать в конце концов. Но зачем под DOS то? Неужели ею кто-то пользуется? Проскакивают бывает вопросы по поводу вирей под дос, ну ладно вирмейкера мозгами не понять у всех свои хобби. Но скажите плз с ПРАКТИЧЕСКОЙ точки зрения - какой в этом смысл?

Ладно начал уж писать так допишу.
Тут периодически возникают предложения насчет перехода под Win32, написания своей ОС и т.п.
п.1. Так уже давно вопросы появляются и под Win32 правда интересных почти нет.
п.2. Граждане не понимаю я энтузиастов по написанию своей оськи. Ну согласен практически все рано или поздно начинали писать свою ось но до Торвальдса не многие дошли, да и зачем это? Не лучше ли развивать существующие?
Короче несколько сумбурно, но висят параллельно два проекта поэтому обсасывать мысли просто некогда.

Мое предложение в следующем.
Нефиг заниматься фигней (простите за тафтологию) создавать никому не нужные прооги ради самого процесса. Как показывает опыт и не только мой, научиться чему-либо можно лишь на реальных задачах. Так и давайте создавать что-нибудь практически нужное. Ведь ту же самую оську можно писать не ради ее самой а допустим для СУБД реального времени, где кроме этой самой СУБД нифига работать не будет (а ежели делать ее ГИСориентированную то тут уже миллионы$). Или млин если уж пишите вирусы то хоть предметную область изучите (млин сам ругался на WizarXа но вопросы на самом деле несколько [censored]) ведь куча наработок уже есть (я не имею в виду пионеров которые хотят свое имя в журнале "Хакер" увидеть, а людей которые этим занимаются преследуя какую-нить идею см. напр. z0mbie.host.sk).

Ладно ближе к телу.
Конфа называется "Учимся программировать". Вот и давайте учится на практических задачах, которые можно продать. Естессно уровень у всех разный но это дело поправимое, пару-тройку месяцев и все желающие будут программировать как боги.

Итак суть - учимся зарабатывая.

ЗЫ: ну не понимаю я искусства ради искусства. Вон Олег взял и книгу написал - уважаю - денег не много, но тоже результат.

Ответ

Уважаемый lom!
Вы почему то ударились в какую-то философию: начали с одного, а потом почему то все свели на деньги, (сами не ожидали, что так получится, а может и специально все это задумали :) ) Олег сообразил книгу - и молодец, я все прекрасно понимаю (меня она, как таковая, может интересовать только с точки зрения "буду я там дето в послесловии в списке "экспертов" ;) или нет", как и, я думаю, большую половину экспертов...)! Разрешите же и мне немного пофилософствовать. Вот ты спрашиваешь, какая практическая польза от асма под дос???

Да вся прелесть асма в том то и заключается, что с ПРАКТИЧЕСКОЙ (я подчеркиваю это слово) ТОЧКИ ЗРЕНИЯ от него СЕЙЧАС (ноябрь, 2001 г.(21 век)) под ДОС ровным счетом НИКАКОЙ ПОЛЬЗЫ!!! (все доводы в пользу "скорости" и "объема" прог я сразу отметаю, т.к. не пройдет и десятка лет как появяться терабайтные винты и сотнегерцовые процы (я уже молчу про светооптику), которым будет абсолютно пофигу размер и оптимизированность проги по коду...), ДОС и (виндос туда же) умрут, как мухи на стекле в жару...

Несколько доводов в пользу того, зачем же нада учить именно асм:
Асм ОЧЕНЬ НЕПЛОХО развивает мозги (это какой то дикий коктейль из шахмат и математики); на сях и паскалях (я вообще молчу про всяческие вижуал бейсики) - можно научить писать даже обезъяну, сунув ей в мохнатые лапы справочник и, поманя парой бананов, усадить за клаву. Все такие проги, которые выйдут "из под пера" этого самого макака и других людей, пишущих на всевозможных сях - штаммы и клоны, друг от друга с точки зрения ИСКУССТВА (котрым вы почему то так пренебрегаете) ничем не отличаются ДА И НЕ МОГУТ ОНИ НИЧЕМ ОТЛИЧАТЬСЯ, ЭТО ВСЕ ЯЗЫКИ ВЫСОКОГО УРОВНЯ, ИХ ДЛЯ ТОГО ТО И ПРИДУМАЛИ, ЧТОБЫ БЫЛО ДОСТУПНО ВСЕМ И КАЖДОМУ ЗАЯВИТЬ СЕБЯ ВЕЛИКИМ ПРОГРАММЕРОМ (чтобы потом заработать много денег) УДОВЛЕТВОРИТЬ ЭТУ ПОТРЕБНОСТЬ.

весь гений программирования сосредоточен в асме, в нем нельзя быть СОВЕРШЕННЫМ; чем больше понимаешь его, тем больше убеждаешься в своей ничтожности и несостоятельности и т.д. и т.п. :)

Вообщем я за то, чтобы все учили паскали и вижуал си!! :) чем меньше нас таких "экспертов" тем больше загадочности и таинственности в прогах на асме, тем за большие деньги их можна толкануть... ))))

заключение: БРЕД ПОЛНЕЙШИЙ! надеюсь, в рассылку не попадет :(...


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 223

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

Вопрос №1639

Всем привет.

Читаю я тут рассылку читаю, читаю и возник у меня вопрос, это касается не только экспертов.
А подскажите плз, ну понимаю я программить на асме под экзотические процессоры, под винду, всякие там загрузчики, ОС писать в конце концов. Но зачем под DOS то? Неужели ею кто-то пользуется? Проскакивают бывает вопросы по поводу вирей под дос, ну ладно вирмейкера мозгами не понять у всех свои хобби. Но скажите плз с ПРАКТИЧЕСКОЙ точки зрения - какой в этом смысл?

Ладно начал уж писать так допишу.
Тут периодически возникают предложения насчет перехода под Win32, написания своей ОС и т.п.
п.1. Так уже давно вопросы появляются и под Win32 правда интересных почти нет.
п.2. Граждане не понимаю я энтузиастов по написанию своей оськи. Ну согласен практически все рано или поздно начинали писать свою ось но до Торвальдса не многие дошли, да и зачем это? Не лучше ли развивать существующие?
Короче несколько сумбурно, но висят параллельно два проекта поэтому обсасывать мысли просто некогда.

Мое предложение в следующем.
Нефиг заниматься фигней (простите за тафтологию) создавать никому не нужные прооги ради самого процесса. Как показывает опыт и не только мой, научиться чему-либо можно лишь на реальных задачах. Так и давайте создавать что-нибудь практически нужное. Ведь ту же самую оську можно писать не ради ее самой а допустим для СУБД реального времени, где кроме этой самой СУБД нифига работать не будет (а ежели делать ее ГИСориентированную то тут уже миллионы$). Или млин если уж пишите вирусы то хоть предметную область изучите (млин сам ругался на WizarXа но вопросы на самом деле несколько [censored]) ведь куча наработок уже есть (я не имею в виду пионеров которые хотят свое имя в журнале "Хакер" увидеть, а людей которые этим занимаются преследуя какую-нить идею см. напр. z0mbie.host.sk).

Ладно ближе к телу.
Конфа называется "Учимся программировать". Вот и давайте учится на практических задачах, которые можно продать. Естессно уровень у всех разный но это дело поправимое, пару-тройку месяцев и все желающие будут программировать как боги.

Итак суть - учимся зарабатывая.

ЗЫ: ну не понимаю я искусства ради искусства. Вон Олег взял и книгу написал - уважаю - денег не много, но тоже результат.

Ответ

Здравствуйте, lom! Прежде чем писать что-нибудь существенное надо, сначала, на простом руку набить ! Ведь недаром же изучение любого языка начинается с вывода присловутого "Hello world" ;) (Кстати предложения то высказывались про переход в защищенный режим а НЕ В WIN32 !!! Забодался уже писать, это НЕ ОДНО И ТОЖЕ !!! Т.к. програмирование в Win32 и яйца выеденного не стоит ! Вы что же думаете все достоинства Windows в её интерфейсе/удобстве/красоте/тра та та/... ???!!!! Все её (их ?) достоинство в удобстве составления программ под нее. И вообще программирования там - кот наплакал, все остальное это вызов соответствующих API функций ;)) И вообще, ассемблер сейчас, к сожелению, для многих лишь искусство ради искусства :((((( Так как все пишут на своем конченом Delphi (саксссссссСсссс ;) А там (как и в принцепе во всем прогр. под windows) програмирования столько сколько в програмировании проги на асме по выводу строки на экран :))))))


Отправил эксперт: Bart Simpson
Эксперт отправил ответов (всего): 15

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

Вопрос №1638

Всем привет.

Читаю я тут рассылку читаю, читаю и ...

Ответ

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

Ответ Брокен Сворду.

Я и говорю - написал несколько сумбурно. Я не призываю всех писать на плюсиках или в паскале. Я же говорю что существует множество интереснейших коммерческих задач именно на ассемблере. Ну фриленсер я, нет у меня такой работы чтобы сидеть рабочий день и искусством заниматься. Я к тому чтобы и на елку влезть и рыло не оцарапать - совмещать приятное с полезным. А то так и будем отвечать на что такое мув и где найти доку по софтайсу.



Отправил эксперт: lom (http://www.lom.spb.ru - )
Эксперт отправил ответов (всего): 6

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

Вопрос №1638

Всем привет.

Читаю я тут рассылку читаю, читаю и ...

Ответ

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

Ответ Брокен Сворду.

Я и говорю - написал несколько сумбурно. Я не призываю всех писать на плюсиках или в паскале. Я же говорю что существует множество интереснейших коммерческих задач именно на ассемблере. Ну фриленсер я, нет у меня такой работы чтобы сидеть рабочий день и искусством заниматься. Я к тому чтобы и на елку влезть и рыло не оцарапать - совмещать приятное с полезным. А то так и будем отвечать на что такое мув и где найти доку по софтайсу.

Барту Симпсону

ну извини - в защищенный режим :) - суть письма не в этом. :)

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


Отправил эксперт: lom (http://www.lom.spb.ru - )
Эксперт отправил ответов (всего): 7

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

Вопрос №1650

Вопрос к эксперту DiGit : где найти ту исчерпывающую инфу по защищенному режиму?

Ответ

Здравствуйте, Kostyan!
Инфу-то можно найти. А у меня прога не воркает. Перегружает комп по холодному.
www.alexfru.chat.ru Пиши если че слинкуется и получится. А то может мой атлон глюконит


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

Экспертная группа: пВЭЙЕ ЧПРТПУЩ РП РТПЗТБННЙТПЧБОЙА ОБ бУУЕНВМЕТЕ РПД DOS

Вопрос №1639

Всем привет.

Читаю я тут рассылку читаю, читаю и возник у меня вопрос, это касается не только экспертов.
А подскажите плз, ну понимаю я программить на асме под экзотические процессоры, под винду, всякие там загрузчики, ОС писать в конце концов. Но зачем под DOS то? Неужели ею кто-то пользуется? Проскакивают бывает вопросы по поводу вирей под дос, ну ладно вирмейкера мозгами не понять у всех свои хобби. Но скажите плз с ПРАКТИЧЕСКОЙ точки зрения - какой в этом смысл?

Ладно начал уж писать так допишу.
Тут периодически возникают предложения насчет перехода под Win32, написания своей ОС и т.п.
п.1. Так уже давно вопросы появляются и под Win32 правда интересных почти нет.
п.2. Граждане не понимаю я энтузиастов по написанию своей оськи. Ну согласен практически все рано или поздно начинали писать свою ось но до Торвальдса не многие дошли, да и зачем это? Не лучше ли развивать существующие?
Короче несколько сумбурно, но висят параллельно два проекта поэтому обсасывать мысли просто некогда.

Мое предложение в следующем.
Нефиг заниматься фигней (простите за тафтологию) создавать никому не нужные прооги ради самого процесса. Как показывает опыт и не только мой, научиться чему-либо можно лишь на реальных задачах. Так и давайте создавать что-нибудь практически нужное. Ведь ту же самую оську можно писать не ради ее самой а допустим для СУБД реального времени, где кроме этой самой СУБД нифига работать не будет (а ежели делать ее ГИСориентированную то тут уже миллионы$). Или млин если уж пишите вирусы то хоть предметную область изучите (млин сам ругался на WizarXа но вопросы на самом деле несколько [censored]) ведь куча наработок уже есть (я не имею в виду пионеров которые хотят свое имя в журнале "Хакер" увидеть, а людей которые этим занимаются преследуя какую-нить идею см. напр. z0mbie.host.sk).

Ладно ближе к телу.
Конфа называется "Учимся программировать". Вот и давайте учится на практических задачах, которые можно продать. Естессно уровень у всех разный но это дело поправимое, пару-тройку месяцев и все желающие будут программировать как боги.

Итак суть - учимся зарабатывая.

ЗЫ: ну не понимаю я искусства ради искусства. Вон Олег взял и книгу написал - уважаю - денег не много, но тоже результат.

Ответ

Здравствуйте, lom!
Не под дос, а под реальный режим процессора. Была бы другая ОС под реальный программил бы под нее. А насчет пользы. Так какой еврей откопался. Пиши и продавай сам. А линух писали ради интереса. И мы пишем ради самого процесса. А что еще надо начинающему программеру, когда ему не более 20 лет. К тому же у меня асм - хобби. А так я программю на Сях. И если не нравится так есть выход- отпишись. И вот еще люди!!!! Давайте прогить под протектед моуд. Т.е. кто хочет пишите будем разбираться.


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

Экспертная группа: пВЭЙЕ ЧПРТПУЩ РП РТПЗТБННЙТПЧБОЙА ОБ бУУЕНВМЕТЕ РПД DOS

Вопрос №1626

Здравствуйте уважаемые эксперты!
Вот часть исходника моей программы форматирования 0-й дорожки винта:
.model tiny
.code
.386
org 100h

;Данные************************************************************************
desc0 db 0000
desc1 db 0000

format: mov ah,05
mov dh,00
mov dl,00 ; 80h - Для жесткого диска (C:\)
mov ch,00
int 13h
ret

start: lea dx,desc0
mov es,dx
lea dx,desc1
mov bx,dx
call format
... И. Т. Д.

Вторая программа намного больше, я ее вставил в приложение.
Вторая программа - самый безобидный тест.

Я пытался совместить эти две программы, но ничего не получилось.

Я хочу сделать так, чтобы при запуске второй программы (теста) код первой программы помещалась в файл command.com и при следующем запуске компьютера действовал.

Пожалуйста, покажите, как это сделать. Если возможно, измените исходник второй программы так, чтобы мой замысел удался.

Заранее благодарен.

Ответ

Здравствуйте, Kostia!
Вирусописатель ты или что ли. Ну как скажу подменяешь точку входа в command.com'e и переносишь свой код куда надо. А лучше отформатируй свой винт командой format c: если хочется покости :)))


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

Экспертная группа: пВЭЙЕ ЧПРТПУЩ РП РТПЗТБННЙТПЧБОЙА ОБ бУУЕНВМЕТЕ РПД DOS

Вопрос №1623

Привет всем!!!
ТУт недавно задавался вопрос по поводу горения лампочки HDD и так никто толково не ответил.
Там есть порт 1f7h и у него последний бит отвечает за занятость HDD. Вот код программы.
.model tiny
.code
startupcode
begin:
mov dx,1f7h
in al,dx
or al,10000000b
mov cx,0ffffh
metka2:
push cx
metka:
out dx,al
jmp $+2
loop metka
pop cx
loop metka2
mov ah,4ch
int 21h
end begin
И еще был вопрос по поводу открытия и закрытия сидирома. Вот API fuction: mciSendString("Set cdaoudio door open wait",HULL,0,handle) либо close вместо open. Рулез.

Ответ

Здравствуйте, DiGiT!
Вот Дигит запарился и немного не то написал. Не close, а closed. И не HULL, а NULL. И еще можно у дисковода лампочки зажечь также. В тичхелпе смотрите там много что есть в разделе порты в/в


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

Экспертная группа: пВЭЙЕ ЧПРТПУЩ РП РТПЗТБННЙТПЧБОЙА ОБ бУУЕНВМЕТЕ РПД DOS

Вопрос №1659

Расскажите пожайлуста как прячут BADы на винте и как проверить, то что они их спраталя???? (слышал "краем уха"..)

Ответ

Здравствуйте, Дмитрий!
Самый расхожий вариант - использование проги типа Partition Magic. Ею можно и заныкать бэды и проверить наличие.


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

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

Вопрос №1656

Расскажите пожайлуста как через асм "слушать" TCP/IP пакеты

Ответ

Здравствуйте, Сегрей!
Напрямую не получится, есть такая библиотечка c драйверами, packet.sys, packet.dll и т.д. вроде, у себя не нашел убил наверное. Многие снифферы ее используют. Я где-то даже сырцы видел. А в асме просто вызываешь библиотечные функции. Навскидку не скажу но вроде бы так просто адаптер в promiscuous не переключить, там какие-то траблы с этим - давно занимался уже не помню.
с уважением lom


Отправил эксперт: lom (http://www.lom.spb.ru - )
Эксперт отправил ответов (всего): 9

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

Вопрос №1640

Здравствуйте!
Есть прог-ма, которая меняет заглавные буквы на прописные и наоборот,но кол-во букв приходится считать в ручную и записывать в СХ,как сделать что бы строка вводилась с клавиатуры и буквы менялись,подправте плз :)

Ответ

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

Я уже писал о преобразовании букв.
В латинских буквах за регистр отвечает бит 5. то есть чтобы изменить регистр, не важно в какую сторону. надо сделать
xor al, 20h

Для русских букв естественно не все так просто, зависит от кодировки.


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 195

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

Вопрос №1630

Всем привет!
Можно сразу ответ и вопрос? Спасибо!
Ответ на вопрос №1610: Я когда-то на Spece программировал Z80, так были классные дизассемблер и ассемблер - GENS3 и MONS3 (или наоборот? :)))). А потом появились GENS4,MONS4 но были уже не актуальны. На эмуляторе Spectruma прекрасно идут. Пробуйте!
Ответ на вопрос №1614: mr. Batsman! "Просумировать" пишется с двумя "м", "нечего не понял" как "ничего не понял", "чегото" через дефис, а "проще-ли" без дефиса. А дальше я не читал. Так что если вы все же "переборуете" свое желание, то подпишитесь все же на рассылку русского языка.
Вопрос: Продолжение моего вопроса №1615 (спасибо всем за ответы!). Со счетчиком разобрался. Теперь пытаюсь запрограммировать звук. Такой фрагмент:
mov al,36h
out 43h,al
mov ax,0450
out 40h,al
mov al,ah
out 40h,al
in al,61h
or al,03h
out 61h,al
Звука нет. Винда дюже ругается. Выполнять отказывается. Че я ей плохого сделал?
С уважением Вал.Ик.

Ответ

Здравствуйте, Вал.Ик.!
Ошибка в том, что ты пытаешься программировать 0 канал микросхемы таймера, который используется системными часами, а за генерацию звука отвечает канал 2. В командный регистр 43h нужно записать не 36h а 10110110b (биты 6-7 отвечают за номер канала 10-2-й) и данные писать не в 40h, а в 42h. Должно работать. Удачи!


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

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

Вопрос №1641

Здравствуйте!
Есть прог-ма, которая меняет заглавные буквы на прописные и наоборот,но кол-во букв приходится считать в ручную и записывать в СХ,как сделать что бы строка вводилась с клавиатуры и буквы менялись,подправте плз :)

Ответ

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

А про количество букв... все очень просто.
Вот сделал ты:

mov dl, [bx]

Сразу после этого сделай следующее.

cmp dl, '$'
jz exit

и все. никакой cx уже не нужен.

Исправленную программу прилагаю.

Приложение:


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 196

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

Вопрос №1651

Приветствую,уважаемые эксперты.
У меня такая проблема:загружаю битмап 320х200х256 как
массив из байтов пропускаю заголовок, и напрямую в видеопамять. А вот с палитпой - проблемы. Цвета не те.
Подскажите, как загружать палитру в регисры EGA.

И ещё: есть у кого-нибудь алгоритм или прога увеличения/уменьшения изображения на 50%.

Заранее спасибо!!!

Ответ

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

Смотри TechHelp там все это есть. (можно взять у меня на сайте)

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


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 197

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

Вопрос №1663

Уважаемые эксперты !
Не могли бы Вы ответить на несколько моих вопросов по коду программы , рработающей с mbr и boot
Вопрос : в данном куске проги устанавливается собственный стек , зачем , почему указывается именно число 7BFEh?
Не совсем понятно почему в процедуре "отрезания у DOSпамяти" указывается число 0413h , зачем операция арифметического сдвига именно на 6 ? Что имеется ввиду под 8a и 9c в подпрограмме копирования ?
PUSH CS
POP SS
MOV SP,7BFEh.
;Установка соб-
;ственного стека
;
push cs ;DS = CS
pop ds ;
;
sub word ptr ds:[0413h],2 ;"Отрежем" у DOS
mov ax,ds:[0413h] ;два килобайта
mov cl,6 ;памяти и вычис-
;лим
sal ax,cl ;сегментный ад-
;рес,по которому
;находится полу-
;ченный блок
mov es,ax ;Поместим адрес
;в ES
xor si,si ;И скопируем код
mov cx,prg_lenght ;программы длиной
prg_copy: db 8ah ;"prg_lenght" в
db 9ch ;память по адре-
additor db 00h ;су ES : 0000h
db 7ch ;Сам код при за-
mov byte ptr es:[si],bl;грузке помещае-
inc si ;тся BIOS по ад-
loop cs:prg_copy ;ресу 0000:7C00h

Ответ

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

По поводе стека:
С какого адреса у нас начинается бутсектор? правильно, с 7c00h
что у нас до того?
1. таблица векторов прерываний - 0 - 400h
2. Системная область биос - 400h - 500h

Все, больше там ничего нет. и память с 500h - 7c00h свободна. почему бы не поместить туда стек?

Мне только не понятно зачем мы помещаем стек туда, если код после того переписывается в конец памяти. получаются опять дыры.
500-7с00 стек (но не слишком ли много для него места?)
7с00 - 9F800 свободно.

Но это уже тонкости.


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 198

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

Вопрос №1660

Расскажите пожайлуста как прячут BADы на винте и как проверить, то что они их спраталя???? (слышал "краем уха"..)

Ответ

Здравствуйте, Дмитрий!
А прочитать правила подачи вопроса тяжело было?
Вопрос отправляется только в одну подгруппу, не надо его отправлять сразу в несколько подгрупп.
Експерты зарегестрированые в "DOS'е" 99% зарегестрированы в "win'e" и наоборот.


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

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

Вопрос №1659

Расскажите пожайлуста как прячут BADы на винте и как проверить, то что они их спраталя???? (слышал "краем уха"..)

Ответ

Здравствуйте, Дмитрий!
"Прячутся" при форматировании, обычно уже в компьюторных фирмах такой винт форматируют, причем так, что файловая таблица не прописывается в сбойных секторах. Определить наличие - любым низкоуровневым скан-диском.

ЗЫ.Оффтопик: Хотел недавно купить USB-drive, выполненный в виде брелка с флеш памятью (знаете наверное про такие), но вынужден был оказаться от покупки - оказывается уже через несколько месяцев они покрываются bad-блоками на 3-4 процента(!!!!) от общего объема. Вот так, а они еще гады цены на флеш задирают. Моему разочарованию нет предела ;((((


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

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

Вопрос №1652

Привет Всем!

Я не программист но с удовольствием слежу за рассылкой, и благодаря экспертам во многом разобрался за что им ОГРОМНОЕ спасибо.

Случилась у меня такая бяка: Установил я криатив бластер(PCI) на комп(Дюрон 700 мамка АК-12 WinМЕ) всЈ стало как положено.
1. Проверил связь хорошая.
2.Перегрузил и вывалился в защищенный режим(кроме него ничего не грузится)
3.Переустановил драйвера(подWinME) результат см п1-2
4.Удалил модем
5. Переставил на другой сом-порт повторил п1-5
Результат прежний
Снял модем с компа и всЈ стало на свои места. Объясните пожалуйста чайнику в чЈм дело?
Зарание спасибо!

Ответ

Здравствуйте, irgi!
- Желательно бы знать чипсет мамки, если это староглючный amd750 или менее глючный kt133, то надо качать соответствующие драйвера на мамку - видно, что система полностью разваливается после перезагрузки, что видимо является заслугой южного и северного мостов. Проверь IRQ-прерывания...
- Не знаю уж поможет ли смена драйверов на сам модем, но если есть возможность получить свежие драйвера для модема - попробуй.
- Ну и наконец последняя возможная причина - это WinME, все еще достаточно сыроватая ОС, глюки которой мало кому знакомы. Если не трудно перекинуться на другую ОС - попробуй "стабильный вариант" -Win98SE.


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

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

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

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

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


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

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


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

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


Управляющий рассылкой,

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

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


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


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

В избранное