NASM prosty program

0
use16 
 bits 16 ;zeby byl 16 bitowy 

 segment data 
       hello: db 'hello, world','$' 

 segment _stack stack 
       resb 64 
 stacktop: 


 segment code 

 ..start: 
       mov ax,data 
       mov ds,ax 
       mov ax,_stack 
       mov ss,ax 
       mov sp,stacktop 

       mov dx,hello 
       mov ax,0900h 
       int 21h 
       mov ax,4c00h 
       int 21h

Mam oto taki kod napisany w skłądni intelowskiej pod NASM.
Chce żeby to był program 16 bitowy po asemblacji i zlinkowaniu.

Jak widać program ma wyświetlać napis 'hello, world', ale tego nie robi tylko wywala mi jakieś smieci.
Cały czas pisałem pod TASM i nie miałem żadnego problemu. A teraz chciałem popisać
troche w NASM i napotkałem jakies dziwne kłopoty.

Jeszcze raz podkreslam chcę żeby program był 16bitowy pod np. MS-Dosa.
Dlatego skompilowałem go takim polecieniem:

nasm -f obj a.asm -o a.exe

Prosze o pomoc bo siedze juz od ponad 1 godziny i kompiluje na 100 róznych sposobów, a program jest prosty jak konstrukcja cepa.

0

Do debugowania 16 bitowych programów możesz wykorzystać np. emu8086
Jak wpiszesz

mov ah, 09h
; i
mov ah, 04ch

to nadal wypisuje śmieci?

0

Już sobie poradziłem. Problem tkwił w linkowaniu. TLINK dał sobie rade:)

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