Odwrócony trójkąt

0

Dzień dobry!
Chciałem napisać program w 16-bitowym nasm na dosa, który będzie rysował "odwrócony" trójkąt ze znaków, które poda użytkownik. Np. po podaniu abc zostanie narysowany:

aaaaa
  bbb
    c

Napisałem już ramy tego programu, tzn program który pobiera do bufora tekst z kosnoli, zadeklarowałem parę zmiennych, i tyle.

org 100h

start:
	;zerowanko rejestrów
	xor ax,ax
	xor bx,bx
	xor cx,cx
	xor dx,dx

	mov		ah, 9 ; wypisuje tekst aby podac ciag znakow
	mov		dx, podaj
	int		21h

	mov		ah, 0ah ; pobiera ciag znakow
	mov		dx, bufer
	int		21h
			
	xor		bx, bx
	mov		bl, [dlugosc]	
	mov		byte [tekst+bx+1], '$'	

	call	wypisz_nl ; nowa linia
	
	;;;;;;;;;;;;;;;;;;;;
	; tutaj prawdopodobnie kod do rysowania
	;;;;;;;;;;;;;;;;;;;;

	mov		ax, 4c00h ; zakonczenie programu
	int		21h
		
			
wypisz_nl:
	mov		dx, nowalinia
	mov		ah, 9
	int		21h
ret
wypisz_znak:
	mov		ah, 2
	int		21h
ret

nowalinia	db		13, 10, '$'
bufer		db		20
dlugosc	db		0
tekst:		times 	22 	db	'$'
podaj		db		"Podaj mnie tutej ciag znakow: $"


Jednakże nie mam pomysłu (żadnej koncepcji) jak obliczać ilość znaków i spacji do wyświetlenia, jakie pętle stworzyć. Pomożecie? :)

0

cx = dlugosc
bx = 0
gora:
wykonuje dopóki cx jest większe od 0

wypisz bx2 razy ' ' i tekst + bx w ilości (dlugosc-(bx2)+2)

bx+1
cx-1

skocz do góry

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