在两个 32 位寄存器中存储一个 64 位十进制(汇编 - NASM)



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

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

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

  • 将当前结果设置为零

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

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

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

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

注意:是什么原因导致此循环停止(回车键?(,以及在各种错误条件下会发生什么,您需要弄清楚。

相关内容

最新更新