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