2015-06-10 74 views
0

我想創建在LC3彙編程序計數字符串以下列方式長度:LC3裝配如何計算字符串長度

  1. 所有的數據都已經某處存儲在內存中。
  2. 存在一個變量,其中存儲了字符串的第一個元素的地址。 (由於缺乏組裝知識,我提前表示道歉,因爲這種情況不稱爲「變量」。)
  3. 輸出(字符串的長度)必須存儲在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? 

其實,我想,我的計劃是一塊garbage.This的是我program.I新版本假設X0000是string.I的結束是在LC3共初學者部件。我如何計算那個長度?

+0

你應該評論你的代碼,特別是如果你想讓別人幫忙。此外,單步它在你的模擬器,看看它出錯的地方。不要忘記告訴我們你卡在哪裏。 – Jester

+0

我剛剛上傳了我的程序的新版本,帶有一些意見 – user3697730

+0

您能比*更具體嗎?*結果令人失望*?什麼是您的代碼預期的輸入/輸出,以及您得到什麼結果爲特定輸入*令人失望*? – lurker

回答

1

要定義一個字符串,您可以使用.STRINGZ指令,該指令也會將終止零置於其後面。您應該使用BRNZP,因爲彙編程序顯然不喜歡BRZNP。除此之外,你的代碼工作正常。

+0

那麼,這解決了我的問題!謝謝@Jester!當然,我想感謝所有其他人對他們的幫助! – user3697730