汇编学习-一位十六进制数转换为十进制数

程序运行效果如下:
在这里插入图片描述
如题,此程序只能实现一位十六进制数的转换
具体代码如下

DATAS SEGMENT

BUF DB 5 DUP(?)

MSG1 DB 'please input a hex
number',13,10,'$'     ;设定提示

MSG2 DB 'the dec
number:',13,10,'$'

CTLF DB 13,10,'$'

DATAS ENDS

 

CODES SEGMENT

 ASSUME CS:CODES,DS:DATAS

START:

 MOV AX,DATAS

 MOV DS,AX

 LEA DX,MSG1           ;输出第一条提示

 MOV AH,9

 INT 21H

 

 MOV AH,1              ;输入一个十六进制数

 INT 21H

 

 SUB AL,30H            ;得到真实数值

 CMP AL,0

 JL TODEC          ;判断是否小于0,如果小于0,则跳转到TODEC

 

 CMP AL,10          

 JL NUMBER        ;判断是否在0-9范围内,如果是,则跳转到NUMBER

 

 SUB AL,27H

 CMP AL,0AH

 JL FINISH        ;判断是否小于a,如果是,则跳转到FINISH

 CMP AL,10H

 JGE FINISH        ;判断是否大于等于16,如果是,则跳转到FINISH

 JMP TODEC      
;跳转到TODEC

 

NUMBER:

 LEA DX,CTLF

 MOV AH,9

 INT 21H             ;换行

 LEA DX,MSG2

 MOV AH,9

 INT 21H           ;输出第二条提示

 MOV DL,AL           ;显示数字

 ADD DL,30H

 MOV AH,2

 INT 21H

 JMP FINISH        ;跳转到FINISH

 

TODEC: 

 MOV AH,0

 MOV BL,10

 DIV BL            ;除以10

 MOV [BUF],AH   
    ;将余数存入DS:[BUF]

 MOV [BUF+1],AL      ;将商存入DS:[BUF+1]

 

 LEA DX,CTLF

 MOV AH,9

 INT 21H       
;换行

 LEA DX,MSG2              ;输出第二条提示

 MOV AH,9

 INT 21H

 

OUTPUT:

 MOV DL,[BUF+1]             ;输出商

 ADD DL,30H

 MOV AH,2

 INT 21H

 

 MOV DL,[BUF]           ;输出余数

 ADD DL,30H

 MOV AH,2

 INT 21H

 

FINISH:

 MOV AH,4CH            ;程序结束,返回DOS

 INT 21H

CODES ENDS

 END START  



初学汇编,程序显得臃肿繁琐,如有错误,欢迎指正讨论。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值