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

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


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

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU
(Тестовый режим)

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 65
от 22.02.2005, 20:20

Администратор:Калашников О.А.
В номере:Вопросов: 7, Ответов: 18


Вопрос № 17100
Здравствуйте, уважаемые эксперты!
Как записать на асме следующее: RASCONN ras[20]
Не могли бы вы привести несколько примеров записи и работы с 2-мерными массивами на ассемблере?
Спасибо.
Отправлен: 16.02.2005, 20:07
Вопрос задал: Хуснуллин Давид Рифкатович (статус: 3-ий класс)
Всего ответов отправлено: 2

Отвечает: AxMAD
Здравствуйте, Хуснуллин Давид Рифкатович!
Ну вообще если на MASM:
ras RASCONN 20 dup ()
Если на FASM:
ras: times sizeof.RASCONN*20 rb 0
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 16.02.2005, 20:18

Отвечает: Вiктор
Здравствуйте, Хуснуллин Давид Рифкатович!
двумерный массив можно представить как набор одномерных массивов (например, рядков
таблицы) записанных подряд.
например:
mas db 100 dup (0) ; давно не писал, так что проверьте. задаётся область 100 байт.
x dd 1
y dd 3
....
mov ebx, offset mas ; адрес начала массива
mov eax, y ; берём строку
imul eax, 10 ; умножаем на длинну строки
add ebx,eax ; прибавляем к адресу начала массива
add ebx, x ; прибавляем к адресу номер столбца
mov byte ptr [ebx], 72 ; записываем в ячейку х,у значение 72
проверьте текст, могут быть ошибки. но идея примерно такая.
Ответ отправил: Вiктор (статус: 2-ой класс)
Отправлен: 18.02.2005, 15:19


