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

Assembler - Zapis do pliku, przekazywanie łańcucha do procedury
MA
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:13
0

Witam!

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

Kopiuj
	; ---------------------------------------------------------------------
	
	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:

Kopiuj
mov si,0
petla:
cmp ds:[AKTUALNYELEMENT + si],'$'
je endOfProc
mov ah,40h
int 021h
inc dx
inc si
jmp petla
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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)


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
MA
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:13
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.