mały problem z konkatenacja pod asemblerem

Komputer wraz z oprogramowaniem wspomagającym projektowanie stał się częścią życia elektronika.
mariuszxxx677

mały problem z konkatenacja pod asemblerem

Postautor: mariuszxxx677 » czw 20 paź 2005, 22:11

mam mały problem z programowanie pod asemblerem i prosiłbym o jakąs mała wskazówke w czym popełniam błąd. otóz napisałem coś takiego:
.model small

DANE SEGMENT

Napis1 db "To jest pierwszy napis",13,10,'$'
DL_NAPIS1 EQU 20
Napis2 db "To jest drugi napis",13,10,'$'
DL_NAPIS2 EQU 25
Napis3 db DL_NAPIS1 + DL_NAPIS2 DUP (?)
DANE ENDS

Kod SEGMENT
ASSUME CS:Kod, DS:DANE, SS:Stosik

start: mov ax, SEG DANE
mov ds, ax
mov si, OFFSET Napis1
mov di, OFFSET Napis2
mov cx, DL_NAPIS1

Petla1:
mov ah, [si]
mov [bx], ah
inc si
dec di
loop Petla1

mov si, OFFSET Napis1
mov cx, DL_NAPIS2

Petla2:
mov [di], al
mov al, [di]
dec si
loop Petla2
inc di

mov ah, 09h
mov dx, OFFSET Napis3
int 21h

mov ax, 4C00h
int 21h

Kod ENDS
Stosik SEGMENT
db 100h DUP (?)
Stosik ENDS
END Start



Chciałem zeby prog ten zliczał konkatenacje dwóch tekstów o danych wielkosciach ale niestety nie udaje mi sie tego zrobić.Znaczy prog sie kompiluje ale jak wyswietla mi tekst to są to znaki takiego typu: $^& itp z których nic nie odczytuje..powiedzcie mi w czym zrobuiłem błąd??

movzx
Aktywny użytkownik 3
Aktywny użytkownik 3
Posty: 642
Rejestracja: ndz 07 sie 2005, 23:38
Lokalizacja: Wrocław
Kontaktowanie:

Postautor: movzx » pt 21 paź 2005, 11:44

1) Napisy ujmuje sie w ' ... ' a nie " ... "
2) Troche przerobilem, zreszta mozna porownac :)

.model small

DANE SEGMENT

Napis1 db 'To jest pierwszy napis',13,10,'$'
DL_NAPIS1 EQU 25
Napis2 db 'To jest drugi napis',13,10,'$'
DL_NAPIS2 EQU 22
Napis3 db DL_NAPIS1 + DL_NAPIS2 DUP (?)
DANE ENDS

Kod SEGMENT
ASSUME CS:Kod, DS:DANE, SS:Stackseg

start:
mov ax, SEG DANE
mov ds, ax
push ds
pop es

mov si, OFFSET Napis1
mov di, OFFSET Napis3
mov cx, DL_NAPIS1
cld

repne movsb

mov si, OFFSET Napis2
sub di,3
mov cx, DL_NAPIS2
cld

repne movsb

sub di,3
mov ah,'$'
mov [di],ah

mov ah, 09h
mov dx, OFFSET Napis3
int 21h

mov ax, 4C00h
int 21h

Kod ENDS
Stackseg SEGMENT
db 100h DUP (?)
Stackseg ENDS
END Start

mariuszxxx677

Postautor: mariuszxxx677 » pt 21 paź 2005, 14:21

Stary wielkie dzieki za pomoc..Wszystko chodzi jak tralala:)) P.S. Nie chce sie kłócić ale napisy również pozna ujmować w " " ..jeszcze raz dzieki i pozdroo:))

Gość

Postautor: Gość » pt 21 paź 2005, 15:17

a jeszcze mam takie małe pytanko:
dlaczego w: sub di,3 jest 3 a nie jakas inna cyfra??

movzx
Aktywny użytkownik 3
Aktywny użytkownik 3
Posty: 642
Rejestracja: ndz 07 sie 2005, 23:38
Lokalizacja: Wrocław
Kontaktowanie:

Postautor: movzx » pt 21 paź 2005, 22:43

Coz, ujete w "" nie dzialaly, przynajmniej u mnie.
Jest 3 bo "koncowka" napisu (13,10,'$') ma 3 bajty.
Rownie dobrze mozna odjac 3 od stalych oznaczajacych dlugosc napisu - i wyrzucic sub. Ale wtedy koncowy '$' w napis3 sie nie zmiesci (bo dlugosc napis3 to suma dlugosci napis1 i napis2)
Pozdr.

Gość

Postautor: Gość » pt 21 paź 2005, 23:51

oki juz teraz wszystko jasne..dzieki za chwile uwagi i pozdro


Wróć do „Oprogramowanie wspomagające projektowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika. i 3 gości

cron