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

时间:2017-11-11 18:40:22

标签: assembly x86 nasm

所以,我的任务是从键盘读取最大 64位十进制数,并将该数字存储在两个32位寄存器中( EDX: EAX )。为了阅读,我必须使用名为 mio_readchar 的函数(它来自 mio库),该函数从键盘读取一个字符,并将其存储在 AL

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

1 个答案:

答案 0 :(得分:2)

将其分解为更小(更简单)的部分:

  • 将当前结果设置为零

  • 从键盘上获取角色,检查角色是否有效(例如' 0'到' 9'而不是疯狂的事情,如#39; A'),然后减去' 0' 0从它(这样你得到一个从0到9的数字)

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

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

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

注意:导致此循环停止的原因(输入密钥?),以及在各种错误条件下发生的情况,是您可以理解的。