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

Собирать так:

Code: Select all

jwasm -bin -Fo test.kex test.asm

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
Кстати, существует ещё HJWasm.
HJWasm is a free MASM-compatible assembler based on JWasm
http://www.terraspace.co.uk/hjwasm.html
http://github.com/Terraspace/HJWasm
Ветка на MASM-форуме http://masm32.com/board/index.php?board=51.0

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