首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与EAX寄存器除以10的问题

与EAX寄存器除以10的问题
EN

Stack Overflow用户
提问于 2015-02-17 20:50:01
回答 1查看 184关注 0票数 1

我正在做一个简单的程序,我得到一个数字基和基数的用户输入,然后处理它输出基-2,基-8,基-10和基-16。例如,我将输入一个5的数字基和一个1234的数字。在处理输出基-10时,我提出的问题涉及到eax寄存器。所有其他基地(基地-2,8和16)都正常工作。为了给出一个具体问题的例子,我调用DumpRegs输出每个经过的寄存器。

因此,在上面给出的示例中,base-5和一些1234的EAX寄存器读取。

代码语言:javascript
复制
EAX=000000C2
EAX=00000013
EAX=00006668        // This is obviously wrong because if 13h/Ah the answer 
                    // would be 9, and the EAX register would equal 00000001

这方面的代码很简单:

代码语言:javascript
复制
xor ebx, ebx
mov ebx, 10
mov esi, 0
Output:     
    div ebx
    mov finalVal[esi], dl
    inc esi
    cmp al, 0
    je EndOut
    jmp Output

在本节之后,我将该值转换为ASCII值和WriteChar,但这是问题所在的部分。再一次,转换为基-2,基-8和基-16是完美的。它总是与基础-10,这是出现的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-17 21:16:11

DIV EBX不仅将EAX除以EBX,还将EDX:EBX中的64位数除以。在接收DL的提醒后,您的代码应该将EDX设置为零。

此外,您的寄存器翻车器需要修复,因为它没有输出EAX的全部内容(应该是40000013h / Ah,即66666668h ),或者您使用的是16位分隔指令(DIV BX),而不是32位分隔指令,后者不会触及EAX的上半部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28570856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档