[masm] assembler errors

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

  • mcB
  • Registratie: Mei 2002
  • Laatst online: 21-08 10:41
Ik probeer dit simpel programmaatje te assembleren,..maar ik krijg de volgende foutmelding.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
The Microsoft MACRO Assembler , Version 1.25
 Copyright (C) Microsoft Corp 1981,82,83

 0020  74 00                                    je Thanks
 E r r o r   ---        9:Symbol not defined
 0025  74 00                                    je Thanks
 E r r o r   ---        9:Symbol not defined
 0027  E9 0000 U                                jmp TheEnd
 E r r o r   ---        9:Symbol not defined
?End of file encountered on input file


 E r r o r   ---        85:End of file, no END directive
?End of file encountered on input file


 E r r o r   ---        85:End of file, no END directive

Warning Severe
Errors  Errors
1       1


Ik heb al heel wat gegoogled, maar kan nergens een mogelijke aanwijzing vinden wat ik fout doe, behalve op een italiaanse pagina. (mcB's italiaans is zeeeeer slecht :? )

Ik ben een echte Assembler newbie,....dus als iemand mij hier een beetje mee opweg kan helpen,...

dit is mijn progje:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
    PAGE 65,132
TITLE MCB (EXE)
;-----------------------------------
STCKSG  SEGMENT PARA STACK 'Stapel'
        DW 32 DUP(?)
STCKSG ENDS
;-----------------------------------
DATASG  SEGMENT PARA 'Data'
StartUpMessage  DB "MCB's Program$"
Instructions    DB 0Dh,0Ah,"Press Y to continue...$"
ThanksMsg   DB 0Dh,0Ah,"You pressed Y,..!$"
Goodbye     DB 0Dh,0Ah,"Thanks, and have a nice day$"
DATASG ENDS
;-----------------------------------
CODESG  SEGMENT PARA 'Code'
BEGIN   PROC FAR
        ASSUME CS:CODESG,DS:DATASG
        ASSUME SS:STCKSG,ES:DATASG
        PUSH DS
        lea dx,StartUpMessage
        mov ah,9
        int 21h
        lea dx,Instructions
        mov ah,9
        int 21h
        mov ah,00h
        int 16h
        mov bl,al
        mov dl,al
        mov ah,02h
        int 21h
        cmp bl,'Y'
        je Thanks
        cmp bl,'y'
        je Thanks
        jmp TheEnd
Thanks:
        lea dx,ThanksMsg
        mov ah,9
        int 21h
TheEnd:
        lea dx,Goodbye
        mov ah,9
        int 21h
        mov ax,4C00h
        int 21h
BEGIN   ENDP
CODESG  ENDS
        END BEGIN

Strix (Skullflame)


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 26-08 12:00

Freee!!

Trotse papa van Toon en Len!

Het lijkt erop dat je een CTRL-Z (wordt niet getoond op scherm) in je source hebt staan. Dat is althans het eerste dat mij te binnen schiet. Kijk eens met een hex-editor naar de source. Als je code '1A' tegenkomt voor het einde van je source heb je de boosdoener gevonden.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • mcB
  • Registratie: Mei 2002
  • Laatst online: 21-08 10:41
Ik heb de code geselcteerd. Geen overbodige spaties gezien. In een nieuw document gezet in Ultra-edit.
Bewaard en opnieuwe geprobeerd te assembleren.

Nu geeft ie nog steed 1 warning error en 1 severe error. Symbol not defined krijg ik nu niet meer als output.

Wanneer ik de aangemaakte .obj link werkt het progje maar deels,.....alleen 1e outputregel "McB's Program"
Verder krijg ik een paar rare tekens.

Strix (Skullflame)


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 26-08 12:00

Freee!!

Trotse papa van Toon en Len!

mcB schreef op 16 december 2002 @ 14:52:
Ik heb de code geselcteerd. Geen overbodige spaties gezien. In een nieuw document gezet in Ultra-edit.
De CTRL-Z hoeft niet per sé aan het einde van de regel te staan, kan ook halverwege de regel staan waar je een spatie verwacht, daarom heb ik ook geschreven dat je met een hex-editor moet kijken >:) .
Bewaard en opnieuwe geprobeerd te assembleren.

Nu geeft ie nog steed 1 warning error en 1 severe error. Symbol not defined krijg ik nu niet meer als output.

Wanneer ik de aangemaakte .obj link werkt het progje maar deels,.....alleen 1e outputregel "McB's Program"
Verder krijg ik een paar rare tekens.
Er zit dus al vooruitgang in, succes.

(misschien is het een idee om de foutmeldingen de vermelden)

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • mcB
  • Registratie: Mei 2002
  • Laatst online: 21-08 10:41
Iemand anders nog een idee?
Ik ben er een tijdje niet mee bezig geweest en heb t nu weer opgepakt.
Helaas krijg nog steeds dezelfde foutmeldingen. 8)7 (logisch), maar ik kan nog steeds niet ontdekken waarom ik deze medlingen krijg.

Strix (Skullflame)


  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

Hier assembleert het gewoon (masm 6) als ik het copy/paste vanaf hier. Dus misschien moet je dat ook doen? Er staan wel een paar fouten in:

- Er staat een PUSH DS maar geen bijbehorende POP.
- Het DS register krijgt geen waarde. int 21h/9h verwacht dat wel. DS:DX moet dan namelijk naar de string wijzen. Je moet DS dus eerst met het data segment laden.

  • mcB
  • Registratie: Mei 2002
  • Laatst online: 21-08 10:41
Ik kan nergens een site vinden waar ik even MASM 6 kan downloaden.
Weet iemand waar ik m kan downen?

btw. Is de code nu onvolledig of staat er overbodige informatie in wanneer je puur de huidige functionaliteit als uitgangspunt neemt?

Strix (Skullflame)


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Hier compile't ie prima, gebruik masm 6.14 met een oude linker (MS segmented exe linker 5.60.339).. Volgens mij ben je idd DS vergeten te setten, staat standaard op het segment address van de PSP geloof ik.

Masm 6 zit bijvoorbeeld in het masm32 package, is eigenlijk voor win32 assembly maar met een oude linker kan je nog steeds dos programma's maken.

Oude linker staat hier bij de downloads. Ik zou em wel even hernoemen naar oldlink.exe ofzo om geen verwarring met andere linkers te krijgen.

edit:
Haal de push ds weg en zet dit ervoor in de plaats:
mov ax, DATASG
mov ds, ax
Zo staat DS op het juiste segment

Overigs kan je al die lea dx, var vervangen door mov dx, offset var. Het enige dat er namelijk gebeurt is dat het address (offset) van de variabele in dx wordt gestopt, en dat is gewoon een waarde dus dat kan prima met mov (is kleinere instructie dan lea). Alleen om lokale variabelen te refereren is lea handig, voor globale variabele kan je gewoon mov gebruiken.

[ Voor 54% gewijzigd door madwizard op 03-01-2003 22:05 ]

www.madwizard.org

Pagina: 1