ассемблер : вопросы и ответы, sos help и все такое прочие |
Здравствуйте, гость ( Вход | Регистрация )
Все ссылки на сторонние ресурсы, за исключением офсайтов программ, должны оформляться с помошью тега скрытого текста - [hide=1]Ссылка[/hide]
ассемблер : вопросы и ответы, sos help и все такое прочие |
kiray |
27.02.2005 - 20:25
Сообщение
#1
|
Novice Группа: Пoльзователь Сообщений: 10 Регистрация: 5.02.2005 Пользователь №: 92938 |
я скачал много програм трансляторов (masm tasm и др.)
masm не хочет работать пишет не приложение win32 (это не глюк я скачал 6.13 и 6.11 версии) или программа не запускается с tasm я вобще ничего не пойму один большой глюк (IMG:style_emoticons/bfz/cranky.gif) везде работает только link.exe помогите кто чем может зарание спасибо :) Сообщение было отредактировано Ann: 27.02.2005 - 20:29 |
AndyBitOff |
28.02.2005 - 01:10
Сообщение
#2
|
Gold Member Группа: Супермодераторы Сообщений: 783 Регистрация: 2.11.2004 Из: Saint-Petersburg (Russia) Пользователь №: 67823 |
>с tasm я вобще ничего не пойму один большой глюк
На чем основывается Ваше утверждение? Какая версия Tasm? Приведите пример кода, который не компилится. Как Вы компилируете проект? Сообщение было отредактировано AndyBitOff: 28.02.2005 - 01:11 |
-------------------- Если ты сегодня кому-то помог, значит, день прожит не зря и завтра, возможно, помогут тебе. (кредо)
|
|
kiray |
28.02.2005 - 15:49
Сообщение
#3
|
Novice Группа: Пoльзователь Сообщений: 10 Регистрация: 5.02.2005 Пользователь №: 92938 |
вот пример я его взял из книжки
TITLE PRIMER11 CODSEG SEGMENT ASSUME CS:codseg,ds:codseg,ss:codseg, ss:codseg org 100h begin: jmp beg_code text db ' это моя первая программа н асемблерею.$' beg_code: mov ax,cs mov ds,ax lea dx,text MOV AH,9 INT 21H MOV AH,4CH INT21H CODESEG ENDS END BEGIN может я конечно неправ и смоей стороны было необдумана говорить такое Цитата с tasm я вобще ничего не пойму один большой глюк kiray посит пощения сесли когото обидел или задел (IMG:style_emoticons/bfz/unsure.gif) просто я сидел за машиной почти целый час а не сдвинулся в работе даже на шаг версия tasm 5.1.2600.2180 я немогу понять последователность действий с ***.asm знаю что надо сначала в masm(obj) потом link(учубсщь) но уменя не запускается masm :( зарание спасибо за ответ |
AndyBitOff |
1.03.2005 - 23:47
Сообщение
#4
|
Gold Member Группа: Супермодераторы Сообщений: 783 Регистрация: 2.11.2004 Из: Saint-Petersburg (Russia) Пользователь №: 67823 |
Я надеюсь, Вы не думаете, что Вас тут будут учить ассемблеру. Единственное, что я помогу Вам сделать это настроить ПО для работы, а уж дальше... Каждому по способностям... :)
Для начала советую воспользоваться советом Sensus'а в соседней ветке и скачать указанную им программу, так как я тоже ей пользуюсь и помогу ее настроить. Дальше будем исходить из того, что Вы работаете в ОС WinXP. Произведем установку Tasm (я буду писать про него, для Masm переделаете сами), например, в каталог: "c:\Asm\TASM\", а программу, которую советовал Sensus, в каталог: "c:\Asm\Assembler\". Теперь пропишем пути. Открываем настройки системы: Пуск->Панель управления->Система, там на закладке "Дoпoлнитeльнo" нажимаем "Пepeмeнныe cpeды" и в окошке "Cиcтeмныe пepeмeнныe" добавим в переменную "Path" дополнительные значения разделяя их точкой с запятой ";". Значения такие: "c:\Asm\TASM\BIN\;c:\Asm\TASM\LIB\;c:\Asm\TASM\INCLUDE\;c:\Asm\Assembler\". И закрываем все кнопкой "ОК". Перегружаем машину. Займемся настройками непосредственно ПО. Создадим в папке "c:\Asm\Assembler\" файл "Build.bat" следующего содержания: Код @echo OFF echo. if "%2" == "windll" goto windll if "%2" == "winresdb" goto winresdb if "%2" == "winres" goto winres if "%2" == "windows" goto windows if "%2" == "konsole" goto konsole if "%2" == "exedb" goto exedb if "%2" == "exe" goto exe if "%2" == "comdb" goto comdb echo ******************* Build %1.COM ******************** echo. echo. echo Tasm to %1.obj echo. tasm.EXE %1 > %1.log echo. >> %1.log echo TLink to %1.com echo ----------------------- >> %1.log tlink.EXE /t /x %1.obj >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :comdb echo ********* Build %1.COM + Debug info ********** echo. echo. echo Tasm to %1.obj echo. tasm.EXE /zi %1 > %1.log echo. >> %1.log echo TLink to %1.com echo. tlink.EXE /x /v %1.obj >> %1.log echo. >> %1.log echo. >> %1.log echo. >> %1.log echo TdStrip add DebugInfo for %1.com echo ----------------------- >> %1.log tdstrip -s -c %1.exe %1.tds >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :exe echo ******************* Build %1.EXE ******************** echo. echo. echo Tasm to %1.obj echo. tasm.EXE %1 > %1.log echo. >> %1.log echo TLink to %1.exe echo ----------------------- >> %1.log tlink.EXE /x %1 >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :exedb echo ********* Build %1.EXE + Debug info ********** echo. echo. echo Tasm to %1.obj echo. tasm.EXE /zi %1 > %1.log echo. >> %1.log echo TLink to %1.exe echo ----------------------- >> %1.log echo. tlink.EXE /x /v %1 >> %1.log echo. >> %1.log echo. >> %1.log echo. >> %1.log echo TdStrip add DebugInfo for %1.exe echo ----------------------- >> %1.log tdstrip -s %1.exe %1.tds >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :konsole echo ******************* Build %1.EXE konsole ******************** echo. echo. echo Tasm to %1.obj echo. tasm.EXE /m /ml %1 > %1.log echo. >> %1.log echo TLink32 to %1.exe echo ----------------------- >> %1.log tlink32.EXE /Tpe /ap /c /x %1 >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :windows echo ******************* Build %1.EXE windows ******************** echo. echo. echo Tasm to %1.obj tasm.EXE /m3 /ml %1 > %1.log echo. echo. >> %1.log echo TLink32 to %1.exe echo ----------------------- >> %1.log tlink32.EXE /Tpe /aa /c /x %1 >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :winres echo ************* Build %1.EXE + resource ************** echo. echo. echo Tasm to %1.obj echo. tasm.EXE /x /m3 /ml %1 > %1.log echo. >> %1.log echo BrCC32 add ResourceInfo to %1.exe >> %1.log echo ----------------------- >> %1.log BRCC32.EXE %1.rc >> %1.log echo. >> %1.log echo. >> %1.log echo. >> %1.log echo TLink32 to %1.exe >> %1.log echo ----------------------- >> %1.log tlink32.EXE /Tpe /aa /c %1,,,,,%1.res >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :winresdb echo ********** Build %1.EXE + Debug info *********** echo. echo. echo Tasm to %1.obj echo. tasm.EXE /zi /x /m3 /ml %1 > %1.log echo. >> %1.log echo BrCC32 add ResourceInfo to %1.exe echo ----------------------- >> %1.log BRCC32.EXE %1.rc >> %1.log echo. >> %1.log echo. >> %1.log echo. >> %1.log echo TLink32 add DebugInfo for %1.exe echo ----------------------- >> %1.log tlink32.EXE /Tpe /aa /c /v %1,,,,,%1.res >> %1.log if errorlevel 1 NotePad.EXE %1.log goto end :windll echo ********** Build %1.DLL *********** echo. echo. echo Tasm to %1.obj echo. tasm.EXE /m /x /ml %1 > %1.log echo. >> %1.log echo TLink32 to %1.dll echo ----------------------- >> %1.log tlink32.EXE -Tpd -c %1.obj,,,,%1.def >> %1.log IMPLIB.EXE %1.lib %1.dll >> %1.log if errorlevel 1 NotePad.EXE %1.log :end if exist %1.res del %1.res if exist %1.map del %1.map if exist %1.obj del %1.obj Если будет желание разобраться, то можно и под Masm переписать. А пока не особо вникая, расскажу о сути файла. Файл позволяет полностью скомпилировать следующие поекты: Com-файл Com-файл с отладочной информацией Exe-файл (DOS) Exe-файл с отладочной информацией (DOS) Exe-файл (WIN) Exe-файл (WIN console) Exe-файл с файлом ресурсов (RC) (WIN) Exe-файл с файлом ресурсов (RC) и отладочной информацией (WIN) DLL библиотека При этом в случае возникновении ошибки во время компиляции открывается блокнот с логом. Ежели компиляция прошла успешно, никаких сообщений не появляется. Файл вызывается с командной строкой, в которой два параметра: имя asm-файла без расширения и второй параметр это тип компиляции, одно из следующих значений: com comdb exe exedb windows konsole winres winresdb Windll Список соответствует вышеописанным проектам. Пример: "build.bat cyrcle com" – скомпилируется com-файл из файла cyrcle.asm "build.bat OpisStat winresdb" – скомпилируется exe-файл из файла OpisStat.asm, при этом в каталоге с OpisStat.asm должен быть файл OpisStat.rc Пойдем дальше. Если Вы все-таки решили, для редактирования asm-файлов, воспользоваться программой "ASM Editor for Windows", которую мы тут советуем, то предложу Вам добавить/заменить в файле "AsmEd.ini", который находится в каталоге "c:\Asm\Assembler\", секцию "[Project] " на: Код [Project] Build COM=build.bat {b} com Build EXE=build.bat {b} exe Com Debug Info=build.bat {b} comdb Exe Debug Info=build.bat {b} exedb -= Win=build.bat {b} windows Win konsole=build.bat {b} konsole Win resourse=build.bat {b} winres Win resource DebugInfo=build.bat {b} winresdb --= Build DLL=build.bat {b} windll ---= Run COM={b}.com Run EXE={b}.exe ----= Soft Ice 4.05 - com=c:\Asm\SoftIce95\Util16\Dldr.exe {b}.com Soft Ice 4.05 - exe (DOS)=c:\Asm\SoftIce95\Util16\Dldr.exe {b}.exe Soft Ice 4.05 - exe=C:\Asm\SoftIce95\loader32.exe /translate /load {b}.exe Это мои настройки, но можно создать и свои, здесь просто наглядно видно гибкость программы в отношении настроек. Теперь откроем "ASM Editor for Windows" и напишем следующий текст: Код .model tiny .code .286 org 100h _start: mov dx,offset hello mov ah,9 int 21h ret hello db "Hello$" end _start Сохраним его, например в каталог "c:\Asm\Project\Hello\" под именем Hello.asm Выберем меню "Project" и пункт "Build COM". На некоторое время мигнет консольное окошко и в каталоге "c:\Asm\Project\Hello\" появится файл Hello.com. А теперь за книжки и учиться, учиться и учиться. P.S. Не надо сохранять проекты в каталоги имена которых длиннее 8 символов, а также называть asm-файлы именами, превышающими эту же длину. P.S.S. Не претендую на истину в последней инстанции, но новичку это должно помочь. IMHO :) Сообщение было отредактировано AndyBitOff: 1.03.2005 - 23:50 |
-------------------- Если ты сегодня кому-то помог, значит, день прожит не зря и завтра, возможно, помогут тебе. (кредо)
|
|
gadzilla |
2.03.2005 - 00:51
Сообщение
#5
|
Novice Группа: Пoльзователь Сообщений: 21 Регистрация: 1.03.2005 Из: Бердянск Пользователь №: 99755 |
Извените что использую эту тему, нет смысла открывать новую.
Подскажите как мне запрограммировать контроллер прерываний, я прочитал пару статей но так и не врубился!(Очень надо понять) |
AndyBitOff |
2.03.2005 - 15:09
Сообщение
#6
|
Gold Member Группа: Супермодераторы Сообщений: 783 Регистрация: 2.11.2004 Из: Saint-Petersburg (Russia) Пользователь №: 67823 |
Цитата Подскажите как мне запрограммировать контроллер прерываний, я прочитал пару статей но так и не врубился! Наврятли я смогу Вам помочь, на асме под Дос я писал так давно, что у меня остались только общие воспоминания об этом. Советую Вам сходить на портал RUSFAQ.RU и подписаться на рассылку "Программирование на языке Ассемблера" по этому url=http://rusfaq.ru/cgi-bin/index.cgi?Step=issues&ID0=5&ID1=3 адресу. Там сидят достаточно знающие люди, которые постораются ответить на Ваш вопрос. В свое время и я там был экспертом, но все течет, все изменяется. Удачи. |
-------------------- Если ты сегодня кому-то помог, значит, день прожит не зря и завтра, возможно, помогут тебе. (кредо)
|
|
gadzilla |
2.03.2005 - 20:33
Сообщение
#7
|
Novice Группа: Пoльзователь Сообщений: 21 Регистрация: 1.03.2005 Из: Бердянск Пользователь №: 99755 |
Спосибо очень интересный и полезный сайт
|
MaxIkar |
26.04.2007 - 22:40
Сообщение
#8
|
Novice Группа: Пользовaтели Сообщений: 1 Регистрация: 24.04.2007 Пользователь №: 186937 |
Приветствую всех!
У меня проблема. Имеется задача (Win32): Создать приложение-ревизор, осуществляющее постановку на учет и последующую проверку файлов на предмет модификации (контроль целостности) с помощью подсчета контрольной суммы файла (CRC) и последующего сравнения с хранящимся эталоном. Замечание. Необходимо реализовать механизм, регистрирующий модификацию одного бита. Интерфейс пользователя необходимо создать в среде Delphi, механизм проверки целостности файла реализовать на языке Assembler (ассемблерные вставки). Проблема именно с ассемблерной составляющей. У самого такие идеи: писать ассемблерными вставками в Delphi, сделать dll или включить в состав проекта obj-файл с процедурами. В архиве http://www.thequietplace.net/godstower/asm.rar + один рабочий алгоритм (working), там одна асмовская процедура, в которую всключена готовая таблица crc. + dos - 3 досовские + yurov - чистый ассемблер + my - попытка заставить алгоритм Юрова работать под win32 В чем заключается проблема? Рабочий алгоритм вычисляет другую crc (подозреваю, что там используется другой полином) чем досовкие варианты. И мне кажется, что лучше использовать не готовую таблицу, а генерировать ее, как это сделано у Юрова. Что я и попытался сделать. Но у меня ничего не выходит. Пока попытался проинициализировать таблицу (InitTbl), храня ее в глобальном массиве. Дальше же хотел заюзать нижнюю часть алгоритма но учитывая то, что файл буду читать кусками и надо накапливать уже вычисленную crc. Пытался это оформить dll (думаю, что это хорошая практика на будущее - потом использовать код в других проектах), но и из этого ничего не вышло. Может кто-нибудь даст советы по поводу портирования 16-битного кода в 32-битный и использования его в Delphi? Интересует все: от того, как передавать параметры до того, какого типа лучше брать переменные, как хранить данные. Спасибо |
Реклама
|
|
|
|
|
|
Текстовая версия | Сейчас: 28.03.2024 - 17:21 |
|