Assembler - Zapis do pliku, przekazywanie łańcucha do procedury

0

Witam!

Mam problem z pewną kwestią. Oto wycinek kodu:

	; ---------------------------------------------------------------------
	
	saveStatsToFile 	proc
		push ax
		push bx
		push cx
		push dx
		
		mov bx,word ptr ds:[OUTPUT]
		
		mov dx,offset WSRES
		call saveText
		
		mov dx,offset PCRES
		call saveText
		
		mov dx,offset DGRES
		call saveText
		
		pop dx
		pop cx
		pop bx
		pop ax
		ret
	saveStatsToFile		endp
	
	; ---------------------------------------------------------------------
	
	saveText		proc
		push ax
		push cx
		
		mov cx,1d
		mov ah,40h
		int 021h
		
		endOfProc:
		pop cx
		pop ax
		ret
	saveText		endp
	
	; ---------------------------------------------------------------------

W BX mam uchwyt pliku, do którego będę zapisywał dane.
Każdy z offsetów wskazuje na łańcuch znaków.

Chciałbym móc przekazać do procedury informację, który łańcuch jest aktualnie przerabiany, by móc przewidywać w niej jaki następny znak będzie przetwarzany. Nie chcę tworzyć w środku masy skoków warunkowych, bo wywołań saveText będzie ok. 10.

Chcę po prostu w środku zrobić pętlę, która będzie przepisywać kolejne znaki, póki nie napotka na '$'.

Mniej-więcej coś na ten wzór:

mov si,0
petla:
cmp ds:[AKTUALNYELEMENT + si],'$'
je endOfProc
mov ah,40h
int 021h
inc dx
inc si
jmp petla
1

Możesz tak zrobić, ale akurat tylko z tym biednym bx ;) Możesz zrobić ds:[bx+si] po prostu więc po prostu w bx trzymaj offet tego przerabianego ciągu. (nie, w 8086 rejestry nie są identyczne, jedne można użyć w takim kontekście innych nie)

0

Dziękuję uprzejmie, zadziałało! :)

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