Page 1 of 1
Проблема с портированием с MASM на FASM =)
Posted: Fri Feb 07, 2014 5:52 pm
by alex-rudenkiy
Люди помогите мне с проблемой. У меня есть много интересных .asm программ, которые бы хотелось установить в Kolibri OS, сама-то проблема в том что все программы написанный на masm и не компилируются в FASM-е. Помогите мне решить эту проблему =)
EDIT by yogev_ezra: Изменил название темы на соответствующее вопросу
Posted: Fri Feb 07, 2014 6:14 pm
by punk_joker
Re: Проблема с портированием с MASM на FASM =)
Posted: Mon Feb 24, 2014 8:22 pm
by 0CodErr
Кстати, вместо masm можно использовать
JWasm (MASM-compatible assembler).
И в качестве примера(test.asm):
Spoiler:
Code: Select all
.586
.MODEL FLAT, stdcall
option casemap: none
; Event Constants
REDRAW_EVENT equ 1
KEY_EVENT equ 2
BUTTON_EVENT equ 3
MOUSE_EVENT equ 6
; Window Style Constants
WS_SKINNED_FIXED equ 4000000H
WS_SKINNED_SIZABLE equ 3000000H
WS_FIXED equ 0000000H
WS_SIZABLE equ 2000000H
WS_FILL_TRANSPARENT equ 40000000H
WS_FILL_GRADIENT equ 80000000H
WS_COORD_CLIENT equ 20000000H
WS_CAPTION equ 10000000H
; Caption Style Constants
CS_MOVABLE equ 00000000H
CS_IMMOVABLE equ 01000000H
; Event Mask Constants
EM_REDRAW equ 01H
EM_KEY equ 02H
EM_BUTTON equ 04H
EM_MOUSE equ 020H
PATH_SIZE equ 1024
PARAMS_SIZE equ 256
STACK_SIZE equ 256
SetEvent proto :dword
WaitEvent proto
DrawWindow proto :dword, :dword, :dword, :dword, :dword, :dword, :ptr, :dword
TerminateThread proto
.CODE
db "MENUET01"
dd 1
dd START_
dd END_
dd END_ + PATH_SIZE + PARAMS_SIZE + STACK_SIZE
dd END_ + PATH_SIZE + PARAMS_SIZE + STACK_SIZE
dd END_ + PATH_SIZE
dd END_
szHello:
db "Hello from JWasm!",0
START_:
invoke SetEvent, EM_REDRAW + EM_BUTTON
.repeat
invoke DrawWindow, 100, 170, 200, 150, WS_SKINNED_FIXED + WS_COORD_CLIENT + WS_CAPTION, 0CCDDEEH, szHello, CS_MOVABLE
invoke WaitEvent
.until eax != REDRAW_EVENT
invoke TerminateThread
; *********************************************************************************** ;
WaitEvent proc
mov eax, 10
int 64
ret
WaitEvent endp
; *********************************************************************************** ;
SetEvent proc uses ebx EventMask:dword
mov eax, 40
mov ebx, EventMask
int 64
ret
SetEvent endp
; *********************************************************************************** ;
DrawWindow proc uses ebx esi edi L:dword, W:dword, T:dword, H:dword, Style:dword, BackColor:dword, Caption:ptr, CaptionStyle:dword
; redraw.start
mov eax, 12
mov ebx, 1
int 64
; draw.window
xor eax, eax
mov ebx, L
shl ebx, 16
add ebx, W
mov ecx, T
shl ecx, 16
add ecx, H
mov edx, Style
or edx, BackColor
mov edi, Caption
mov esi, CaptionStyle
int 64
; redraw.finish
mov eax, 12
mov ebx, 2
int 64
ret
DrawWindow endp
; *********************************************************************************** ;
TerminateThread proc
or eax, -1
int 64
TerminateThread endp
; *********************************************************************************** ;
END_:
END
Собирать так:
Re: Проблема с портированием с MASM на FASM =)
Posted: Wed Mar 16, 2016 4:02 pm
by XVilka
Подниму тему, так как тот сайт JWasm умер, мы сохранили и подняли новый -
http://jwasm.info (исходники сайта здесь
https://github.com/JWasm/jwasm.github.io)
Сам JWasm можно взять здесь
https://github.com/JWasm/JWasm - он теперь проверяется Coverity, Travis-CI и AppVeyor и автотестами.
Re: Проблема с портированием с MASM на FASM =)
Posted: Fri Jun 10, 2016 4:49 pm
by 0CodErr
Re: Проблема с портированием с MASM на FASM =)
Posted: Fri Jul 07, 2017 9:26 pm
by 0CodErr
Похоже, что
HJWasm переименовали в
UASM.
Теперь на masm-форуме доска(
http://masm32.com/board/index.php?board=51.0) называется "
UASM Assembler Development"
Вот тут
http://www.terraspace.co.uk/uasm.html написано
UASM is a free MASM-compatible assembler based on JWasm