如何从二进制数组件8086打印十六进制数

时间:2016-10-04 15:55:55

标签: assembly x86-16

如何从二进制数程序集8086 转换十六进制数? 我需要转换为二进制数 - 十六进制数/

1 个答案:

答案 0 :(得分:1)

我会帮你解决这个算法(我也会给你代码,但我不想让你错过编程的乐趣):你首先将二进制数作为字符串捕获(使用int 21h,啊= 0Ah),然后你将中的字符带到4个组中的(例如,使用寄存器SI作为指针,CX作为计数器),每个group是一个十六进制数字,这个数字将它存储在另一个字符串中(同样,从,对第二个字符串使用DI寄存器),例如:

10 1010 1011 0111    ◄ BINARY
2    A    B    7     ◄ HEX

记住位数从,因此每个组都需要一个程序将其从二进制转换为十六进制,这是如何为每个二进制赋值权力2的字符:

1011 
│││└─ 2^0 = 1 ─┐
││└── 2^1 = 2  │ 1+2+8 = 11 (B hex digit)
│└─── 2^2 = 4  │ Notice 4 is ignored because its bin character is zero.
└──── 2^3 = 8 ─┘

你不需要一个程序来获得2的幂,因为你只有4个字符的组,只是遍历每个字符,如果它是“1”,添加适当的值(1,2,4,8) ,如果它为零则忽略它。

请注意,最后一组可能是奇数,一旦你让它处理你处理最后一个奇数组的偶数组。