Assembly 如何从二进制数汇编8086打印十六进制数

Assembly 如何从二进制数汇编8086打印十六进制数,assembly,x86-16,Assembly,X86 16,如何将十六进制数从二进制数转换为汇编8086? 我需要将二进制数转换为十六进制数/我将帮助您使用算法(我也会给您代码,但我不想让您错过编程的乐趣):首先将二进制数捕获为字符串(使用int 21h,ah=0Ah),然后将右到左的字符分成4组(例如,使用寄存器SI作为指针,CX作为计数器),每组为一个十六进制数字,该数字存储在另一个字符串中(同样,从右到左,使用DI寄存器作为第二个字符串),例如: 10 1010 1011 0111 ◄ BINARY 2 A B 7

如何将十六进制数从二进制数转换为汇编8086?
我需要将二进制数转换为十六进制数/

我将帮助您使用算法(我也会给您代码,但我不想让您错过编程的乐趣):首先将二进制数捕获为字符串(使用int 21h,ah=0Ah),然后将的字符分成4组(例如,使用寄存器SI作为指针,CX作为计数器),每组为一个十六进制数字,该数字存储在另一个字符串中(同样,从,使用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),如果为零,则忽略它


请注意,最后一组可能是奇数,一旦你让它对偶数组起作用,你就可以处理最后一个奇数组。

@RomDitkovsky,尝试实现这个答案,如果你遇到问题,回来,用你的代码更新你的问题,我们将帮助你解决。相关: