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

Applications development, KoOS API questions
  • to infinity and beyond
  • Кстати, вместо 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
  • Подниму тему, так как тот сайт JWasm умер, мы сохранили и подняли новый - http://jwasm.info (исходники сайта здесь https://github.com/JWasm/jwasm.github.io)

    Сам JWasm можно взять здесь https://github.com/JWasm/JWasm - он теперь проверяется Coverity, Travis-CI и AppVeyor и автотестами.
  • Кстати, существует ещё 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
  • Похоже, что 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
  • Who is online

    Users browsing this forum: No registered users and 7 guests