Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 小人电脑赢了';循环时,t分支位于零_Assembly_Little Man Computer - Fatal编程技术网

Assembly 小人电脑赢了';循环时,t分支位于零

Assembly 小人电脑赢了';循环时,t分支位于零,assembly,little-man-computer,Assembly,Little Man Computer,所以我在LMC中创建了一个东西,我从5数到17,并显示奇数。我已经完成了代码,但是当我尝试在零分支时,当代码达到17时,它将不起作用,并且它将继续输出超过17。我试图做到这一点的方法是在循环的每次迭代之前减去17,最终当我使用的计数变量hit的17时,17将被减去,它将在0处分支,从而停止程序。有谁能告诉我为什么这不起作用,也许是我做这件事的顺序 lda third print out sub first brz done lda thi

所以我在LMC中创建了一个东西,我从5数到17,并显示奇数。我已经完成了代码,但是当我尝试在零分支时,当代码达到17时,它将不起作用,并且它将继续输出超过17。我试图做到这一点的方法是在循环的每次迭代之前减去17,最终当我使用的计数变量hit的17时,17将被减去,它将在0处分支,从而停止程序。有谁能告诉我为什么这不起作用,也许是我做这件事的顺序

       lda third
print  out
       sub first
       brz done
       lda third
       add second
       sto third
       br  print
done   hlt

first  dat 0x17
second dat 0x02
third  dat 0x05

我不知道是什么导致了这个问题,但是当我第一次改为11时,它在17时停止了。我不知道为什么会有这种差异,但对我来说是有效的:D

只是一个小小的建议。如果您使用传达含义的变量名,则会使程序更具可读性。例如,
第一个
可以是
结束
第二个
可以是
步骤
第三个
可以是
开始
。它使它更具可读性,并且可能更容易理解您的程序为何以这种方式运行。如果试图计数到17位小数,则应使用17位小数,而不是0x17位十六进制。0x11是17位十进制的十六进制,这就是它工作的原因。我个人认为您错过了
0x
表示十六进制(而非十进制)值的事实。非常感谢您的澄清!从现在起我肯定会使用十进制值,除非我真的需要十六进制值。小心!你的教授读了这些,我认识布朗先生,哈哈。我已经知道代码是有效的,我只是不明白为什么我写这篇文章。正如迈克尔·佩奇指出的,你把十六进制(0x..)和十进制搞混了。所以
0x11=17十进制
谢谢!我的朋友明白了,也告诉了我。