HighLevel in ASM. Tutorial?



  • Es gibt in ASM ja auch schon länger die möglichkeit Strukturen anzulegen oder das Makro LOCAL das sind ja alles Dinge die den ASM näher an High-Level heranbringen sollen.Wisst ihr wo ich so etwas wie ein Tutorial oder eine zusammenfassung mit kruzem Beispiel zu solchen High-Level Ergänzungen finden kann??(Auch speziell zu diesen,aber eher allgemein)



  • ich würde mal sagen das liegt ganz stark daran, welchen assembler du benutzt., also z.B. masm, nasm, tasm etc.



  • Mein Nasm ist sehr bockig,der geht net.
    Mein Masm ist brav,der geht.
    Mein Tasm ist sehr brav,der geht wunderbar.

    also falls es einer weis wie das da geht,am liebsten für tasm oder für masm



  • TASM verwendet die geleichen Assembler-Direktiven wie sie von MASM vorgegeben werden. NASM verwendet aber eigene. Beispiel Macrodefinition geht unter NASM glaube ich so:

    %macro 0
    ;das macro
    %endmacro



  • sowas ist echt schwer zu finden. musste auch erstmal ne weile suchen.
    such doch mal nach TASM OOP oder sowas bei google.
    hier schon mal was um deine geschmacksnerven anzuregen, ein wenig OOP mit TASM:

    ideal
    locals @@
    model tiny, pascal
    p386
    
    STRUC pixel GLOBAL METHOD  {
    
     set : word = set_pixel
     get : word = get_pixel
    
    }
     x dw ?
     y dw ?
     col db ?
    ends pixel
    
    STRUC pixel2 GLOBAL METHOD {
    }
     x dw ?
     y dw ?
     z dw ?
    ends pixel2
    
    CODESEG
            org     100h
    main:
            push    cs
            pop     ds
    
            mov     ax,13h
            int     10h
    
            CALL    p METHOD pixel:set, offset p
            CALL    p1 METHOD pixel:set, offset p1
            CALL    p METHOD pixel:get, offset p,170,110
            CALL    p METHOD pixel:set, offset p
    
            mov     ah,08h
            int     21h
    
            mov     ax,03h
            int     10h
    
            ret
    
    proc set_pixel USES es di ax bx dx, STRUCOFS : word
            push    0a000h
            pop     es
            mov     di,[STRUCOFS]
            mov     ax,320
            mul     [(pixel ptr di).y]
            add     ax,[(pixel ptr di).x]
            mov     bx,ax
            mov     al,[(pixel ptr di).col]
            mov     [es:bx],al
            ret
    endp
    
    proc get_pixel USES es di ax bx dx, STRUCOFS,@@x,@@y : word
            push    0a000h
            pop     es
            mov     di,[STRUCOFS]
            mov     ax,320
            mul     [@@y]
            add     ax,[@@x]
            mov     bx,ax
            mov     al,[es:bx]
            mov     [(pixel ptr di).col],al
            ret
    endp
    
    p  : pixel { x = 160, y = 100, col = 15 }
    p1 : pixel { x = 170, y = 110, col = 2 }
    
    end     main
    

Anmelden zum Antworten