LC3汇编语言程序

时间:2014-03-27 20:03:58

标签: assembly lc3

如何将用户的任何字符输入转换为相应的十进制值?我刚开始就遇到了麻烦。

该计划必须实现以下目标:

  1. 程序接受键盘中的字符。

  2. 如果字符是数字('0'到'9'): a)将字符转换为其对应的十进制值。换句话说,'0'变为零,'1'变为1,......'9'变为9.让我们称之为值R(对于“运行长度”)。 b)等待另一个角色(使用GETC)。 c)将该角色的R副本打印到控制台。 ) d)返回步骤1.

  3. 否则,如果字符为Enter / Return(ASCII#10):将换行符(ASCII#10)打印到控制台,然后返回步骤1.

  4. 否则,如果角色是其他任何内容,则暂停该程序。

1 个答案:

答案 0 :(得分:0)

您将十进制数字转换为数字减去' 0' (= 0x30)来自它。 对于十六进制数字(' A'到' F'): 如果字符大于' @',则从中减去0x37(' A' - > 0x0a)。 对于十六进制数字(' a'到' f'): 如果该值仍然大于15,则从中减去0x20 或者您可以使用表格进行映射。 256字节不是bery大表。

  • 您将结果(变量,寄存器,...)设置为零
  • 您在循环中逐字逐句阅读
  • 您将字符转换为新数字(一位数)
  • 如果它是无效的十六进制数字字符,请返回变量 - 您已完成
  • else variable = variable * 16 + new number
  • 乘以16可以通过左移4位来完成