Проблема с портированием с MASM на FASM =)

Applications development, KoOS API questions
Post Reply
alex-rudenkiy
Posts: 2
Joined: Thu Jan 30, 2014 7:01 pm

Проблема с портированием с MASM на FASM =)

Post by alex-rudenkiy »

Люди помогите мне с проблемой. У меня есть много интересных .asm программ, которые бы хотелось установить в Kolibri OS, сама-то проблема в том что все программы написанный на masm и не компилируются в FASM-е. Помогите мне решить эту проблему =)

EDIT by yogev_ezra: Изменил название темы на соответствующее вопросу
punk_joker
Posts: 1278
Joined: Tue Apr 12, 2011 11:19 pm

Post by punk_joker »

to infinity and beyond
0CodErr
Posts: 1498
Joined: Sun Oct 30, 2011 6:43 pm

Re: Проблема с портированием с MASM на FASM =)

Post by 0CodErr »

Кстати, вместо masm можно использовать JWasm (MASM-compatible assembler).
И в качестве примера(test.asm):
:

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
User avatar
XVilka
Posts: 796
Joined: Tue Aug 25, 2009 4:45 pm

Re: Проблема с портированием с MASM на FASM =)

Post by XVilka »

Подниму тему, так как тот сайт JWasm умер, мы сохранили и подняли новый - http://jwasm.info (исходники сайта здесь https://github.com/JWasm/jwasm.github.io)

Сам JWasm можно взять здесь https://github.com/JWasm/JWasm - он теперь проверяется Coverity, Travis-CI и AppVeyor и автотестами.
0CodErr
Posts: 1498
Joined: Sun Oct 30, 2011 6:43 pm

Re: Проблема с портированием с MASM на FASM =)

Post 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
0CodErr
Posts: 1498
Joined: Sun Oct 30, 2011 6:43 pm

Re: Проблема с портированием с MASM на FASM =)

Post 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
Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests