十六—十进制转换

程序设计的要求:通过键盘给一个二位的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










 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值