程序设计的要求:通过键盘给一个二位的16进制数,通过程序把它转换成10进制数,并按0.00—5.00显示出来。
DATAS SEGMENT
date db 10 dup(0)
input db 'input:$'
output db 'output:$'
num1 db 10
num2 db ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
lea si,date
mov cl,4
; mov bx,0
inp:
mov ah,09
lea dx,input
int 21h
get:
mov ah,1
int 21h
cmp al,0dh
jz sto
cmp al,30h
jb get
cmp al,39h
jbe num
cmp al,'F'
jbe big
cmp al,'f'
jbe small
num:
and al,0fh
;mov ah,0
;sub al,30
jmp next
big:
;mov ah,0
sub al,7
and al,0fh
jmp next
small:
;mov ah,0
sub al,7
and al,0fh
next:
shl bx,cl
add bl,al
jmp get
sto:
lea dx,output
mov ah,09
int 21h
mov dx,0
mov ax,bx
mov bx,51
mov cx,0
cal:
call chu
cmp cx,3
jbe cal
jmp xx
;cal:
;call buf
;cmp ax,0
;jnz cal
;
;mov ah,2
;int 21h
;mov ax,0
;oo:
;dec si
;mov ah,02
;mov dl,[si]
;int 21h
;mov dh,0
;mul num1
;add ax,dx
;cmp si,0
;jnz oo
xx:
MOV AH,4CH
INT 21H
chu proc
div bx
mov num2,dl
;add ax,30h
mov ah,02
mov dl,al
add dl,30h
int 21h
cmp cx,0
je a1
jmp a2
a1:
mov ah,02
mov dl,'.'
int 21h
mov dx,0
add cx,1
a2:
mov al,num2
mul num1
mov dx,0
add cx,1
ret
chu endp
;buf proc
;div bx
;add dl,30h
;mov [si],dl
;mov dl,0
;inc si
;ret
;buf endp
CODES ENDS
END START