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

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


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

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

Выпуск № 357
от 01.09.2002, 16:50

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


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

Igoryk
Статус: Опытный
Общий рейтинг: 113.3
URL: В помощь программисту
[Подробней >>]
Byter
Статус: Опытный
Общий рейтинг: 132.46
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 158.76
[Подробней >>]
 
kvINT
Статус: Опытный
Общий рейтинг: 110.33
[Подробней >>]
Shal
Статус: Опытный
Общий рейтинг: 107.42
[Подробней >>]
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 116.09
URL: Beeblebrox / TMA HomePage
[Подробней >>]
 
Gibbel
Статус: Опытный
Общий рейтинг: 108.65
URL: Страничка обо мне и моих друзьях
[Подробней >>]
ASMодей
Статус: Опытный
Общий рейтинг: 125.49
[Подробней >>]
Portnov
Статус: Опытный
Общий рейтинг: 121.77
URL: Мой сайтик...
[Подробней >>]
 
Топор
Статус: Профессиональный
Общий рейтинг: 117.44
URL: Хорошая Русская Металлическая команда
Телефон: (8462)500298
[Подробней >>]
nix
Статус: Опытный
Общий рейтинг: 111.72
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 119.23
URL: Пристанище неодинокого программиста
[Подробней >>]
 
ARDoS
Статус: Доверительный
Общий рейтинг: 106.34
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 135.82
URL: моя рассылка по Protected Mode
[Подробней >>]
Pablo
Статус: Профессиональный
Общий рейтинг: 131.98
URL: Моя страничка
[Подробней >>]
 
Sensey
Статус: Профессиональный
Общий рейтинг: 129.72
URL: Страничка рассылки Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
copycon
Статус: Доверительный
Общий рейтинг: 112.05
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 141.57
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 116.74
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 111.83
[Подробней >>]
SonicX
Статус: Доверительный
Общий рейтинг: 117.44
[Подробней >>]
 
UFO
Статус: Опытный
Общий рейтинг: 108.55
[Подробней >>]


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

Вопрос № 1095. Здравствуйте! Прочитав первый урок и попытавшись создать ПЕРВУЮ свою программку я даже не смог т... (ответов: 5)
Вопрос № 1096. Здравствуйте Ув. Эксперты. Тут только что был исходник от Dios'а по определению тактовой частоты про... (ответов: 8)
Вопрос № 1097. Zдравствуйте ув. эксперты! Как мне написать такую программу которая: 1)Спрашивает ваше имя 2)Выводит... (ответов: 4)
Вопрос № 1099. Здравствуйте эксперты! Срочно нужна ваша помошь: Пользователь запустил програмку, а она оказалась ви... (ответов: 4)
Вопрос № 1100. Низкий поклон всем! Вот моя программа. Что мне занести в DI(строка 23) чтоб сообщение вывести в цент... (ответов: 6)
Вопрос № 1101. Всегда, когда я включаю игру с 3-х мерной графикой она у меня виснет, почему? ... (ответов: 6)
Вопрос № 1102. Здравствуйте уважаемые эксперты. Пожалуйста поскажите где можно скачать SoftIce 4.0 и выше а то пяты... (ответов: 1)
Вопрос № 1103. Здравствуйте уважаемые эксперты, у меня не вопрос, а просьба - если у кого есть, вышлите мне на мыл... (ответов: 2)
Вопрос № 1104. Подпишись сейчас или потом будет поздно : http://subscribe.ru/catalog/comp.soft.prog.intelpm )... (ответов: 3)
Вопрос № 1105. Ув. эксперты. Вот вопросец. Некоторые из Вас наверное слышали про такую фишу об МСДН как ее подписка... (ответов: 3)
Вопрос № 1106. А ну-ка быстро в форум! Там только тебя и нет! Почти все собрались! А форумы - инте-ере-есные... :... (ответов: 1)
Вопрос № 1107. Привет всем уважемым экспертам. Вопросик по MC51 возник. Проблема вот в чем: Чем занят процессор в т... (ответов: 3)
Вопрос № 1109. Здравствуйте! Можно ли получить описание всех команд и прерываний языка Ассемблер. Заранее благодаре... (ответов: 10)
Вопрос № 1110. Не знаю как в твоем клиторе, но вот я делал БД на Делфи с paradox-таблицами, так вот каждый индекс т... (ответов: 1)
Вопрос № 1111. Приветствую... Слышали про фундаментальный баг в Win32 Messaging System ? Если нет, то читайте &qu... (ответов: 2)
Вопрос № 1112. Здравствуйте. Вопрос мой немного не в тему, но большая просьба помочь. У меня стояла ОС Windows 98,... (ответов: 5)
Вопрос № 1113. Добрый день. У меня следующая простая задачка: Необходимо выражение, взятое по смещению 4H (размер в... (ответов: 5)
Вопрос № 1114. Здравствуйте все, у кого есть электронные книги по ASSEMBLER'у : самоучители, справочники и т.п., по... (ответов: 4)
Вопрос № 1115. Ну, это, конечно, конкретный оффтопик, но, я думаю, предложение всех заинтересует. Итак, предлагаю в... (ответов: 3)
Вопрос № 1116. Начал писать программы на ассемблере для Windows. Не пойму некоторых вещей: 1 Для чего надо получать... (ответов: 6)
Вопрос № 1117. Добрейший денек, м.б... Я что-то не совсем видимо догнал. Нужно при форматировании дискеты заменить ... (ответов: 2)
Вопрос № 1118. доброе время суток, уважаемые эксперты. подскажите пожалуйста, как выводить на экран числа ( значени... (ответов: 7)

Вопросов: 22, ответов: 91


 Вопрос № 1095

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

Прочитав первый урок и попытавшись создать ПЕРВУЮ свою программку я даже не смог толком запустить сам Ассемблер.
Дистрибутив я скачал с вашего сайта, кое как установил его (правильно ли - даже не знаю).
У меня Windows XP. Запускается только PWB (что это - я тоже не знаю).

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

Буду вам очень признателен.

Александр



Вопрос отправлен: 26.08.2002, 16:13
Отправитель: Александр

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

Отвечает Igoryk

Здравствуйте, Александр!
Раз у тебя появились файлы, то ассемблер ты установил правильно. Теперь перейди в Сеанс MS-DOS. Перейди в директорию твоего ассемблера (у меня D:TASMBIN, у тебя скорее всего на диске C:). Набери в командной строке edit. Нажми Enter. На экране появится редактор файлов. Здесь ты наберешь свою первую программу. Затем сохрани этот файл под любым именем, но с расширением asm. Выйди из Edit. В командной строке набери tasm Твой_Файл.asm. Нажми Enter. Если нет ошибок, то создается файл Твой_файл.obj. Теперь набери tasm /t /x Tвой_файл.obj И получится файл Твой_файл.com или .exe

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


Отвечает Byter

Доброе время суток, Александр!
Программа пишется в любом текстовом редакторе.
Ассемблируется так:
ml.exe prog01.asm /AT
Это будет ком файл.
Вообще в приложении к книге описывается ассемблирование.


Ответ отправлен: 26.08.2002, 16:39
Отправитель: Byter


Отвечает masquer

Добрый день, Александр!
Снеси ХР... Шутка.
Блин, ну сколько еще объяснять нужно - под системами NT (NT/2k/XP) некоторые ДОС программы работать не будут (те, которые с железом работают, например, и некоторые другие).
Если так неймется под досом писать - в досе и нужно писать.

Ответ отправлен: 26.08.2002, 16:39
Отправитель: masquer


Отвечает kvINT

Добрый день, Александр!
Ничего не надо запускать, кроме фара или чего-то аналогичного. Ассемблер - это не интегрированная среда, как-то ни у кого до сих пор не дощли руки это сделать, а скорее это никому нафиг не нужно из тех соображений, что если ты не можешь команду набрать в командной строке, то и нехрена тебе делать в ассемблере.
Но это все лирические отступления, они тоже нафиг никому не нужны.(Блин, я поражаюсь сам себе - после 2 литров пива я тщательно исправляю каждую опечатку, а их было уже штук 30, ну не люблю я безграмотного текста, наверно, это уже диагноз, написать "Ща зделаем мона так а мона сяк" я уже не смогу даже под дулом пистолета. Опять дурацкое отступление, exuse me, просто завтра ехать на комиссию по лишению прав).
Короче, установил асм, пользуйся командной строкой, а лучше bat-файлами, а еще лучше юзай make-файлы.
Ладно, с bat и make разберешься после, а пока просто запусти фар, перейди в каталог, где лежит твоя прога и набери в командной строке (если юзаешь tasm) c: asmin asm proga.asm, где proga.asm - имя твоей проги. Путь у тебя может быть другим к tasm.exe, набирай свой путь в этом случае. Расширение обязательно должно быть .asm, если не знаешь как это сделать - в блокноте выбираешь "сохранить как", затем выбираешь "все файлы", после этого сохраняешь как хочешь.
Если в проге у тебя все нормально, увидишь сообщения тасма, что эрроров 0 и получишь файл proga.obj. (Чтобы увидеть сообщения тасма из-под фара нажми Ctrl+F1 Ctrl+F2).
Это значит, что ты файл скомпилировал.
Затем в командной строке набирай c: asmin link.exe /t proga.obj и если у тебя все в порядке, получишь свой исполнимый файл proga.com. Если линковщик заругается на отсутствие какого-то файла (Ctrl+F1 Ctrl+F2), сунь этот файл в свой каталог. Ключ /t означает, что ты хочешь получить com.файл. Вроде все.

Ответ отправлен: 27.08.2002, 02:41
Отправитель: kvINT


Отвечает Shal

Приветствую Вас, Александр!
Я бы тебе посоветовал возьми два файла: tasm.exe, tlink.exe.
Начинающему их хватит для написания проги на асм.
Создание ехе:
tasm.exe file.asm
tlink.exe file.obj


Ответ отправлен: 28.08.2002, 00:28
Отправитель: Shal


 Вопрос № 1096

Здравствуйте Ув. Эксперты.
Тут только что был исходник от Dios'а по определению тактовой
частоты процессора. Мне не понятна одна вещь: как в одном исходнике
можно одновременно использовать регистры AX и EAX? Директива .386
действует глобально и у меня все регистры получают префикс 32-битности
66h. Вариант .386 mov eax,.. .8086 слишком утомителен да и у
Dios'а этого нет. Может здесь использовался другой транслятор,
а не Tasm/Masm к которым я уже привык? Кстати ими я пример не смог
скомпилить. На всякий случай исходник в приложении. Вот,например,
кусок mov ah, 0eh
int 10h
.noout: push edx
mov eax, ebx
и как тут сделать чтобы ah-8 bit, a eax-32 bit в листинге и .obj
файле получить при использовании Tasm/Masm?
Пользуясь случаем передаю привет из студии:))) и выражаю благодарность
эксперту Broken Sword. Книжки от Интела таки дошли!!!!! Заказывал
в апреле - получил в середине августа! На них уже не 2001, а 2002
год стоит. Допечатали видимо и выполнили заказ. Молодцы!


Приложение:


Вопрос отправлен: 26.08.2002, 16:37
Отправитель: Начинающий ламер

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

Отвечает Beeblebrox

Здравствуйте, Начинающий ламер!
Ну, ты даешь :)
Директива .386 не имеет никакого отношения к префиксу изменения разрядности. Зато имеет отношение модель use16 и use32.
Если модель use16, то команда mov ax,bx будет без префикса, а команда mov eax,ebx - с префиксом.
В модели use32 все наоборот.
А почему ты решил, что нельзя их использовать одновременно? Нельзя написать разве что так: mov ax,ebx

Ответ отправлен: 26.08.2002, 17:02
Отправитель: Beeblebrox


Отвечает Byter

Доброе время суток, Начинающий ламер!
Dios программирует на FASM.


Ответ отправлен: 27.08.2002, 15:45
Отправитель: Byter


Отвечает masquer

Добрый день, Начинающий ламер!
Я вообще не понял вопроса, какие проблемы при использовании регистров возникают, нужно использовать ax - так и используй, al, ah, eax - точно так же. Можно все использовать.

Ответ отправлен: 26.08.2002, 16:48
Отправитель: masquer


Отвечает Gibbel

Доброе время суток, Начинающий ламер!
Процессор может одновременно опрерировать и с 16-битными и с 32- битными регистрами.
При этом, префикс 66h ставиться для изменения разрядности. Например, если модель 32-битная, и перед командой стоит 66h, то процессор использует 16-битные регистры, а если не стоит - 32-битные. Например,
33h,C0h = xor eax,eax
66h,33h,C0h = xor ax,ax
И т.д.
То же для 16-битной модели:
33h,C0h = xor ax,ax
66h,33h,C0h = xor eax,eax
P.S. Старайся избегать в своих программах использования префикса 66h, так как это сильно сказывается на быстродействии...


Ответ отправлен: 27.08.2002, 11:07
Отправитель: Gibbel


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

Доброе время суток, Начинающий ламер!
Исходник действительно написан для другого компилятора, а
именно для FASM. Но в других компиляторах возникнет та же
ситуация. Дело в том, что префикс 66h проставляется не из-за
использования директивы .386. Она просто позволяет
использовать 32-разрядные регистры. Этот префикс ставится,
когда в 16-битном сегменте (use 16) используются 32-битные
команды (mov eax, ...).


Ответ отправлен: 27.08.2002, 08:43
Отправитель: ASMодей


Отвечает Portnov

