【发布时间】:2015-06-10 23:53:41
【问题描述】:
我正在尝试在 LC3 程序集中创建一个程序,该程序按以下方式计算字符串的长度:
- 所有数据都已存储在内存中的某个位置。
- 有一个变量,其中存储了字符串的第一个元素的地址。 (如果这个东西不被称为“变量”,我提前为我缺乏汇编知识道歉。)
- 输出(字符串的长度)必须存储在 R0。
我尝试过,但结果令人失望。这是我的代码:
.ORIG X3000
AND R0,R0,#0 ;R0 has the output(lenght)
LEA R1,ZERO ;R1 always has an adress of an element of the string
LOOP LDR R2,R1,#0 ;R2 has the contex of that adress
BRZ FINISH ;if R2=0,then we have found end of string
ADD R0,R0,#1 ;if not,increase the lenght by 1.
ADD R1,R1,#1 ;increase the adress by one
BRznp LOOP
FINISH
HALT
ZERO .FILL x5000 ;i chose a random rocation.I don't even know how to store a string in memory to run this program.
.END ;do i need any ASCII-decimal transformation or something similar?
实际上,我猜我的程序是一块垃圾。这是我的程序的新版本。我想 X0000 是字符串的结尾。我是 LC3 汇编的初学者。这个长度怎么算?
【问题讨论】:
-
您应该注释您的代码,尤其是如果您希望其他人提供帮助。此外,在你的模拟器中单步执行它,看看哪里出错了。不要忘记告诉我们您遇到的确切位置。
-
我刚刚上传了我的程序的新版本和一些 cmets
-
你能说得更具体些吗,结果令人失望?您的代码预期的输入/输出是什么?对于一个令人失望的特定输入,您得到了什么结果?
-
举个例子,如果我有输入“chess”,输出应该是5。如果我有“Ceasar”,输出应该是6。结果令人失望,因为我的程序没有'甚至编译..