IPB

Здравствуйте, гость ( Вход | Регистрация )

> Правила форума

Все ссылки на сторонние ресурсы, за исключением офсайтов программ, должны оформляться с помошью тега скрытого текста - [hide=1]Ссылка[/hide]

> ассемблер : вопросы и ответы, sos help и все такое прочие
kiray
27.02.2005 - 20:25
Сообщение #1


No Avatar
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
User is offlineProfile Card PM
Go to the top of the page
+
 
Reply to this topicStart new topic
Ответов(1 - 7)
AndyBitOff
28.02.2005 - 01:10
Сообщение #2



Gold Member
Group Icon
Группа: Супермодераторы
Сообщений: 783
Регистрация: 2.11.2004
Из: Saint-Petersburg (Russia)

Пользователь №: 67823




>с tasm я вобще ничего не пойму один большой глюк
На чем основывается Ваше утверждение? Какая версия Tasm?

Приведите пример кода, который не компилится.
Как Вы компилируете проект?

Сообщение было отредактировано AndyBitOff: 28.02.2005 - 01:11


--------------------
Если ты сегодня кому-то помог, значит, день прожит не зря и завтра, возможно, помогут тебе. (кредо)
User is offlineProfile Card PM
Go to the top of the page
+
kiray
28.02.2005 - 15:49
Сообщение #3


No Avatar
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 :(
зарание спасибо за ответ
User is offlineProfile Card PM
Go to the top of the page
+
AndyBitOff
1.03.2005 - 23:47
Сообщение #4



Gold Member
Group Icon
Группа: Супермодераторы
Сообщений: 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


--------------------
Если ты сегодня кому-то помог, значит, день прожит не зря и завтра, возможно, помогут тебе. (кредо)
User is offlineProfile Card PM
Go to the top of the page
+
gadzilla
2.03.2005 - 00:51
Сообщение #5


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 21
Регистрация: 1.03.2005
Из: Бердянск

Пользователь №: 99755




Извените что использую эту тему, нет смысла открывать новую.
Подскажите как мне запрограммировать контроллер прерываний, я прочитал пару статей но так и не врубился!(Очень надо понять)
User is offlineProfile Card PM
Go to the top of the page
+
AndyBitOff
2.03.2005 - 15:09
Сообщение #6



Gold Member
Group Icon
Группа: Супермодераторы
Сообщений: 783
Регистрация: 2.11.2004
Из: Saint-Petersburg (Russia)

Пользователь №: 67823




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

Наврятли я смогу Вам помочь, на асме под Дос я писал так давно, что у меня остались только общие воспоминания об этом.
Советую Вам сходить на портал RUSFAQ.RU и подписаться на рассылку "Программирование на языке Ассемблера" по этому url=http://rusfaq.ru/cgi-bin/index.cgi?Step=issues&ID0=5&ID1=3 адресу. Там сидят достаточно знающие люди, которые постораются ответить на Ваш вопрос. В свое время и я там был экспертом, но все течет, все изменяется.

Удачи.


--------------------
Если ты сегодня кому-то помог, значит, день прожит не зря и завтра, возможно, помогут тебе. (кредо)
User is offlineProfile Card PM
Go to the top of the page
+
gadzilla
2.03.2005 - 20:33
Сообщение #7


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 21
Регистрация: 1.03.2005
Из: Бердянск

Пользователь №: 99755




Спосибо очень интересный и полезный сайт
User is offlineProfile Card PM
Go to the top of the page
+
MaxIkar
26.04.2007 - 22:40
Сообщение #8


No Avatar
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?
Интересует все: от того, как передавать параметры до того, какого типа лучше брать переменные, как хранить данные.

Спасибо
User is offlineProfile Card PM
Go to the top of the page
+
Реклама

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



- Текстовая версия Сейчас: 28.03.2024 - 17:21
]]> ]]>
]]> Яндекс.Метрика ]]>