[asm16] Problem z linkowaniem

0

Witam.
Na wstępie chciałbym zaznaczyć, że dopiero co zaczynam naukę asemblera, więc niektórym pytanie może się wydać banalnie proste.
Napisałem kod w asemblerze:
[code]SSEG segment STACK
db 256 dup (?)
SSEG ends

DSEG segment
STRING db 'AGIJKSZ',0FFh
DSEG ends

CSEG segment
assume CS:CSEG,DS:DSEG,SS:SSEG

START proc FAR
push DS
push AX
mov BX, DSEG
mov DS,BX
call MAIN
retf
START endp

MAIN proc NEAR
mov SI, offset STRING
mov AH,'J'
CHKEND:
cmp byte ptr[SI], 0FFh
je NOFIND
cmp AH, [SI]
je GOT_EQAL
inc SI
jmp CHKEND
GOT_EQAL:
mov DL, [SI]
jmp DONE
NOFIND:
mov DL,'?'
DONE:
mov AH, 6
int 21h
ret
MAIN endp
CSEG ends
end[/code]
No i teraz wpisałem oczywiście:
tasm prog.asm
... wszystko poszło bez błędów, następnie wpisałem:
tasm prog.obj
... i wyskoczył błąd: "Fatal: Out Of Memory". Dodam że kompilowałem ten kod na laptopie z procesorem Intela 486 75 MHz, Windows 3.11, użyłem tasma16 i tlinka16, więc nie wiem co jest nie tak. Najlepsze jest jednak to, że ten sam kod skompilowałem na moim PC - AMD Athlon 800 MHz, Windows 2000 i tym razem przy linkowaniu wyskoczył błąd: "No Program Entry Point"... no to ja już nie wiem co jest w tym kodzie nie tak, skoro na żadnym komputerze nie chce się kontwertować z .obj na .exe.
Please, Help Me... !!! :-)

0

SSEG segment STACK
db 256 dup (?)
SSEG ends

DSEG segment
STRING db 'AGIJKSZ',0FFh
DSEG ends

CSEG segment
assume CS:CSEG,DS:DSEG,SS:SSEG
start:
push DS
push AX
mov BX, DSEG
mov DS,BX
call MAIN
mov ax, 4c00h
int 21h

MAIN proc NEAR
mov SI, offset STRING
mov AH,'J'
CHKEND:
cmp byte ptr[SI], 0FFh
je NOFIND
cmp AH, [SI]
je GOT_EQAL
inc SI
jmp CHKEND
GOT_EQAL:
mov DL, [SI]
jmp DONE
NOFIND:
mov DL,'?'
DONE:
mov AH, 6
int 21h
ret
MAIN endp
CSEG ends
end start

Duron 800, WinXP, TASM i TLINK i wszystko gra.
Zapomniałeś start: i end start dodać.
A swoją drogą to nienawidzę takiej zabawy z segmentami :-/ Wolę troszkę inny schemat stosować.

0

Witam, dzięki za odpowiedź, dopisałem na końcu "end start" i da się już zlinkować na .exe.... ale tylko na PC, na laptopie także dopisałem "end start" i nadal wyskakuje błąd "Fatal: Out Of Memory"... Ale przynajmniej już wiem że kod jest dobry.

A swoją drogą to nienawidzę takiej zabawy z segmentami Wolę troszkę inny schemat stosować.

A jak Ty byś to zrobił ? Nie ma to jak dobre przyzwyczajenia na początek ;)

<font color="blue">[Dopisane]</span>
Kurcze, właśnie zauważyłem że na laptopie nie mogę ŻADNEGO programu zlinkować, nawet najporostrzego:
[code].MODEL tiny
.STACK 100h
.DATA
Komunikat db 'Hello World',13,10,'$'
.CODE
mov ax,seg komunikat
mov ds,ax
mov ah,9
mov dx, offset komunikat
int 21H
mov ah,4CH
int 21H
END[/code]
Znów wyskakuje błąd przy linkowaniu "Fatal: Out Of Memory"...
No ja już nie wiem co jest grane, czy to wina laptopa, czy kompilatora...

1 użytkowników online, w tym zalogowanych: 0, gości: 1