Добрый день, Начинающий ламер!
Что-то вы, видно, не очень хорошо разобрались с тем, что такое 16/32-ухбитный код. При директиве .386 спокойно можно использовать и 8-ми, и 16-ти, и 32-х разрядные регистры. В 386м все они есть. Префикс смены разрядности не формируется в таком случае. В том исходнике, к-рый у вас в приложении, используется полностью 16-битный код, на это явно указывает директива use16. Разрядность кода оказвывает влияние на:
1. адресацию кода: текущая инструкция берется по адресу CS:IP в 16-битном режиме и CS:EIP - в 32-х битном. Следствие - 32-хбитный сегмент может быть до 4х Гб, а 16-битный - только до 64Кб.
2. адресацию данных: например, Lodsb,Stosb используют в 16-битном режиме SI и DI, а в 32-х битном - ESI и EDI.
В обоих режимах можно спокойно использовать все имеющиеся в процессоре регистры. Не, ну, правда, соврал я, такие регистры, как CR0..CR3, DR0..DR3, становятся доступны только в 32-х битном защищенном режиме, но все РОН (Регистры Общего Назначения) доступны всегда.
С уважением, Portnov.

Ответ отправлен: 26.08.2002, 17:57
Отправитель: Portnov


Отвечает Топор

Добрый день, Начинающий ламер!
Факт наличия директивы .386 никак не влияет на префикс 66h. Она лишь указывает, что регистры будут использованы во всю их ширь. Всё зависит от того, как описан сегмент, а он у тебя почему-то не описан ни фига. Для com-программы зачин должен быть примерно такой:
.386
model tiny ; модель памяти для COM
code segment para public 'code' use16
; не поленись прописать это полностью
org 100h
; так отводится место для PSP, при необходимости можно не делать
Далее текст проги, а затем
code ends
end метка_входа
Ну так вот, если use16, то 66h вставляется перед всеми операциями с 32битными регистрами. И наоборот, если было use32, то 66h вставляется перед операциями с 16битными регистрами.
Удачи!


Ответ отправлен: 26.08.2002, 17:56
Отправитель: Топор


Отвечает nix

Приветствую Вас, Начинающий ламер!
Нужно внимательнее читать инфу на сайте, где взял исходник - DIOS использует ассемблер WASM!
Скачать можно с его сайта.
Всего...

Ответ отправлен: 30.08.2002, 14:29
Отправитель: nix


 Вопрос № 1097

Zдравствуйте ув. эксперты!
Как мне написать такую программу которая:
1)Спрашивает ваше имя
2)Выводит на экран например-Hello <ВВЕДЁННОЕ ИМЯ>
Спасибо!



Вопрос отправлен: 26.08.2002, 17:26
Отправитель: R@ptor (Spinosaur@narod.ru)

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

Отвечает Артём Шегеда

Приветствую Вас, R@ptor!


Приложение:

Ответ отправлен: 26.08.2002, 18:54
Отправитель: Артём Шегеда


Отвечает Byter

Добрый день, R@ptor!
1Ждешь нажатия клавиши
2Пишеш скан-код клавиши в видеобуффер
3Если пользователь нажал Enter ,то копируешь то что он ввел
куда-нибудь,в конце ставишь $ и можешь выводить.


Ответ отправлен: 27.08.2002, 15:53
Отправитель: Byter


Отвечает Shal

Здравствуйте, R@ptor!


Приложение:

Ответ отправлен: 28.08.2002, 08:59
Отправитель: Shal


Отвечает ARDoS

Приветствую Вас, R@ptor!
В моей проге имя не больше семи символов и выход при нажатии на Enter
Kомпиль в com файл:
tasm PRG.asm,,
tlink /t prg.obj


Приложение:

Ответ отправлен: 28.08.2002, 14:40
Отправитель: ARDoS


 Вопрос № 1099

Здравствуйте эксперты!
Срочно нужна ваша помошь:
Пользователь запустил програмку, а она оказалась вирусом:-((
HDDKILL всего 215 байт (можно скачать здесь: http://viruszone.by.ru/viruses/HDDKill.zip)
Подскажите как восстановить данные на винте.
Очень срочно!!!!
Важная информация может пропасть!!!
А с ней и я заодно:-(((



Вопрос отправлен: 26.08.2002, 20:44
Отправитель: alex (a_klinton@mail.ru)

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

Отвечает Byter

Доброе время суток, alex!
Таши к кому-нибудь винт,и проверяй
а)винт антивирусом
б)autoexec.bat
c)Boot
д)Реестер

Ответ отправлен: 27.08.2002, 15:56
Отправитель: Byter


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

Добрый день, alex!
Вынужден огорчить: если этот вирус отработал до конца, то
на жестких дисках не осталось ни одного сектора со старыми
данными.


Ответ отправлен: 27.08.2002, 18:36
Отправитель: ASMодей


Отвечает Broken Sword

Приветствую Вас, alex!
Значит, не переживай! Смотри что делает сей экземплярец:
сначала он определяет кол-во HDD на обоих контроллерах (ячейка 0040:0075), и если их нет, то абсолютно безобидно входит в "вечный цикл". Под XP у меня лично данная ячейка всегда равна 0, поэтому НИКАКОГО вреда сей вирус причинить не может. Вот допустим, что ты (или тот злополучный юзер)его запустил в голом DOS-е. Что произойдет тогда:
тогда вирь определяет параметры твоего HDD (08h ф-ция 13h прерывания), затем посредством 03h ф-ции 13h прерывания начинает писать в сектора, начиная с первого НУЛИ... тааааааак....
ALARM!
А вот теперь можешь начать панику! ДАННЫЙ ВИРЬ забивает нулями ВСЕ сектора на ВСЕХ ДОРОЖКАХ, причем как с одной так и с другой стороны!!! ОН ПРОСТО БЕШЕННЫЙ! У НЕГО НЕТ ВЫХОДА! НИКАКИХ int 20h!!! он в цикле дорожка за дорожкой с пеной у рта забивает все и вся нулями! Восстановить инфу (если вирь отработал ДО КОНЦА и его не прервали) НЕ УДАСТСЯ НИКАКИМИ пирожками!!!
Хотя Sensey когда-то упоминал про "остаточное намагничивание", но это уже из области фантастики. Что могу тебе сказать: не переживай, нет такой инфы, которую нельзя восстановить (я имею ввиду все начать заново :)
Если тебя успокоит - у меня недавно спи* мобилу Panasonic GD93, я чтоб ее купить работал два года назад 3 месяца как болван... Так что русское радио, все будет хорошо... )
p.s. единственное, что может тебя успокоить. Данный вирь после определения параметров почему то сказал мне, что у меня на дорожке ВСЕГО 4 сектора. Вот он их и стирает с каждой дорожки (т.е. думает что стирает ВСЮ дорожку). По-моему, уважаемый вирь ошибается - на дорожке у меня гораздо больше секторов... (по-моим подсчетам - 17), поэтому данный вирь убил БЫ у меня только 25 процентов всей инфы на винте. Короче, - все, что окажутся не нули - то спасенная инфа :)
p.p.s. я не знаю, если тебе ОЧЕНЬ СИЛЬНО ПОВЕЗЕТ, можешь попробовать tiramisu, если она действительно так крута, то по обрывкам ФАТ-а и самих данных восстановит тебе те 75%, но сдается мне, что тебе ОЧЕНЬ НЕ ПОВЕЗЛО... :(

Ответ отправлен: 26.08.2002, 22:04
Отправитель: Broken Sword


Отвечает ARDoS

Добрый день, alex!
Если вирь просто удалил инфу, то я тебе посоветую воспользоваться прогой Recover 4 all или UnErase.Поищи в инете. Но вирь запросто мог записать что-то сверху, тогда-помахай инфе ручкой.


Ответ отправлен: 28.08.2002, 14:41
Отправитель: ARDoS


 Вопрос № 1100

Низкий поклон всем!
Вот моя программа. Что мне занести в DI(строка 23) чтоб сообщение вывести в центр экрана? И как мне это высчитать?
А то я минут 30 провозился вбивая в DI всякие значения на угад.
Спасибо!


Приложение:


Вопрос отправлен: 26.08.2002, 21:25
Отправитель: R@ptor

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

Отвечает Pablo

Приветствую Вас, R@ptor!
Ну вообще говоря формула такая di = (x + y * dx)*2, где x - координата по x, y - координата по y, dx - длина экрана по x. Обычно dx = 80, но это число ты можешь взять по адресу 40h:4ah.

Ответ отправлен: 27.08.2002, 21:43
Отправитель: Pablo


Отвечает Byter

Доброе время суток, R@ptor!
Длинну своей строки дели на два и отнимай от половины строки
монитора.(учти ,что символ в видеопамяти занимает 2 байта)


Ответ отправлен: 27.08.2002, 15:59
Отправитель: Byter


Отвечает Portnov

Доброе время суток, R@ptor!
Размер_страницы=ширина*высота*2; (потому что символ-атрибут-символ-атрибут-...). Значит, середина страницы=ширина*высота, а место для сообщения=ширина*высота - length(message)/2.
C уважением, Portnov.


Ответ отправлен: 27.08.2002, 10:33
Отправитель: Portnov


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

Приветствую Вас, R@ptor!
Вот сложнейший алгоритм определения адреса центра экрана:
mess db 'R@ptor!', 0 ;Строка
mess_len = $ - mess ;Длина строки
W equ 80 ;Ширина экрана
H equ 25 ;Высота экрана
XPOS equ (W/2-mess_len/2)*2 ;Адрес середины
;по горизонтали
YPOS equ H/2*W*2 ;Адрес середины
;по вертикали
ADDR equ YPOS + XPOS ;Найденный адрес


Ответ отправлен: 27.08.2002, 08:44
Отправитель: ASMодей


Отвечает Broken Sword

Добрый день, R@ptor!
Ну как, очень просто! Ты ведь знаешь, что в текстовом режиме экран имеет размеры 80 столбцов на 25 строк.
Значит, по вертикали ценром будет являться 13 строка (ну 12 сверху 12 снизу окажется, а ты между ними на 13, так?).
Теперь по горизонтали. Тут несколько сложнее. Если хочешь вывести фразу длиной из N символов по центру строки, то используешь такую нехитрую формулу: (80-N)/2
В твоем случае 80-N = (80-7)/2 = 73/2 не делится! т.ч. как не изголяйся, уж совсем по центру не получиться (ну округлим до четного числа 36).
Итак, имеем: строка 13 (это центральная строка экрана), с позиции 36 (это мы по формуле нашли). Теперь нада сформировать "линейный" адрес, делается это так:
((СТРОКА-1)*80*2)+(ПОЗИЦИЯ*2) = 12*80*2 + 36*2 = 1992. Вот оно число.
Почему строка-1? потому что нам нужно оказаться В КОНЦЕ 12 строки, а не в конце 13. Почему на 80? Потому что в строке 80 символов. Почему еще на 2? Потому что каждый символ занимает 2 байта (аттрибут, ASCII код). 36*2 по той же самой причине Вот и все. Попробуй в действии
Единственное что - ты еще выводишь нолик в конце (сделай так, чтоб он не путался, ато он мешает)

Ответ отправлен: 26.08.2002, 23:39
Отправитель: Broken Sword


Отвечает ARDoS

Приветствую Вас, R@ptor!
Фрагмент из книги Питера Абеля в приложении
MOV AH,02 ;Запрос на установку курсора
MOV BH,00 ;Экран 0
MOV DH,00 ;Строка 00
MOV DL,27 ;Столбец 27
INT 10H ;Передача управления в BIOS
В крайнем случае можно разделить длинну сообщения на 2 и отнять от 27, тогда надпись получится аккурат по серёдке.


Приложение:

Ответ отправлен: 28.08.2002, 14:41
Отправитель: ARDoS


 Вопрос № 1101

Всегда, когда я включаю игру с 3-х мерной графикой она у меня виснет, почему?



Вопрос отправлен: 26.08.2002, 21:47
Отправитель: Kosten

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

Отвечает Топор

Здравствуйте, Kosten!
Это бывает, когда тараканы свили гнездо в кулере. Всё забивается, и охлаждения нет. Или дятлы раздолбали проц...


Ответ отправлен: 27.08.2002, 13:46
Отправитель: Топор


Отвечает Byter

Доброе время суток, Kosten!
А ты 3D поддерживаешь?


Ответ отправлен: 27.08.2002, 16:01
Отправитель: Byter


Отвечает masquer

Доброе время суток, Kosten!
DirectX проверяй

Ответ отправлен: 27.08.2002, 10:37
Отправитель: masquer


Отвечает Sensey

Приветствую Вас, Kosten!
А у меня когда я чихаю, уши закладывает :)
С такими вопросами в рассылку по Железу!
А теперь по сути - нет инфы для пправильного диагноза, поэтому в порядке приоритета:
1. Не поставлены(неправильны поставлены) дрова на мать(какая?)
2. Не поставлены(неправильны поставлены) дрова на видео(какая?)
3. Разогнанная система(частота шины\проца?)
4. И т.п. :)
Уточни эти параметры, а лучше полностью конфиг, и какие игры - и WelCome в рассылку по Железу!


Ответ отправлен: 27.08.2002, 10:13
Отправитель: Sensey


Отвечает copycon

Приветствую Вас, Kosten!
Попробуй это:
"C:Program FilesDirectXSetupDxDiag.lnk"
закладка Экран
"проверить DirectDraw"
"проверить Direct3D"
"проверить AGP-текстурирование"
Если вылетает на AGP - установи патч на материнку
Если Direct3D или DirectDraw - переустанавливай все видео драйвера.
Удачи.



Ответ отправлен: 28.08.2002, 19:51
Отправитель: copycon


Отвечает Dark_Lord

Добрый день, Kosten!
Какая видеокарта, какой проц!? Такое бывает, если видеокарте нужен минимум pII, а у тебя целерон!

Ответ отправлен: 28.08.2002, 23:14
Отправитель: Dark_Lord


 Вопрос № 1102

Здравствуйте уважаемые эксперты.
Пожалуйста поскажите где можно скачать SoftIce 4.0 и выше
а то пятый день ищу море инфы а самой проги нет (а на каких
сайтах находил та там то пароль требуют, то по этому адресу уже
ничего нет). Не посылайте мения пожалуиста в rambler, aport, google
и т.д.
И ещё я в своём городе все книжные магазины перерыл а книги Зубкова
так и не нашел (в итернет магазинах тоже сматрел в наличии нет и
небудет). Подскажите пожалуёста другова достойного автора или может
знаете где можно достать Зубкова.
Заранее благодарен.
Большое спасибо экспертам UFO, Pablo, baldr за ответы на вопрос 1052.



