因此,我的任务是从键盘读取最大 64 bit decimal number ,并将该数字存储在 two 32 bit registers ( EDX:EAX )中 . 为了阅读,我必须使用一个名为 mio_readchar 的函数(它来自 mio library ),该函数从键盘读取一个字符,并将其存储在 AL 中 .
我不知道这是否是一件容易的事,但我无法解决 . 如果你们能帮助我解决这个有趣的问题,我将不胜感激 . 谢谢大家! :d
把它分成更小(更简单)的部分:
将当前结果设置为零
从键盘获取字符,检查字符是否有效(例如'0'到'9'而不是像'A'那样疯狂),然后从中减去'0'(这样你就得到一个从0到9的数字)
检查是否可以将当前结果乘以10而不会导致溢出;然后将当前结果乘以10
检查是否可以将新数字添加到当前结果而不会导致溢出;然后将新数字添加到当前结果
跳回第二步(获取下一个字符)
注意:导致此循环停止的原因(输入键?),以及在各种错误条件下发生的情况,您需要弄清楚 .
1 回答
把它分成更小(更简单)的部分:
将当前结果设置为零
从键盘获取字符,检查字符是否有效(例如'0'到'9'而不是像'A'那样疯狂),然后从中减去'0'(这样你就得到一个从0到9的数字)
检查是否可以将当前结果乘以10而不会导致溢出;然后将当前结果乘以10
检查是否可以将新数字添加到当前结果而不会导致溢出;然后将新数字添加到当前结果
跳回第二步(获取下一个字符)
注意:导致此循环停止的原因(输入键?),以及在各种错误条件下发生的情况,您需要弄清楚 .