汇编语言进制转换程序代码

该程序能自动判断输入数字的进制,并将其转换为2、10、16进制。通过分析输入的最后一个字符来确定进制,如'B'表示二进制,'D'或数字表示十进制,'H'表示十六进制。利用位移操作进行乘除运算,处理余数以获取转换结果。此外,还包括输入字符正确性和范围检查的简单处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序完成功能:输入任意进制数字,自动判断进制并输出2,10,16进制(范围0-65535)

实现:

首先判断最后一个字符,如果为B是二进制,为D或数字是十进制,为H是十六进制 

输入1010B,就(((1*2)+0)*2+1)*2+0这样

输入123,就(1*10+2)*10+3

输入123H,就(1*16+2)*16+3

输出就除以2/10/16,压栈余数的ASCII码,判断是否为0,不为0继续除。再出栈输出。

其中,乘2用左移位等效,除以2用右移位等效,余数是CF。

乘16用左移4位等效,除以16用右移4等效,余数是右移前的数AND 000FH

乘10就只能乘了。

另外就是做些字符正确性判断的错误处理。输入越界判断我懒得做了。

其实完全可以做成输入N进制和输出N进制的函数,调用传参2,10,16。实现功能。虽然速度没移位快,因为没几个数,所以无所谓。算了就这样吧。

;程序完成功能:输入任意进制数字,自动判断进制并输出2,10,16进制(数字范围0-65535)
;如输入2H或2D或2或10B,输出 10B,2,2D
;Q/q退出
STACK SEGMENT
    DB 255 DUP(?)
STACK ENDS
DATA SEGMENT
    HELLO DB 'Input a number as 2H,2D,2,10B: $'
    KEYBUF1 DB 20H
            DB ?
    KEYBUF2 DB 20H DUP(?)
    THENUM DW ?
    INPUTERROR DB '
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值