十进制转换为二进制

sleilei 2003-11-30 07:23:20
初学,求助,请高手给出详细代码和注释
题目:把整数12转换为二进制显示出来
...全文
132 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmmaaa 2003-11-30
  • 打赏
  • 举报
回复
将十进制数转换为二进制数的算法基础是下面公式:

N = (Dn-1*10n-1+Dn-2*10n-2+……+D1*101+D0*100

= ((…((Dn-1*10+Dn-2)*10+……+D1)*10+D0)*10

可以用循环程序实现此公式,*10 可用移位及加法指令完成。

举例:将存放在字符串 STR 中的五位十进制数(<65536)的 ASCII 码转换成二进制数放到 GR0 中 。

START
LEA GR0,0 ;转换结果寄存器清 0
LEA GR2,5 ;循环计数器
LEA GR1,0 ;地址指针(偏移量)
L1 SLL GR0,1 ;转换结果*10,先乘以 2
ST GR0,REG ;暂存 2*X
SLL GR0,2 ;2*X*4=8*X
ADD GR0,REG ;8*X + 2*X
LD GR3,STR,GR1 ;取一位 ASCII 码
AND GR3,C000F ;将 ASCII 码变成 BCD 码
ST GR3,REG ;结果暂存
ADD GR0,REG ;将新的一位 BCD 码加到转换结果中
LEA GR1,1,GR1 ;地址指针加 1
LEA GR2,-1,GR2 ;循环计数器减 1
JNZ L1 ;未结束,继续下一位
RET
C000F DC #000F ;十六进制常数,屏蔽高 12 位二进制数
STR DC '35475'
REG DS 1 ;暂存单元
END

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