Ïðîãðàììà ERROR.ASM
Ñíà÷àëà ââîäèòñÿ äåñÿòè÷íîå ÷èñëî, çàòåì ïðîãðàììà
åãî äîëæíà âûâåñòè íà ýêðàí.
Ðàáîòàåò òîëüêî äëÿ îäíîçíà÷íûõ ÷èñåë.
=========================================
MODEL TINY
.CODE
org 100h
print macro str
mov ah,9
lea dx,str
int 21h
endm
start:
push cs
pop ds
print mes1
call inint
call outint
konets: mov ax,4c00h
int 21h
outint proc near
push cx
push dx
push ax
push bx
xor cx,cx
mov bx,10
xor dx,dx
del: div bx
inc cx
push dx
cmp ax,0
jne del
mov ah,2
vvv: pop dx
add dl,30h
int 21h
loop vvv
pop bx
pop ax
pop dx
pop cx
ret
outint endp
inint proc near
push bx
push dx
xor dx,dx
xor ax,ax
fgh: push ax
mov ah,1
int 21h
cmp al,13
je jkl
sub al,30h
mov dl,al
mov bx,10
pop ax
push dx
mul bx
cmp dx,0
jne error
pop dx
add ax,dx
jmp fgh
jkl: print nline
pop ax
pop dx
pop bx
ret
error: print errs
mov ax,4c01h
int 21h
inint endp
mes1 db 'Ââåäèòå ÷èñëî: $'
nline db 13,10,'$'
errs db 'error?$'
END start
=========================================
Èñïðàâëåííûé âàðèàíò ïðîãðàììû. Âûâîäèò ÷èñëà ïðàâèëüíî.
=========================================
model tiny
.code
org 100h
begin:
push cs
pop ds
print macro str
mov ah,9
lea dx,str
int 21h
endm
print mes1
call inint
call outint
konets: mov ax,4c00h
int 21h
outint proc near
push cx
push dx
push ax
push bx
xor cx,cx
mov bx,10
del: ;<<<<--- Îáíóëÿåì DX ïåðåä äåëåíèåì AX íà BX
xor dx,dx ;<<<<--- Èíà÷å áóäåò äåëèòüñÿ DX:AX íà BX
div bx
inc cx
push dx
cmp ax,0
jne del
mov ah,2
vvv: pop dx
add dl,30h
int 21h
loop vvv
pop bx
pop ax
pop dx
pop cx
ret
outint endp
inint proc near
push bx
push dx
xor dx,dx
xor ax,ax
fgh: push ax
mov ah,1
int 21h
cmp al,13
je jkl
sub al,30h
mov dL,aL
mov bx,10
pop ax
push dx
mul bx
cmp dx,0
jne error
pop dx
add ax,dx
jmp fgh
jkl: print nline
pop ax
pop dx
pop bx
ret
error: print errs
mov ax,4c01h
int 21h
inint endp
mes1 db 'Ââåäèòå ÷èñëî: $'
nline db 13,10,'$'
errs db 'error?$'
end begin
==========================================
|
|