Я пытаюсь создать программу на сборке 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. Как я могу посчитать эту длину?