Вопрос № 17107
Наверное я плохо объяснил. При попытке запустить tasm окно команной строки появляется на мгновение и затем исчезает. Но если я не ошибаюсь сназванием, win-s имеет в программах эмулятор командной строки с которой я ипытался ассемблировать. Не знаю правильно ли я все объяснил?
Отправлен: 16.02.2005, 20:51
Вопрос задал: Kyryl Yevgeniy Alexandrovych (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Стас
Здравствуйте, Kyryl Yevgeniy Alexandrovych!
запусти cmd.exe (если не ошибаюсь) - получишь командную строку DOS. Если знаком с командами DOS - работай.
Или поставь какую либо оболочку DOS - Far, DN, NC, VC...
А так конечно "команда" TASM выполняется (или не выполняется - сообщение Bad command or file name) и окно DOS закрывается. Можно конечно поставить галку чтобы оно не закрывалось, но это тебе ничего не даст...
Ответ отправил: Стас (статус: Практикант)
Отправлен: 17.02.2005, 02:04

Отвечает: Shizuku Tsukishima
Здравствуйте, Kyryl Yevgeniy Alexandrovych!
Чтобы открыть окно консоли:
Для Windows 95/98 - Пуск/Выполнить -> command <Enter>
Для Windows NT/XP - Пуск/Выполнить -> cmd <Enter>
Ответ отправила: Shizuku Tsukishima (статус: 2-ой класс)
Отправлен: 17.02.2005, 13:16


Вопрос № 17135
Уважаемые эксперты. У меня такая ситуация. После перехода в pmode я заполняю IDT и разрешаю прерывания. Прерывание от клавиатуры работает.
А от таймера (перед клавиатурой) отказывается. Может я что-то напутал при разрешении прерываний. Если не трудно, приведите пример кода, который будет разрешать ВСЕ прерывания(маскируемые и не...). Процедуры обработчиков работают правильно(дело не в процедурах).
Заранее спасибо.
Отправлен: 17.02.2005, 13:57
Вопрос задал: Filt (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Bob Johnson
Здравствуйте, Filt!
Попробуй сбросить контроллер прерываний, возможно он успел получить прерывание от таймера, пока процессор не мог его обработать и перестал на них реагировать. Сбрасывается прерывание таймера чем-то вроде mov al, 20h out 20h, al, точно не помню...
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 17.02.2005, 16:40


Вопрос № 17136
Ув эксперты!
Помогите чайнику.Компилер выдает ошибку в строке invoke SetTimer,0, 0, 500,OFFSET TimerProc (см приложение).Все делаю по образцу,а он не признает
TimerProc.
Спасибо!

Приложение:

Отправлен: 17.02.2005, 14:07
Вопрос задал: Ling (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: _vt
Здравствуйте, Ling!
Просто вставь ее перед функцией WinMain и все заработает.

* EMan 2 beta: back in Black :)
Ответ отправил: _vt (статус: Академик)
Отправлен: 18.02.2005, 01:46

Отвечает: Tigran K. Kalaidjian
Здравствуйте, Ling!
Вставьте эту строку перед WinMain. =)
Ответ отправил: Tigran K. Kalaidjian (статус: Профессионал)
Отправлен: 18.02.2005, 19:59


Вопрос № 17137
Здравствуйте, подскажите пожалуйста, как находясь в FAR указать путь исходного текста к компилятору, чтобы превратить его obj. У меня ос XP. Спасибо.
Отправлен: 17.02.2005, 14:53
Вопрос задал: Рустем (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Shizuku Tsukishima
Здравствуйте, шаймарданов рустем исламович!
1. Перейдите в ваш каталог TASM/bin
2. Запускайте, всё, что надо:
tasm [параметры] <имя_файла.asm>
tlink [параметры] <имя_файла.asm>
или td [параметры] <имя_файла.asm> для отладки
Дело в том, что все вышеуказанные программы, расположены в папке инсталляции turbo assembler, в подпапке bin. Запустить программу, указав лишь её имя можно только в директории этой программы. Иначе возможна ошибка "не является командой DOS". Если вы непременно желаете запускать tasm из любой папки, то добавьте путь к вашей папке tasm/bin в переменную окружения path.
Для того, чтобы получить .obj используйте:
tasm /t/d <имя_файла.asm> - если программируете .com программу
tasm <имя_файла.asm> - если программируете .exe программу
Ответ отправила: Shizuku Tsukishima (статус: 2-ой класс)
Отправлен: 17.02.2005, 18:28

Отвечает: psevdo
Здравствуйте, шаймарданов рустем исламович!
Здесь от ОС ни чего не зависит. Пиши так:
tasm.exe (если tasm'ом пользуешься) и путь до файал .asm. А вообще советую файл .asm создавать в каталоге компилятора.
Ответ отправил: psevdo (статус: 1-ый класс)
Отправлен: 17.02.2005, 19:27

Отвечает: John Freeman
Здравствуйте, шаймарданов рустем исламович!
Так же, как и в DOS
Ответ отправил: John Freeman (статус: Специалист)
Отправлен: 17.02.2005, 20:16

Отвечает: Boriss
Здравствуйте, шаймарданов рустем исламович!
Конечно, проще всего это делать, находясь в папке с транслятором и компилятором. Вам будет проще
tasm <имя_файла_без_расширения>
но файл должен иметь в этом случае расширение ASM
(tasm /t/d <имя_файла.asm> - если программируете .com программу = это неправильно!)
Лучше:
tasm /m3 /zi <имя_файла>

Приложение:

Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 18.02.2005, 15:29


Вопрос № 17140
Привет!
Скажите плзз, как узнать каким пакером упакована прогу(aspack, upx ...)!
Отправлен: 17.02.2005, 15:13
Вопрос задал: valix (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: nimoid
Здравствуйте, valix!
Можно воспользоваться анализатором.
Например File InsPEctor, PE iDentifier (PEiD) и т.п..
Ответ отправил: nimoid (статус: 1-ый класс)
Отправлен: 18.02.2005, 06:43

Отвечает: Boriss
Здравствуйте, valix!
Обычно упаковщики (и не только) ставят в начале идентификатор.
То есть и Вы сами можете узнать все, что нужно. Для этого посмотрите (открыв как текстовый) на первые символы файла (программы) до и после упаковки, обычно 2-3
Многое можно найти, например, на http://www.interdoc.by.ru/ext_e.htm (это для файлов с раширением, начинающимся на "е")
Я нашел по Вашему вопросу массу ссылок, запустив поиск "структура файла, упакованного aspack". Например,
http://www.reng.ru/board/viewtopic.php?t=890&view=next&sid=60840d44e5765acc907ea56571483f60 - упаковщики
http://www.insidepro.com/kk/018/018r.shtml - восстановление паролей, криптография, шифрование
http://cracklab.ru/art/pkk.php - распаковка от простого к сложному: UPX, ASPACK ...
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 18.02.2005, 13:29

Отвечает: Tigran K. Kalaidjian
Здравствуйте, valix!
смотрите http://www.wasm.ru/doclist.php?list=2
Ответ отправил: Tigran K. Kalaidjian (статус: Профессионал)
Отправлен: 18.02.2005, 18:55


Вопрос № 17141
Привет!
Как узнать каким пакером упакована прога(aspack, upx...)?
Отправлен: 17.02.2005, 15:22
Вопрос задал: valix (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Bob Johnson
Здравствуйте, valix!
1. Посмотреть на сам упакованный файл и по каким-либо отличительным признакам определить упаковщик (например, UPX оставляет $id вначале проги).
2. Попробовать распаковать. (тот же upx сам поддерживает распаковку запакованных программ).
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 17.02.2005, 16:35

Отвечает: Shizuku Tsukishima
Здравствуйте, valix!
Прежде всего это можно сделать средствами своих упаковщиков, они распознают "свою" работу.
Или воспользоваться спец. инструментами, можно поискать здесь: http://www.wasm.ru/toollist.php
Ответ отправила: Shizuku Tsukishima (статус: 2-ой класс)
Отправлен: 17.02.2005, 18:02

Отвечает: _vt
Здравствуйте, valix!
PEiD. Есть на wasm.ru

* EMan 2 beta: back in Black :)
Ответ отправил: _vt (статус: Академик)
Отправлен: 18.02.2005, 01:46

Отвечает: Tigran K. Kalaidjian
Здравствуйте, valix!
смотрите http://www.wasm.ru/doclist.php?list=2
Ответ отправил: Tigran K. Kalaidjian (статус: Профессионал)
Отправлен: 18.02.2005, 18:56


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Россия, Москва. Идея, дизайн, программирование: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное