1 Востаннє редагувалося Дмитро-Чебурашка (08.04.2018 15:36:14)

Тема: Мабуть не знаю MASM, допоможить вивчіти!

Привіт всім!

Вітаю всіх з Великоднем


Проміння чисте
Падає з небес
Вітаємо з Великоднем
Христос воскрес!



З Воскресінням Христовим щиро Вас вітаю!
Жити в радості й любові від душі бажаю!
Запашною нехай буде Великодня Паска
І до віку буде з Вами світла Божа ласка!

Хай у душі панує свято,
Хай успіхів буде багато!
Хай завжди і у всім щастить.
І хай вас Бог благословить!

Шановні хлопці (і дівчата, і хто б не був, щоб нікого не скривдити)  я не можу скоипілювати типовий баззовий пробний зразок коду

.386
.model flat
include C:\masm32\include\windows.inc
include C:\masm32\include\kernel32.inc
include C:\masm32\include\user32.inc

includelib C:\masm32\lib\kernel32.lib
includelib C:\masm32\lib\user32.lib
 
.data
MsgCaption      db "Iczelion's tutorial #2",0
MsgBoxText      db "Win32 Assembly is Great!",0
 
.code
start:
    invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
    invoke ExitProcess,NULL
end start

Помилок - вагон, і всі вони в windows.inc!



C:\masm32\bin\ml.exe /c /coff /Zi masm1.asm
C:\masm32\bin\link /SUBSYSTEM:WINDOWS masm1.obj

pause

Почінається список так .inc<78> : error A2119 : language type must be specified

і таке і подібне ціла справжня простиня на пару сотен рядків. Скопіювати повністю не можу і не бачу сенсу, хоча
розбиратися з файлом windows.inc само по собі надзвичайно цікаво. Дивлячісь в нього я взнаю багато що нове, хоча б ті самі макроси, якіх я досі не використовував і не знав взагалі.
Але в чому ж таки справа тотально??

Post's attachments

windows.inc 954.5 kb, 725 downloads since 2018-04-08 

Подякували: sensei, /KIT\, Betterthanyou, 221VOLT5

2

Re: Мабуть не знаю MASM, допоможить вивчіти!

Крапку перед 386 забули?

Подякували: leofun01, 221VOLT2

3

Re: Мабуть не знаю MASM, допоможить вивчіти!

шо за MASM /
MASM32 чи MASM6.11 ?

Re: Мабуть не знаю MASM, допоможить вивчіти!

reverse2500, masm32, звичайно.  Крапку ні, е забув, це я коли в форумі частину кода замалював і узяв в тегі коду, крапка вислизнула.

5

Re: Мабуть не знаю MASM, допоможить вивчіти!

.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
 
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
 
.data
MsgCaption      db "Iczelion's tutorial #2",0
MsgBoxText      db "Win32 Assembly is Great!",0
 
.code
start:
    invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
    invoke ExitProcess,NULL
end start

в мене працює, але bat файл такий

\masm32\bin\ml.exe /c /coff /Zi asmasche.asm
\masm32\bin\link /SUBSYSTEM:WINDOWS asmasche.obj

6

Re: Мабуть не знаю MASM, допоможить вивчіти!

в мене інтернет поганий, пару раз писав повідомлення, прохання там замінити на своє імя файлу в бантіку

7 Востаннє редагувалося dosprog (03.06.2018 11:30:13)

Re: Мабуть не знаю MASM, допоможить вивчіти!

Додав би, що згаданий BAT-файл зручно оформлювати таким чином:

set NAME=YourProgramName
 \masm32\bin\ml /c /coff              %NAME%.asm
 \masm32\bin\Link /SUBSYSTEM:WINDOWS  %NAME%.obj

8

Re: Мабуть не знаю MASM, допоможить вивчіти!

Використовуючи MASM потрібно завжди пам'ятати про опцію

option casemap:none

тоді помилок в windows.inc не буде. Взагалі програмуючи на асемблері краще використовувати якусь
спеціалізовану IDE.

Подякували: 221VOLT1

9

Re: Мабуть не знаю MASM, допоможить вивчіти!

Foresterrr написав:

Взагалі програмуючи на асемблері краще використовувати якусь
спеціалізовану IDE.

що порадите для FASM на (l)ubuntu 16.04 ?

10

Re: Мабуть не знаю MASM, допоможить вивчіти!

221VOLT написав:
Foresterrr написав:

Взагалі програмуючи на асемблері краще використовувати якусь
спеціалізовану IDE.

що порадите для FASM на (l)ubuntu 16.04 ?

На жаль не маю досвіду роботи з FASM та Ubuntu.
Свого часу довелось достатньо попрацювати з MASM, навіть розробляв свою IDE під нього - GSS Visual Assembler (для Windows), наразі вона вже застаріла і я більше не займаюсь нею, а нову ще тільки пишу.

Подякували: 221VOLT1

11 Востаннє редагувалося 221VOLT (28.08.2019 02:25:19)

Re: Мабуть не знаю MASM, допоможить вивчіти!

взагалі в інеті пишуть, що різниця між різними asm є мінімальною
мені, як новачку, може бути поки надто складно,
ви ж, як профі по цьому напряму, з великим досвідом, можливо,
можете на порядки швидше зорієнтуватись, та щось порадити
так чи інакше, дякую)

12 Востаннє редагувалося koala (28.08.2019 12:12:04)

Re: Мабуть не знаю MASM, допоможить вивчіти!

221VOLT написав:

взагалі в інеті пишуть, що різниця між різними asm є мінімальною

А на паркані теж *** написано, а насправді - школа. Вказуйте, де саме, бо "в інеті" - це те саме, що "на паркані".

Асемблери, для початку, прив'язані до обладнання. Це на Python ви що під ARM, що на Intel пишете однаково; тут - земля і небо.
Потім - для x86 є синтаксис Intel (поширений під Windows), а є AT&T (*Nix). Порівняйте:

#AT&T
addl $4, %esp # До мнемокоду додається розмір операндів (l=long=dword), $ означає число, % - реєстр. Призначення іде другим. 
#Intel
add esp, 4 # Призначення перше, числа та регістри не виокремлюються, не потрібно вказувати розмір

Ну і є купа дрібничок, характерних для конкретних асемблерів.

От хіба що в цьому сенсі: як порівняти із відмінностями інших процесорів, складністю низькорівневого програмування, відмінностями синтаксисів - відмінності між різними асемблерами під Windows дійсно є мінімальними.

Подякували: wander, leofun01, 221VOLT3