首页 文章

在两个32位寄存器中存储64位十进制数(ASSEMBLY - NASM)

提问于
浏览
-2

因此,我的任务是从键盘读取最大 64 bit decimal number ,并将该数字存储在 two 32 bit registersEDX:EAX )中 . 为了阅读,我必须使用一个名为 mio_readchar 的函数(它来自 mio library ),该函数从键盘读取一个字符,并将其存储在 AL 中 .

我不知道这是否是一件容易的事,但我无法解决 . 如果你们能帮助我解决这个有趣的问题,我将不胜感激 . 谢谢大家! :d

1 回答

  • 2

    把它分成更小(更简单)的部分:

    • 将当前结果设置为零

    • 从键盘获取字符,检查字符是否有效(例如'0'到'9'而不是像'A'那样疯狂),然后从中减去'0'(这样你就得到一个从0到9的数字)

    • 检查是否可以将当前结果乘以10而不会导致溢出;然后将当前结果乘以10

    • 检查是否可以将新数字添加到当前结果而不会导致溢出;然后将新数字添加到当前结果

    • 跳回第二步(获取下一个字符)

    注意:导致此循环停止的原因(输入键?),以及在各种错误条件下发生的情况,您需要弄清楚 .

相关问题