1.实现输入十进制,输出十六进制

本文介绍了一个使用汇编语言将十进制数转换为十六进制数的示例程序。程序通过递归方式实现了数字的乘法运算,并通过位移指令完成了十六进制数的输出。此外,还提供了两种不同的输出十六进制数的方法。

代码如下,我也是刚开始接触汇编。

CODE SEGMENT
 ASSUME CS:CODE
 ORG 100H
START :
 ;-把四位十进制数读进
 xor ax,ax
 xor bx,bx
 mov CX,8  ;!CX和输入字符个数关系为二倍
AA: mov ah,1
 int 21h
 sub al,30h ;字符向ASCII转化
 ;此段为实现将BX乘10
 sal bx,1
 mov dx,bx
 sal bx,1
 sal bx,1
 add bx,dx
 ;实现BX=(bx*10+ax)的递归调用
 and ax,00ffh
 add bx,ax
 dec CX
 loop AA
 
pp proc
 mov cl,4
 ;--输出最高位的六进制数
    mov al,bh
 sar al,cl
 call pp1
 ;--输出次高位的六进制数
 mov al,bh
 call pp1
 ;--输出次低位的六进制数
 mov al,bl
 sar al,cl
 ;--输出最低位的六进制数
 call pp1
 mov al,bl
 call pp1
 RET
pp endp
 ;----子过程输入一个十六进制数
pp1 proc
 and al,0fh
 cmp al,10
 jb xx
 add al,7
xx: add al,30h
 mov dl,al
 MOV AH,2
 int 21h
 RET
pp1 endp
 ;输出时另解,不用子程序
 ;---输出四位六进制数
 mov al,bh
 mov cl,4
 shr al,cl
 and al,0fh
 cmp al,10
 jb zz
 add al,7h
zz: add al,30h
 mov dl,al
 mov ah,2
 int 21h
 ;
 mov al,bh
 and al,0fh
 cmp al,10
 jb xz
 add al,7
xz: add al,30h
 mov dl,al
 mov ah,2
 int 21h
 ;--
 mov al,bl
 mov cl,4
 shr al,cl
 and al,0fh
 cmp al,10
 jb xy
 add al,7H
xy: ADD AL,30H
 MOV DL,AL
 MOV AH,2
 INT 21H
 
 ;------
 
 MOV AL,BL
 AND AL,0FH
 CMP AL,10
 JB XX
 add al,7H
XX: add al,30h
 mov dl,al
 mov ah,2
 int  21h
 ;--系统退出
 mov ah,4ch
 int 21h
CODE ENDS
END START 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值