Вопрос отправлен: 26.08.2002, 23:21
Отправитель: Ilu (ilua_m@mail.ru)

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

Отвечает nix

Доброе время суток, Ilu!
Посмотри на www.dmkpress.ru
А Сайс можно найти на какой-нибудь толкушке за ккаких-нибудь 80 руб. В каждом городе есть такое место, где продаю пратские диски в большом количестве, но не все об ентом знают - можно прожить всю жизнь и не узнать етого:-)

Ответ отправлен: 30.08.2002, 14:42
Отправитель: nix


 Вопрос № 1103

Здравствуйте уважаемые эксперты,
у меня не вопрос, а просьба - если у кого есть, вышлите мне на мыло (michaelgul@hotmail.com) прграммку из рассылки по Asm (урок 13) там эта прога значится по адресу:
http://www.Kalashnikoff.ru/Assembler/Programs/Lessons/Virus13.rar
Заранее благодарен, Michael
P.S. Если возможно, вышлите и все остальные программки, которые там понадобятся.



Вопрос отправлен: 27.08.2002, 01:13
Отправитель: Michael (michaelgul@hotmail.com)

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

Отвечает Byter

Приветствую Вас, Michael!
Шлю.


Ответ отправлен: 27.08.2002, 16:04
Отправитель: Byter


Отвечает nix

Доброе время суток, Michael!
Высылаю архив - смотри мыло!


Ответ отправлен: 30.08.2002, 14:45
Отправитель: nix


 Вопрос № 1104

Подпишись сейчас или потом будет поздно :
http://subscribe.ru/catalog/comp.soft.prog.intelpm
)



Вопрос отправлен: 27.08.2002, 03:02
Отправитель: Broken Sword (brokensword@mail.ru)

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

Отвечает Топор

Доброе время суток, Broken Sword!
Благодарень!


Ответ отправлен: 27.08.2002, 13:40
Отправитель: Топор


Отвечает baldr

Доброе время суток, Broken Sword!
Уже, уже...
Молодец! :)

Ответ отправлен: 27.08.2002, 11:31
Отправитель: baldr


Отвечает Dark_Lord

Доброе время суток, Broken Sword!
Идти тебе далеко и неприлично!

Ответ отправлен: 28.08.2002, 23:18
Отправитель: Dark_Lord


 Вопрос № 1105

Ув. эксперты.
Вот вопросец. Некоторые из Вас наверное слышали про такую фишу об МСДН как ее подписка на многих-многих компактах (более 20 точно). Не знаете где эту лафу можно сорвать в болгарском (или каком еще) исполнении, шоб сотни зеленых не платить? Комплект дисков, в смысле (желательно через интернет).
Благодарю.
ЗЫ: Отвечу сразу на пару из встречных вопросов: "чем не устраевает сетевая версия?". Тем, что я на модемной связи и время в сети крайне ограниченно. Да и сидеть на тел. линии все время домашних раздражает. "Чем не устраевает версия прилагаемая к Студии?". Тем, что неполная. Надо, например ДДК устанавить чтоб добавилась инфа по драйверам. А если не хочу я всякую буру устанавливать только чтобы руки на .CHM наложить? Да и вообще! (правда, веский аргумент?) Вот.



Вопрос отправлен: 27.08.2002, 09:59
Отправитель: Саня

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

Отвечает baldr

Доброе время суток, Саня!
Мда... Могу посоветовать только письмо Большому Биллу... Вряд ли оно есть в болгарском исполнении! Ты в английском-то сомневаюсь, что получишь... Хотя... Если получишь - обязательно расскажи...

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


Отвечает masquer

Доброе время суток, Саня!
DDK можно либо отдельно заказать (с доставкой компакт долларов 20-30 будет), либо попросить кого-нибудь скачать тебе его (60 Мб).

Ответ отправлен: 27.08.2002, 10:34
Отправитель: masquer


Отвечает vitya

Доброе время суток, Саня!
А что если установить ДДК, сохранить chm, а потом все убрать, оставив его?

Ответ отправлен: 27.08.2002, 10:02
Отправитель: vitya


 Вопрос № 1106

А ну-ка быстро в форум! Там только тебя и нет! Почти все собрались! А форумы - инте-ере-есные... :)
http://rusfaq.ru/cgi-bin/Forum.cgi



Вопрос отправлен: 27.08.2002, 10:59
Отправитель: baldr

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

Отвечает Dark_Lord

Доброе время суток, baldr!
Ух-ты, личный вопрос!, обязательно схожу!

Ответ отправлен: 28.08.2002, 23:24
Отправитель: Dark_Lord


 Вопрос № 1107

Привет всем уважемым экспертам.
Вопросик по MC51 возник. Проблема вот в чем:
Чем занят процессор в то время, когда я ему в SBUF данные
на передачу по RS232 пихаю (режим 0).
Т.е могу ли я параллельно выполнять другие действия или необходимо дождаться окончания передачи. Очень хочется на передача время с экономить. Заранее большой спасиб.



Вопрос отправлен: 27.08.2002, 11:54
Отправитель: Tolyan (palto@iaph.bas-net.by)

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

Отвечает Broken Sword

Доброе время суток, Tolyan!
В режиме 0 вроде не получится, в режимах 2 и 3 с помощью регистра SM2 можно организовать все это дело мультипроцессорно (если нада подробная инфа - схемки, все о режимах 0-3, sbuf - мыль, я их тебе понарежу из официальной доки. Всю выслать не могу, т.к. весит 15 тонн.
Пиши сюда: brokensword@mail.ru
Подпишись здесь: http://subscribe.ru/catalog/comp.soft.prog.intelpm
:)

Ответ отправлен: 27.08.2002, 15:10
Отправитель: Broken Sword


Отвечает Pablo

Доброе время суток, Tolyan!
Насколько я помню, когда приходит чтото по последовательному порту прерывание происходит, я уже точно не помню...а если не то можно сделать по таймеру прием. Тыб лучше описание контроллера нашел.

Ответ отправлен: 27.08.2002, 21:43
Отправитель: Pablo


Отвечает Sensey

Приветствую Вас, Tolyan!
Можешь. Только перед тем, как послать байт, проверь TI
См. приложение


Приложение:

Ответ отправлен: 27.08.2002, 12:30
Отправитель: Sensey


 Вопрос № 1109

Здравствуйте!
Можно ли получить описание всех команд и прерываний языка Ассемблер.
Заранее благодарен.



Вопрос отправлен: 27.08.2002, 12:37
Отправитель: mark

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

Отвечает masquer

Приветствую Вас, mark!
IntList by Ralf Brawn+Intel Instruction Set Reference

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


Отвечает SonicX

Добрый день, mark!
Описание команд найдешь в Интернете, а прерываний ассемблера нет. Есть прерывания BIOS, DOS ...

Ответ отправлен: 27.08.2002, 19:05
Отправитель: SonicX


Отвечает Dark_Lord

