Здравствуйте, уважаемые эксперты!
Как записать на асме следующее: 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
Отправлен: 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