pobieranie liczby z klawiatury w języku assembler

0

Witam, mój problem polega na tym, że nie wiem jakiej procedury użyć, aby program umozliwiał pobranie liczby z klawiatury, a następnie wykorzystał ją do obliczeń. Szukałem w internecie różnych procedur, ale większość z nich zawierają makra, których nie potrafie napisać. Pisze pod dosa w kompilatorze fasm. Poniżej zamieszczam kod, który znalazłem. Wydaje mi sie fajnie napisany, ale niestety nie rozumiem makra po instrukcji call

	xor	bx, bx		; miejsce na liczbę
l_petla:
	call	far _we_z	; pobierz znak z klawiatury

	cmp	al, lf		; czy Enter?
	je	l_juz		; jeśli tak, to wychodzimy
	cmp	al, cr
	je	l_juz
				; przepuszczamy Spacje:
	cmp	al, spc
	je	l_petla

	cmp	al, '0'		; jeśli nie cyfra, to błąd
	jb	l_blad
	cmp	al, '9'
	ja	l_blad

	and	al, 0fh		; izolujemy wartość (sub al, '0')
	mov	cl, al
	mov	ax, bx

	shl	bx, 1		; zrobimy miejsce na nową cyfrę
	jc	l_blad

	shl	ax, 1
	jc	l_blad
	shl	ax, 1
	jc	l_blad
	shl	ax, 1
	jc	l_blad

	add	bx, ax		; BX=BX*10 - bieżącą liczbę mnożymy przez 10
	jc	l_blad

	add	bl, cl		; dodajemy cyfrę
	adc	bh, 0
	jc	l_blad		; jeśli przekroczony limit, to błąd

	jmp	short l_petla
l_juz:
	; wynik w AX 
1

A to ma być int? Popełniłem kiedyś coś takiego:

	czytajn:
		xor ax,ax ;zerowanie wyniku
	czytajznaki:
		push ax ;wrzucenie aktualnego wyniku na stos
                            ; czytamy kolejny znak wejścia do ds:[znak]
		mov al,ds:[znak]		
		cmp al,0Dh ; CR
			je koniecn
		cmp al,24h ;koniec pliku
			je koniecn
		cmp al,'0'		
			jb zlyznak
		cmp al,'9'
			ja zlyznak
		sub al,'0' ;wyznaczenie cyfry		
		mov dl,al ;zapamiętanie liczby w dl
		xor dh,dh ;liczba zapisana w dx
		pop ax ;pobranie aktualnej liczby ze stosu
		push bx
		mov bl,10
		mul bl ;wynik mnożenia al*bl w ax				
		pop bx
		add ax,dx
	jmp czytajznaki
	koniecn:
		pop ax ; wynik w ax
	ret	

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