[ASM] Konwersja z ASCII na postać dziesietną i na odwrot

0

Witam! Programik niemal w całości przepisany z Turbo Assembler - Biblia użytkownika. Tasm nie chciał przyjąć trzech linijek
TmpSize db 20
TmpCnt ?
TmpStr 20 dup (?)

Więc zamieniłem na widoczne w listingu. Czy ktoś może mi powiedzieć, dlaczego program nie działa poprawnie? Z góry dziękuję.

.MODEL SMALL
				
.DATA
Prompt 	DB	0Dh, 0Ah, ">>$"
Bufor	DB	20
		db	0
		db 22 dup (?)
		

.CODE

GetNumb PROC
	mov dx, OFFSET Prompt
	mov ah, 9
	int 21h
	mov dx, OFFSET Bufor
	mov ah, 0Ah
	int 21h
	sub ax, ax
	sub cx, cx
	sub bx, bx
	mov cl, 3
	mov si, OFFSET Bufor
	inc si
	inc si
	mov di, 10
ConvLp:
	mul di
	mov bl, BYTE PTR [si]
	inc si
	and ax, bx
	add ax, bx
Loop ConvLp
	push ax
	mov dl, 0Dh
	mov ah, 2
	int 21h
	mov dl, 0Ah
	mov ah, 2
	int 21h
	pop ax
	ret
GetNumb ENDP

PrntNumb PROC
	mov di, 10
	sub cx, cx
PrntLp:
	sub dx, dx
	div di
	push dx
	inc cx
	or	ax, ax
	jnz	PrntLp
	cld
	mov di, OFFSET Bufor
	inc di
	inc di
StrLp:
	pop ax
	add al, '0'
	stosb
SK1:
	loop StrLp
PNDone:
	mov al, '$'
	stosb
	mov dx, OFFSET Bufor
	inc dx
	inc dx
	mov ah, 9
	int 21h
	ret
PrntNumb ENDP
	
Start:

mov ax, SEG DGROUP
mov ds, ax
mov es, ax

call GetNumb
call PrntNumb




mov ah, 4Ch
int 21h

.STACK 1024
END Start
0

Tasm nie chciał przyjąć trzech linijek
TmpSize db 20
TmpCnt ?
TmpStr 20 dup (?)

Podaj jaki błąd wypluwał

Czy ktoś może mi powiedzieć, dlaczego program nie działa poprawnie?

Nie poprawnie czyli jak? Pokaż orginał będzie mi łatwiej

0

Wydaje mi się, że nie potrzebna jest zupełnie linia kodu:

        and ax, bx

z procedury GetNumb.

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