Asembler, wypisywanie tekstu.

0

Mam segment danych 32 i 16 bitowych. 32 pominę bo na początku z niego nie korzystam.

D16		SEGMENT USE16	
...
...
... //Jakieś zmienenne//
...

txt 	DB	"tekst do wyswietlenia",13,10,'$'
D16		ENDS
C16		SEGMENT USE16

               	ASSUME  CS:C16, DS:D16, SS:S16
Start:

Wyswietlanie_napisu txt
...
...
...

Wyswietlanie_napisu - makro.

Przed wyświetleniem tekstu: tekst do wyswietlenia pojawiają się różne niepożądane znaki. Co może być nie tak?

0

Znaczy ze nie pokazałeś nam jak wygląda to twoje makro i pytasz czemu źle wypisuje? o_O

0
Wyswietlanie_napisu     Macro Napis
 
mov       dx, OFFSET Napis
mov       ah, 09h
int       21h              
ENDM

:(

0

A czy jesteś pewien ze ds wskazuje na to na co powinien? Podpowiem że assume ds:d16 wcale nie ustawia ds na taki adres...

0

Mówiąc po ludzku,popatrz w kursach asemblera jak się ustawia rejestr EDS na zdefiniowany w programie segment danych.Najczęściej jest to poprzez (składnia intelowska):
lea eax,data_segment
mov eds,eax

0

Zrób to tak

;---------------------------------------------
Wyswietlanie_napisu MACRO seg_data, Napis
lea dx, Napis
mov ax,seg_data
mov ds,ax
xor ax,ax
mov ah, 09h
int 21h
ENDM
;----------------------------------------------

Jak będziesz wywolywał makro to zrób to tak.

;---------------------------------------
mov ax,d16
mov ds,ax
Wyswietlanie_napisu ds, txt
;---------------------------------------

i to powinno działać

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