【发布时间】:2014-01-04 02:54:50
【问题描述】:
编写程序将十进制数转换为十六进制。 要将十进制数转换为十六进制,我们找到 16 的最高幂,该数字小于等于。 我们这样做是从 1 开始并将数字 N 与 1 进行比较
If 1 < N we try 16
if 16 < N we try 256
直到我们找到最高的力量。
I would keep the powers in an array like 1,10h, 100h, 1000h, up to 100000000h
然后我们通过连续除法转换
Ex convert 834 to hex
834/256 = 3 + r 78
78/16 = 4 + r 14
14/1 = E + r0
十六进制数是 34Eh
如果第一个数字是字母,您可以在没有前导零的情况下回答,但 0AB3h 比 AB3h 好。但是,您必须将 h 作为答案的最后一部分
mov edx,offset msg
call writestring
call readint
mov tempt1,eax
div eax
.if(tempt<1)
mov eax,16
.elseif()
.else
.endif
ret
【问题讨论】:
-
任何人都可以建议如何做到这一点。我只知道如何除数,但我怎样才能得到余数?
-
欢迎来到 StackOverflow。这不是一个为我做家庭作业的网站。请给我们一些你至少尝试过的证据。
-
我已经添加了我的起始代码,但我迷路了。不知道下一步该做什么。
-
无需使用
div。x SHR 4是x / 16和x AND 15是x % 16。