Доброе время суток, mark!
Легче всего купить книгу!

Ответ отправлен: 29.08.2002, 22:31
Отправитель: Dark_Lord


Отвечает UFO

Добрый день, mark!
А для какого процессора?

Ответ отправлен: 27.08.2002, 14:46
Отправитель: UFO


Отвечает Pablo

Здравствуйте, mark!
Посмотри по ссылкам ниже:
http://developer.intel.com/design/processor/
http://developer.intel.com/design/pentium4/manuals/index2.htm


Ответ отправлен: 27.08.2002, 21:43
Отправитель: Pablo


Отвечает baldr

Доброе время суток, mark!
Так и быть... Разрешаю... ;)
Зайди на http://developer.intel.com/design/pentium4/manuals/index2.htm и закажи там книжки. Должны дойти. Это ОЧЕНЬ хорошие книжки, причем абсолютно нахаляву. (!)
А список и описание прерываний возбми у меня на сайте.
http://www.dospage.by.ru

Ответ отправлен: 27.08.2002, 13:38
Отправитель: baldr


Отвечает Sensey

Здравствуйте, mark!
смотри здесь
Там много чего есть...


Ответ отправлен: 27.08.2002, 13:07
Отправитель: Sensey


Отвечает Shal

Здравствуйте, mark!
http://michy.kuban.ru/library/assem/start.htm


Ответ отправлен: 28.08.2002, 00:28
Отправитель: Shal


Отвечает ARDoS

Приветствую Вас, mark!
Набери в поисковике "Interrupt List" и "Справочник программиста на персональном компьютере фирмы IBM. Роберта Журдена" и тебе выдадут туеву хучу ссылок.


Ответ отправлен: 28.08.2002, 14:41
Отправитель: ARDoS


Отвечает nix

Здравствуйте, mark!
Начнем с того, что в природе не существует языка Ассемлер, а уж тем более у него нет прерываний.
Существует язык Асссемблера, но ассемблером называется компилятор языка Ассемблера.
А описание языка Ассемблера и прерываний могу скинуть:
nix.q@mail.ru

Ответ отправлен: 30.08.2002, 15:02
Отправитель: nix


 Вопрос № 1110

Не знаю как в твоем клиторе, но вот я делал БД на Делфи с paradox-таблицами, так вот каждый индекс там
действительно хранится в отдельном файле. Может, ты путаешь индекс и значение? В таблице может быть хоть
миллион записей, но один или несколько индексов (от нуля до количества полей, кажется).
Не суть важно, реально можете помочь (ответы на вопросы)?



Вопрос отправлен: 27.08.2002, 14:48
Отправитель: Serzhant (Serzhant_mail@mail.ru)

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

Отвечает masquer

Здравствуйте, Serzhant!
А где вопрос - одни эмоции???

Ответ отправлен: 27.08.2002, 19:32
Отправитель: masquer


 Вопрос № 1111

Приветствую...
Слышали про фундаментальный баг в Win32 Messaging System ?
Если нет, то читайте "Компьютерру", какой-то из недавних номеров (457)...
Собственно вопрос: а как можно было сделать аутентификацию сообщений, получаемых окном? Сам принцип?



Вопрос отправлен: 27.08.2002, 16:53
Отправитель: baldr (baldr@pisem.net)

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

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

Доброе время суток, baldr!
Если постараться, то все можно сделать. Можно было сделать
разделение сообщений на "свои" и сообщения других процессов.
А вообще я считаю, что тут подвело сообщение WM_TIMER с его
возможностью исполнения любого кода.


Ответ отправлен: 28.08.2002, 17:52
Отправитель: ASMодей


Отвечает masquer

Добрый день, baldr!
По идее ядро не должно разрешать переписывание кода приложением с меньшим приоритетом у приложения с большими, хотя с виндой и не такое бывает...

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


 Вопрос № 1112

Здравствуйте. Вопрос мой немного не в тему, но большая просьба помочь. У меня стояла ОС Windows 98, я установил отладчик SoftICE 4.05. Запуск файла winice.exe я прописал в autoexec.bat перед win.com и всё нормально работало. Сейчас я поставил Windows Me. Эта ОС сделала файл autoexec.bat скрытым и при каждой перезагрузке она его обновляет, по-этому чтобы я в него не записывал, всегда остаётся следующий текст:
SET BLASTER=A220 I2 D1 T4
SET PATH=C:WINDOWS;C:WINDOWSCOMMAND
SET windir=C:WINDOWS
SET winbootdir=C:WINDOWS
SET COMSPEC=C:WINDOWSCOMMAND.COM
SET PROMPT=$p$g
SET TMP=C:WINDOWSTEMP
SET TEMP=C:TEMP
Откуда стартует win.com я тоже не знаю. И самое главное: как запустить отладчик? Может он вообще не работает под этой ОС? Подскажите как установить SoftICE при этом не переустанавливая ОС на какую-нибудь другую. Заранее большое THANKS. Сергей.



Вопрос отправлен: 27.08.2002, 21:51
Отправитель: Sergei

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

Отвечает masquer

Здравствуйте, Sergei!
Все работает, читай рассылку. Патч нужно пользовать.

Ответ отправлен: 27.08.2002, 22:14
Отправитель: masquer


Отвечает SonicX

Приветствую Вас, Sergei!
Милениум и у меня с этим глючил, но я потом
в реестр стал вписывать
My ComputerHKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
И там создаешь свою строку.

Ответ отправлен: 28.08.2002, 11:04
Отправитель: SonicX


Отвечает Топор

Добрый день, Sergei!
А атрибут read only на autoexec.bat не пробовал повесить? А win.com всегда стартует после выполнения всех команд автоэкзека.


Ответ отправлен: 28.08.2002, 09:44
Отправитель: Топор


Отвечает Dark_Lord

Здравствуйте, Sergei!
win.com и не должен запускаться, это у Вас глюк был! А SoftICE можно запустить из под windows, для этого почитайте help к нему!

Ответ отправлен: 29.08.2002, 23:09
Отправитель: Dark_Lord


Отвечает Byter

Приветствую Вас, Sergei!
1Win.com грузится из Boot сектора.
Загружай SoftIce через реестр.


Ответ отправлен: 28.08.2002, 15:27
Отправитель: Byter


 Вопрос № 1113

Добрый день. У меня следующая простая задачка: Необходимо выражение, взятое по смещению 4H (размер в EXE параграфах) преобразовать в байты. И ещё вопросик: по какому смещению и сколько байт занимает текстовая строка «This pro..» в исполняемом файле Windows.
До свидания.


Приложение:


Вопрос отправлен: 27.08.2002, 22:49
Отправитель: DARK_ALISON (darkalison@hotbox.ru)

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

Отвечает masquer

Доброе время суток, DARK_ALISON!
Этой надписи может и вообще не быть. ДОС участок не является обязательным, MZ-header должен быть, и это все.

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


Отвечает SonicX

Приветствую Вас, DARK_ALISON!
1)По мещению 4H стоит размер EXE в страницах(страница=512 байт).
mov ax,word ptr cs:[4h]
mul 512
;результат dx:ax
2)Посмотри любым отладчиком, а если лень то по смещению 4fh и 28h байт вместе с $.


Ответ отправлен: 28.08.2002, 11:05
Отправитель: SonicX


Отвечает baldr

Приветствую Вас, DARK_ALISON!
Эх, как же ты живешь-то без, например, wpview или hiew?? Открой ехе-шник по F3 и посмотри - где оно находится и сколько занимает... :(
Зачем тебе это надо? Хочешь stub использовать? Так это по-другому делается...

Ответ отправлен: 28.08.2002, 11:59
Отправитель: baldr


Отвечает Byter

Приветствую Вас, DARK_ALISON!
Чета я не понял."Выражение по смещению"
В памети нет выражений,там все представленно в байтах.
Просто копируешь содержимое по смещению 4H.
Или ты хочешь узнать размер выражения в байтах?


Ответ отправлен: 28.08.2002, 15:32
Отправитель: Byter


Отвечает Portnov

Здравствуйте, DARK_ALISON!
1)В чем проблема-то??? размер_в_байтах=размер_в_параграфах*16, т.к. параграф по определению это есть 16 байт. Число на 16 умножить проблема???
2)Это часть STUB-а. EXE-файл Win начинается с DOS-ового MZ-заголовка (формат - см. TechHelp), который указывает на точку входа в STUB-е. Потом идет указатель на виндовый PE-заголовок, который располагается за STUB-ом. STUB представляет собой DOS-овую программу. Если exe-шник запустить под DOS, то DOS, прочитав заголовок, запустит STUB, который, как правило, выводит сообщение, что для запуска данной проги нужны Винды, и вываливается в DOS. Можете посмотреть, там обычно код типа
mov ah,9
mov dx,offset msg
int 21h
int 20h
msg db "This program requires Win32.$'
Но вообще-то он может делать что угодно. Так сделано в инсталляторе Винды: при запуске из DOS-а действует DOS-овая часть программы. При запуске из Винды ось читает PE-заголовок, а он указывает уже на точку входа в виндовый исполнимый код. Думаю, вам надо бы поискать описание PE-формата, по-моему, поисковики что-то дадут. Там довольно сложный формат. Про смещение и размер надписи (которая к тому же может быть любой) - проще всего посмотреть в HEX-редакторе.
C уважением, Portnov.

Ответ отправлен: 28.08.2002, 09:23
Отправитель: Portnov


 Вопрос № 1114

Здравствуйте все, у кого есть электронные книги по ASSEMBLER'у : самоучители, справочники и т.п., пожалуйста отправьте ко мне на ящик: SPARTANETS@MAIL.RU



Вопрос отправлен: 28.08.2002, 02:48
Отправитель: FOG (SPARTANETS@MAIL.RU)

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

Отвечает Pablo

Доброе время суток, FOG!
Туториалы смотри тут: http://www.wasm.ru

Ответ отправлен: 28.08.2002, 13:32
Отправитель: Pablo


Отвечает SonicX

Добрый день, FOG!
Отослал, читай.

Ответ отправлен: 28.08.2002, 11:05
Отправитель: SonicX


Отвечает Shal

Добрый день, FOG!
http://michy.kuban.ru/library/assem/start.htm


Ответ отправлен: 28.08.2002, 08:59
Отправитель: Shal


Отвечает Igoryk

Здравствуйте, FOG!
Несколько книг можно скачать с сайта www.kalashnikoff.ru. Две книги размещено у меня на сайте в разделе 'Документация'

Ответ отправлен: 29.08.2002, 10:20
Отправитель: Igoryk


 Вопрос № 1115

Ну, это, конечно, конкретный оффтопик, но, я думаю, предложение всех заинтересует. Итак, предлагаю всем и каждому ПОЧТИ БЕСПЛАТНУЮ подписку на Microsoft MSDN Library - рассылку с обновлениями МСДН.
Кто заинтересуется - пишите UAbishopship@yandex.ru.
Количество валидных подписок не совсем, но ограничено !
Цены - хм... Походите по базару, поище дешевле! ));-)))



Вопрос отправлен: 28.08.2002, 09:45
Отправитель: Bishop (UAbishopship@yandex.ru)

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

Отвечает SonicX

Доброе время суток, Bishop!
Если бы на халяву...

Ответ отправлен: 28.08.2002, 11:06
Отправитель: SonicX


Отвечает baldr

Приветствую Вас, Bishop!
Слушай, задолбал ты MSDN'ом! Тебе тут не рынок. Там тоже - чуть сместишься с середины тропинки в сторону любой палатки, так уже за руки хватают - купи, мол, женское нижнее белье - не себе, так подруге; не подруге, так на память... :(

Ответ отправлен: 28.08.2002, 12:12
Отправитель: baldr


Отвечает masquer

Добрый день, Bishop!
Я из принципа похожу и поищу.
И найду, если нужно будет.
Устроил тут базар, мля... :-[

Ответ отправлен: 28.08.2002, 10:09
Отправитель: masquer


 Вопрос № 1116

Начал писать программы на ассемблере для Windows. Не пойму
некоторых вещей:
1 Для чего надо получать указатель на командную строку и как
его потом использовать(GetCommandLine)
2 Что за блок с переменными окружения(GetEnviromentString)
3 Что за GetStartupInfo
Все азы понял кроме этого и в книжках моих ничего
Заранее спасибо



Вопрос отправлен: 28.08.2002, 12:40
Отправитель: Dmitry (SHDAL@mail.ru)

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

Отвечает Pablo

Добрый день, Dmitry!
1. Эта функция возвращает указатель на буффер, в котором содержится коммандная строка, с использованием которой был создна текущий процесс.
CreatePrecess("rar32.exe"," a -m5 files *.*",...);
Так для нового процесса строкой будет указатель на строку котрая передается этой функции вторым параметром.
2. Блок переменных окружения это тоже самый блок, что и в досе, который задавался из коммандной строки коммандой set.
типа этого set path = c:;c:windows.
3. Это функция используется для получения информации о том с какими параметрами было создан прицесс и его главное окно.
Ниже приведен кусок с описанием функции GetStartupInfo:
The GetStartupInfo function retrieves the contents of the STARTUPINFO structure that was specified when the calling process was created.

Ответ отправлен: 28.08.2002, 13:46
Отправитель: Pablo


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

Добрый день, Dmitry!
1. В командной строке могут передаваться параметры запуска
программы.
2. Переменные окружения - это глобальные строковые
переменные, доступные для всех программ.
Устанавливаются обычно в autoexec.bat командой SET.
3. STARTUPINFO - это структура, содержащая параметры
запуска процесса. Подробнее см. MSDN.


Ответ отправлен: 28.08.2002, 19:10
Отправитель: ASMодей


Отвечает Portnov

Доброе время суток, Dmitry!
1. Это нужно только если вы собираетесь обрабатывать коммандную строку. Ну, например, если вы хотите (потом) ассоциировать в Винде *.txt файлы с вашей прогой (чтобы они открывались в ней). Ну, ассоциировать сможете. Тогда при двойном клике на *.txt файле Винда запустит вашу прогу, а в коммандную строку поставит имя файла в кавычках, т.е. будет то же, как если бы вы набрали в окне сеанса DOS:
d:pathmyprog.exe "d:anotherpathmyfile.txt".
И вот благодаря этой ф-ции вы сможете узнать, чего вам там передали в коммандной строке. Она возвращает (в EAX) указатель на эту самую строку, терминированную нулем (\0).
2. А это ничего более, чем переменные среды DOS'а. Могут понадобиться, если вы, например, хотите искать какие-то файлы в путях переменной PATH, или какие-то настройки выполнять в соответствии с окружением DOS. Если вам все это не нужно, то и ф-ция эта вам не нужна.
3. Мнэ-э... Информация о запуске... Например, если юзер сделал к вашей проге ярлык, и в его св-вах указал запускать развернутой, то в структуре STARTUPINFO вы получите инфу и об этом. В общем информация о том, в каких условиях и откуда была запущена прога.
Подробное описание всех этих ф-ций и структур - см. MSDN, или, что проще, Win32.hlp.
С уважением, Portnov.

Ответ отправлен: 28.08.2002, 18:30
Отправитель: Portnov


Отвечает Топор

Доброе время суток, Dmitry!
1. Это нужно, если передаёшь параметры в программу, или узнать, откуда она запущена (полный путь к файлу). Не надо - не используй...
2. А это для получения всего того, что прописано в переменной PATH файла autoexec.bat или текущей PATH для Windows (обычно совпадают).
3. Сорри, без понятия...


Ответ отправлен: 28.08.2002, 16:49
Отправитель: Топор


Отвечает Dark_Lord

Приветствую Вас, Dmitry!
Командная строка нужна для передачи параметров, например пишешь ты просмотрщик jpeg - ов, юзверь вводит, program.exe xxx.jpg =), в командную строку ты получаешь xxx.jpg!

