如何从二进制数程序集8086 转换十六进制数? 我需要转换为二进制数 - 十六进制数/
答案 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) ,如果它为零则忽略它。
请注意,最后一组可能是奇数,一旦你让它处理你处理最后一个奇数组的偶数组。