dodatkowe znaki assembler

0

Siemka,

Napisałem program w assemblerze, który ma zamieniać dwa sąsiadujące ze sobą znaki.```


Kod             SEGMENT

                ORG   100h
                ASSUME CS:Kod, DS:Kod, SS:Kod
				

start:			jmp     poczatek
tekst           DB      "Jakis napis","$"

poczatek:
                mov     bx, OFFSET tekst
petla:
				mov     al, [bx]
				cmp     al, '$'
                je      wyswietlenie
                inc     bx
				mov     ah, [bx]
				cmp     ah, '$'
                je      wyswietlenie
				mov     [bx - 1], ah
                mov     [bx], al
                inc     bx
                jmp     petla
wyswietlenie:
                mov     ah, 09h
                mov     dx, OFFSET tekst
                int     21h
koniec:
                mov     ax, 4C00h
                int     21h
Kod          	ENDS

                END  start  

Problem polega na tym, iż pomimo program prawidłowo zamienia znaki w przykładowym napisie, to także dodaje na koniec jakieś inne niepasujące znaki ASCII:

assebmler 7.jpg
Będę wdzięczny za każda pomoc oraz uwagi do mojego kodu.

0

Wygląda w porządku. Sprawdź debuggerem.

0

U mnie działa:

a.png

Na czym to odpalasz?

Na końcu tekstu brakuje kodów nowej linii (bajty 13, 10) - co może być powodem glitcha…

tekst           DB      "Jakis napis",13,10,"$"

— ale wtedy algorytm ci je zmasakruje, więc zamiast na dolarze powinieneś przerywać działanie na bajcie 13.
Może to coś pomoże…

0

Wielkie dzięki za odpowiedzi.
Niestety po wprowadzeniu poprawek, tym razem niechciane znaki pojawiają się na początku, zamiast na końcu.

Co do programu uruchamiającego to musimy używać Turbo Assemblera w DOSboxie.

0

Dziękuję wszystkim za pomoc.
Zamykam temat.

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