ASSEMBLER - missing or unreachable cs

0

Witam!
Dzisiaj zaczynam naukę assemblera i wypociłem hello worda, niestety rzuca mi błędem przy kompilacji takim jak w temacie.

dane segment 
txt db "Hello word! $"
dane ends
code segment
start:
	mov sp, offset wstosu
	mov ax, seg wstosu
	mov ss, ax
	
	
	mov	dx,offset txt
	mov	ax, seg txt
	mov	ds,ax
	mov	ah,9  ; wypisz tekst z DS:DX
	int	21h

	mov	ah,4ch  ; zakoncz program i wroc do systemu
	int	021h
code ends

stos segment stack
		dw 200 dup(?)
wstosu  dw  ?
stos ends
end start 
0

A jesteś pewien że możesz nazwać segment "code"? Zmień to na jakieś "code1" ;]

0

http://home.agh.edu.pl/~dlugopol/asm/programy/p1.txt

Uderzające podobieństwo (komentarze, kod, wielkość stosum nazwy etc) przypadkowe czy dobrze kojarzę? (nie żeby to było coś złego, ciekawy jestem) ;)

0

przydałoby się dodać, czym to kompilujesz...

0

Tiaaa, ale nie z tej strony tylko na wykładzie to pisałem razem z nim, żadna różnica w zasadzie :) Próbowałem sam analogicznie napisać ale też mi wywalał ten sam błąd. W MASMie.

Używam DosBoxa.

0

Nie znam się na MASM-ie. Oto działająca wersja twojego programu w składni NASM:

segment danych
txt db "Hello word! $"

segment kodu
..start:
    mov ax, danych
    mov ds, ax
  
    mov dx, txt
    mov ah, 9  ; wypisz tekst z DS:DX
    int 21h
 
    mov ah,4ch  ; zakoncz program i wroc do systemu
    int 021h
 
segment stosu class=stack
    resb 4096

Do kompilacji użyłem NASM-a z http://www.nasm.us oraz WLINK-a z pakietu Open Watcom http://www.openwatcom.org

C:\PP\myprogs\asm>nasm e.asm -fobj

C:\PP\myprogs\asm>wlink file e.obj
Open Watcom Linker Version 1.9
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
creating a DOS executable

C:\PP\myprogs\asm>e
Hello word!

Przetestowane pod 32-bitowym Windows 7 (bez dosboxa).

0

@lordlucifer coś kłamiesz. Ściągnąłem właśnie Długopolowego MASMA ( http://home.agh.edu.pl/~dlugopol/asm/ ) i skompilowałem ten twój kod zmieniając tylko nazwę segmentu stosu na stos1 i kompiluje sie bez zarzutu.

dane segment 
txt db "Hello word! $"
dane ends
code segment
start:
    mov sp, offset wstosu
    mov ax, seg wstosu
    mov ss, ax
 
 
    mov    dx,offset txt
    mov    ax, seg txt
    mov    ds,ax
    mov    ah,9  ; wypisz tekst z DS:DX
    int    21h
 
    mov    ah,4ch  ; zakoncz program i wroc do systemu
    int    021h
code ends
 
stos1 segment stack
        dw 200 dup(?)
wstosu  dw  ?
stos1 ends
end start 

$ ./ML.EXE 1.asm
Microsoft (R) Macro Assembler Version 6.13.7299
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: 1.asm

Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994
Copyright (C) Microsoft Corp 1984-1993. All rights reserved.

Object Modules [.obj]: 1.obj
Run File [1.exe]: "1.exe"
List File [nul.map]: NUL
Libraries [.lib]:
Definitions File [nul.def]:

0

Haha przyrzekam że teraz skopiowałem ten kod co wkleiłeś i nie działa, ale się dowiedziałem żeby na VirtualBoxie xp postawić i tam będzie działać ;p

0

Nie chce cię martwić ale trochę semestru już minęlo a ty masz problemy z kompilacją hello worlda. Przeczuwam, że dr K. cię zniszczy... ;]

0

Mam z doktorem N. i na pierwsze zadanie mam ponad 2 tygodnie i dopiero teraz zaczynam :)

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