首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将二进制/十六进制转换为拆分八进制的汇编过程

将二进制/十六进制转换为拆分八进制的汇编过程
EN

Stack Overflow用户
提问于 2016-04-14 21:33:55
回答 1查看 1.2K关注 0票数 0

这是个任务,我不知道从哪里开始。

任务:

一个字节可以用三个八进制数字表示。位7和6确定左八进制数字(不超过3);位5、4和3是中间位;位2、1和0是右数字。

例如,11010110 b是110101b或32610b。通过将2-3-3系统分别应用于高阶字节和低阶字节,一个单词的值以拆分八进制表示。

编写一个procesure splitOctal,它将一个单词转换为一个字符串,该字符串表示以拆分八进制表示的数字的值;由一个空格分隔的两组三组。

遵循cdecl协议。该过程将有两个参数: 1)单词值(作为双word的低阶字传递) 2) 7字节长的目标字符串的地址。

修改:在堆栈上只使用双字,而不是将值转换为一个单词。因此,将要转换为DOUBLEword的值推到堆栈上。

,我不知道从哪里开始通过移动位和旋转位来完成这个任务。也许给我点资料读,或者给我点开场白?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-15 03:03:20

简单的方法:

转换十六进制-> 8位整数,减去ASCII '0''A',然后从第一个数字左移4位值,从第二位数左移4位值。

然后通过移动/掩蔽将该8位整数转换为八进制,以提取您想要的三组位,并将'0'添加到每个位中。

更复杂的方法:不要在任何一点上组合成一个单一的8位整数。有许多方法可以从第一个十六进制数字中获得第四个比特,从第二个十六进制数字中得到低的两个位。你最好的选择可能还包括一个OR。

如果你实际上瞄准的是8086,而不仅仅是普通的x86,那么逐个移动和按CL移动是你唯一可用的移动。因此,要将其转换为4,您可能必须使用mov cl, 4 / shl al, cl,而不仅仅是shl al, 4

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36634408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档