assembly - 在 LMC 中打印给定数字的所有数字
问题描述
我需要在 LMC 中打印给定数字的所有数字。我尝试了这个代码,它给了我最后一个数字,但我不知道如何继续使用其他数字。
INP
L0 STA R0
SUB R1
BRP L0
LDA R0
OUT
HLT
R0 DAT 000
R1 DAT 010
解决方案
您拥有的代码将输出最低有效位。要生成其他两位数字(知道 LMC 仅限于 3 位数字),首先重复减去 100 并计算您可以执行多少次:这将是输出的第一个数字。然后反复减10,数……最后输出余数。
对于重复减法,您需要一个循环。您可以考虑使用自我修改代码,以便重用相同的循环来减去 100,然后再减去 10。但是您也可以为这两种情况分别编写一个单独的循环:
#input:321
INP
STA input
LDA zero ; prepare for finding first digit
BRA enter1
loop1 STA input
LDA digit ; increment digit
ADD one
enter1 STA digit
LDA input
SUB hundred ; output number of 100s
BRP loop1
LDA digit
OUT
LDA zero ; prepare for finding second digit
BRA enter2
loop2 STA input
LDA digit ; increment digit
ADD one
enter2 STA digit
LDA input
SUB ten
BRP loop2
LDA digit ; output number of 10s
OUT
LDA input ; output remainder
OUT
zero HLT
one DAT 001
ten DAT 010
hundred DAT 100
input DAT
digit DAT
<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.80/lmc.js"></script>
推荐阅读
- vim - 如何使变量对于不同的选项卡具有不同的值
- html - Responsive NavBar Dropdown for Aspnet Only CSS and Script
- bash - 使用 while 循环迭代参数列表会进入无限循环
- python - 创建嵌套字典一层
- apache-spark - “withColumn”的 Spark 日期列初始化程序?
- c - 从文件中读取换行符分隔的项目
- css - 覆盖 ng-Bootstrap 样式
- asp.net-mvc-4 - 静态文件的 IIS 缓存不反映磁盘上文件的修改日期
- python - PostgreSQL 不使用 psycopg2 在 AWS Lambda 上插入 Python
- python - py2exe:DLL加载失败:找不到指定的模块