Ответ отправлен: 29.08.2002, 23:08
Отправитель: Dark_Lord


Отвечает masquer

Приветствую Вас, Dmitry!
1. Это ты сам должен решить - нужно тебе работать с командной стройо или нет. Как использовать - после этой функции ты получаешь указатель на начало строки, содержащей камандную строку. Дальше делай что хочешь.
2 и 3 - это все необязятельно, за подробностями естественно смотреть МСДН.

Ответ отправлен: 28.08.2002, 14:53
Отправитель: masquer


 Вопрос № 1117

Добрейший денек, м.б...
Я что-то не совсем видимо догнал. Нужно при форматировании дискеты заменить стандартный символ F6h на 00h.
Что делаю
получаю в es:bx таблицу параметров дискеты
mov ah,35h
mov al,1eh
int 21h
меняю символ
mov es:[bx+8],0h
ну и форматирую дорожку
mov bx,offset mask1
mov ah,05h
int 13h
и ни че хорошего не получаю. То бишь форматируется, но символ остался F6h. Что не так?
Проверяю после замены символа получаю опять табличку смотрю что в es:[bx+8] вроде нолик...
Может нужно записать измененную таблицу, типа
mov ax,251eh
int 21h
перекинув ее в ds:dx? Или еще что нужно...



Вопрос отправлен: 28.08.2002, 12:50
Отправитель: Magistrblack (magistrblack@male.ru)

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

Отвечает Portnov

Здравствуйте, Magistrblack!
У вас форматирование дискеты производит DOS. А она безо всяких разговоров только что отформатированные секторы заполняет байтом 0F6h. Перекрыть это можно, только форматирую вручную, т.е. через порты винта. Но есть у вашей задачки решение и попроще: отформатировать, а потом заполнить нулями. А по смещению 8 в DriveParameterBlock вообще кол-во копий FAT лежит. См. TechHelp.
С уважением, Portnov.


Ответ отправлен: 28.08.2002, 18:35
Отправитель: Portnov


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

Здравствуйте, Magistrblack!
Нужно после изменения таблицы вызвать INT 13h с AX=0, чтобы
перепрограммировать контроллер.


Ответ отправлен: 28.08.2002, 19:11
Отправитель: ASMодей


 Вопрос № 1118

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



Вопрос отправлен: 28.08.2002, 14:26
Отправитель: евгений (zharkov_evgenii@mail.ru)

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

Отвечает Dark_Lord

Здравствуйте, евгений!
Сделай процедуру, которая переводит число в ASCII символ!

Ответ отправлен: 30.08.2002, 20:44
Отправитель: Dark_Lord


Отвечает Byter

Доброе время суток, евгений!
Скачай рассылку Олега Калашникова.
Там описывается перевод чисел в десятичные и вывод их на экран.


Ответ отправлен: 28.08.2002, 15:40
Отправитель: Byter


Отвечает Beeblebrox

Добрый день, евгений!
Числа нужно перевести в отдельные символы (ASCII), а затем выводить эти символы на экран, средствами DOS, BIOS или непосредственной записью в экранную память

Ответ отправлен: 28.08.2002, 15:52
Отправитель: Beeblebrox


Отвечает SonicX

Доброе время суток, евгений!
Вот тебе пример программы, которая выводит на экран
любой байт - метка number. Алгоритм для слова составить
не сложно используя этот принцип.
cseg segment
assume cs:cseg
org 100h
Start:
mov al,number
xor ah,ah
div 64h
add al,30h
mov msg[0],al
mov al,ah
xor ah,ah
div 0ah
add al,30h
mov msg[1],al
add ah,30h
mov msg[2],ah
mov ah,09h
lea dx,msg
int 21h
int 20h
number db 153
msg db 3 dup(0),$
cseg ends
end start


Ответ отправлен: 28.08.2002, 16:04
Отправитель: SonicX


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

Добрый день, евгений!
Очень просто: преобразуешь число в строку и выводишь ее
на экран.
А само преобразование зависит от того какое число ты хочешь
получить на выходе: десятичное, шестнадцатеричное, двоичное
целое, дробное, ...


Ответ отправлен: 28.08.2002, 19:12
Отправитель: ASMодей


Отвечает masquer

Приветствую Вас, евгений!
Рассылку прочитать - самый верный путь.
Для справки: этот вопрос в его различных вариациях раз в день приходит приблизительно, намек понятен...

Ответ отправлен: 28.08.2002, 14:55
Отправитель: masquer


Отвечает Shal

Добрый день, евгений!
Вывод из al:
int 29h
или
mov ah,02h
mov dl,al
int 21h
(что тоже самое)


Ответ отправлен: 30.08.2002, 12:43
Отправитель: Shal



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

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (30)
Perl (12)
Delphi (15)
Pascal (26)
Basic / VBA (11)
Java / JavaScript (13)
PHP (12)
MySQL / MSSQL (12)
Пользователю
Windows 95/98/Me (43)
Windows NT/2000/XP (30)
"Железо" (39)
Поиск информации (16)
Администратору
Windows NT/2000/XP (15)
Linux / Unix (17)
Юристу
Гражданское право (9)
Семейное право (7)
Трудовое право (8)
КоАП (5)

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




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

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


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

В избранное