Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ASM mit NASM Problem (https://www.delphipraxis.net/10030-asm-mit-nasm-problem.html)

Luckie 9. Okt 2003 22:59


ASM mit NASM Problem
 
So, ich versuche mich gerade an ASM. Dazu hab eich ein Buch für MASM und TASM. Dort steht folgender Code:
Code:
daten segment

meldung   db "Assembler ist geil."
   db "$"

daten   ends

code   segment

   assume cs:code, ds:daten

anfang:   mov ax, daten
   mov ds,ax
   mov dx, offset meldung
   mov ahg,9
   int 21h
   mov ah, 4ch
   int 21h
   
code   ends

   end anfang
Und als Ergebnis habe ich dann das:
Code:
E:\Programmierung\ASM\NASM\nasm-0.98.35-win32>nasm
test.asm:1: error: parser: instruction expected
test.asm:6: error: symbol `daten' redefined
test.asm:6: error: parser: instruction expected
test.asm:8: error: parser: instruction expected
test.asm:10: error: parser: instruction expected
test.asm:14: error: comma or end of line expected
test.asm:20: error: symbol `code' redefined
test.asm:20: error: parser: instruction expected
test.asm:22: error: parser: instruction expected
Wie bekomme ich den Code unter NASM zum Laufen?

Luckie 9. Okt 2003 23:22

Re: ASM mit NASM Problem
 
So habe es etwas verbessern können:
Code:
daten   segment

meldung   db "Assembler ist geil."
   db "$"

ends
   
code
   mov ax,daten
   mov ds,ax
   mov dx,offset meldung
   mov ah,9
   int 21h
   mov ah,4ch
   int 21h
ends
Aber immer noch:
Code:
test.asm:1: error: parser: instruction expect
test.asm:11: error: comma or end of line expe
test.asm:16: error: symbol `ends' redefined

Christian Seehase 9. Okt 2003 23:26

Re: ASM mit NASM Problem
 
Moin Luckie,

falls Du es nicht haben solltest:

http://nasm.sourceforge.net/documentation.php

Luckie 9. Okt 2003 23:34

Re: ASM mit NASM Problem
 
Ah, danke für den Link. Ich habe 32 Bit NASM, könnte es daran liefen? Der Code ist wohl für 16 Bit.

Christian Seehase 9. Okt 2003 23:45

Re: ASM mit NASM Problem
 
Moin Luckie,

soweit hatte ich den Code schon, dass an anderer Stelle gemeckert wurde:

Code:
anfang:  mov ax, seg meldung
          mov ds,ax
          mov dx,meldung
          mov ah,9 
          int 21h
          mov ah, 4ch
          int 21h
          ret

meldung  db "Assembler ist geil."
          db "$"
Ich hatte dann allerdings im Moment keine weitere Lust tiefer einzusteigen, um's zum Laufen zu bringen.
Der 16-Bit Nasm bringt übrigens den gleichen Fehler. Die mögen offensichtlich die Segmente nicht :?
Da der int 21h ja der DOS Aufruf schlechthin ist, wäre ich wirklich mal neugierig ob das unter Windows überhaupt lauffähig wäre ;-)
Ich muss direkt mal wieder meinen guten alten TASM (2.0) rauskramen.
Hast Du mal im Borland Museum nachgesehen, ob's den da gibt?

Luckie 9. Okt 2003 23:57

Re: ASM mit NASM Problem
 
Ich habe mir jetzt mal TASM 5.0 geliehen.
Damit kopiliert er das:
Code:
daten   segment

meldung db "Assembler ist geil."
      db "$"

daten  ends

code   segment

   assume cs:code, ds:daten

anfang:  
   mov ax, daten
   mov ds,ax
   mov dx,offset meldung
   mov ah,9 
   int 21h
   mov ah,4ch
   int 21h
   
code   ends

   end anfang
tasm32 tes.asm test.exe
Aber er gibt nichts aus.

NicoDE 10. Okt 2003 04:09

Re: ASM mit NASM Problem
 
'mov ax, daten' dürfte das Problem sein, hab mal schnell mit TASM5 getestet...

HelloExe.bat
Code:
;@goto build


data segment
    Hello db "Hello, World!", 0Dh, 0Ah, "$"
data ends

code segment
Start:
    mov    ax, seg Hello
    mov    ds, ax
    mov    dx, offset Hello
    mov    ah, 09h
    int    21h
    mov    ax, 4C00h
    int    21h
code ends

end Start


:build
@echo off
set PATH=P:\BORLAND\TASM5\BIN;%PATH%
tasm /m3 /ml /q /t /w2 /z HelloExe.bat, HelloExe.obj
tlink /c /k /Tde /x HelloExe.obj, Hello.exe
del HelloExe.obj
Hello.exe
pause
HelloCom.bat
Code:
;@goto build


code segment
org 100h
Start:
    mov    ah, 09h
    lea    dx, Hello
    int    21h
    mov    ax, 4C00h
    int    21h
Hello:
    db     "Hello, World!", 0Dh, 0Ah, "$"
code ends

end Start


:build
@echo off
set PATH=P:\BORLAND\TASM5\BIN;%PATH%
tasm /m3 /ml /q /t /w2 /z HelloCom.bat, HelloCom.obj
tlink /c /t /x HelloCom.obj, Hello.com
del HelloCom.obj
Hello.com
pause

Luckie 10. Okt 2003 04:37

Re: ASM mit NASM Problem
 
HA! Das geht. Jetzt weiß ich schon mal, wie so was generell aufgebaut sein muß. Dank dir. Auf den Meister ist doch immer wieder verlass. :P

negaH 10. Okt 2003 11:18

Re: ASM mit NASM Problem
 
statt LEA DX,Message musst du LDS DX,Message nehmen.

Gruß Hagen

Luckie 10. Okt 2003 12:49

Re: ASM mit NASM Problem
 
Den zweiten hatte ich gar nicht ausprobiert, weil mich com-Dateien nicht weiter interessieren werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz