【发布时间】:2014-11-15 15:52:40
【问题描述】:
RAX 指向以感叹号结尾的一串数字(例如“1234!”)。我一直在尝试将这些数字转换为实际数字,但它正在做同样非常奇怪的事情......这是代码:
CHARINT: ; convert ASCII encoded numbers to an actual number
XOR RCX,RCX ; clear RCX for use - running total
.LOOP: ; set loopback point
CMP BYTE [RAX],33 ; if we're on our terminating character, end
JE .DONE
PUSH RAX ; multiply our previous number by ten to make room for the next digit
MOV RAX,RCX
MOV RCX,10
MUL RCX
MOV RCX,RAX
POP RAX
SUB BYTE [RAX],0x30 ; convert from ASCII
ADD RCX,[RAX] ; add our most recent digit
INC RAX ; next digit
JMP .LOOP
.DONE:
MOV RAX,RCX
RET
由于某种原因,当我要求它在每次迭代期间打印 RAX 的值时,数字遵循一个迷人的序列,Wolfram Alpha has quite a bit to say about...
无论如何,我知道我可能遗漏了一些非常简单的东西,如果有人向我指出,我将不胜感激。谢谢!
-凯尔
【问题讨论】: