asembler x86 odbicie lustrzane tekstu

0

Cześć piszę program w asemblerze, który ma dokonywać odbicia lustrzanego tekstu, napisałem coś takiego i nie mogę dojść gdzie jest błąd albo błędy ktoś pomoże?

                .MODEL  SMALL


Dane            SEGMENT

Tekst           DB      "Jakis napis$"

Dane        	ENDS	

Kod             SEGMENT

                ASSUME  CS:Kod, DS:Dane, SS:Stosik
Start:
                mov     ax,SEG Dane
                mov     cx, ax
				
				mov     ah, 09h         
                mov     dx, OFFSET Tekst
                int     21h
				
                mov     di,OFFSET Tekst
                mov     si,di
                xor     cx, cx

Petla1:
                cmp     cx, di
                jmp     Sprawdz
                inc     di
                inc     cx
                inc     cx
                jmp     Start

Sprawdz:
                or      cx, di
                jnz     Koniec
                shr     cx, 2
                adc     cx, 0
                dec     di

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

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

Koniec:
                mov     ax, 4C00h
                int     21h

Kod             ENDS

Stosik          SEGMENT STACK

                DB      100h DUP (?)
Stosik			ENDS

                END     Start
0

Odpal pod debugerem? Z tego co widać na pierwszy rzut oka:

Petla1:
                cmp     cx, di
                jmp     Sprawdz
                inc     di
                inc     cx
                inc     cx
                jmp     Start

To nie ma sensu, bo nic z tego kodu po Sprawdz się nie wykona nigdy.

Swoja drogą czemu nie zrobisz tego trywialną rekurencją? Przelatujesz po tekscie i wrzucasz literki na stos a następnie ściągasz literki ze stosu i wypisujesz.

0

Tak widzę teraz sporo błędów. Spróbuje zrobić tak jak mówisz.

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