我想在LC3中製作2D陣列。到目前爲止,我正在考慮使用.BLKW初始化一塊內存,然後將其加載到每個條目的另一個數組中。這似乎並不會讓我走上正軌。有什麼建議麼?如何在LC3中製作2D陣列
回答
你完全可以用.BLKW和.STRINGZ做到這一點,儘管後者顯然有點不同尋常。
更大的常見問題是圍繞着如何決定如何「獲取」和「放入」數據到特定的內存區域。有幾種方法可以做到這一點(沒有一個正確的答案)。
你最初的想法很酷且有效,但在我看來似乎更加複雜,特別是在LC3中。
更直接的「行主」或「列主要」存儲形式 - 連續存儲位置代表一行(主行)中的下一個條目,或者列(列主要)中的下一個條目)是做到這一點的標準方式。
基本上你想要分配該區域的內存,然後編寫兩個函數:一個將物品放在位置(r,c),並從位置(r,c)獲取物品。
爲此,您只需將一個足夠小的項目放入LC3的16位內存位置即可。這可能是一個數字,或一個字符。 (大於16位是可行的,但肯定會增加程序的複雜性)。
如果你想要一個完全粗化的樣本,你可以在這裏找到:http://lc3tutor.org/#array2Dcolordersmp(或者直接去lc3tutor.org並查看二維數組樣本)。
如果你想自己學習和嘗試,你可以閱讀那裏的描述,並忽略示例代碼(最好如果你做家庭作業,你想確保你學習它)。否則,那裏的代碼應該在你找到的基於瀏覽器的lc3模擬器中運行正常。
祝你好運!
傑夫
PS這裏的同步碼前該代碼,如果你只想從這項工作......希望這個例子可以幫助錨的完整代碼樣本中所採取的山坳主要做法:
.ORIG x3000
BR MAIN;跳過存儲下面的主要部分的開始
.STRINGZ「ABCDEFGHIJKLMNOPQRSTUVWZYZ」;有點棘手 - 我們在我們的二維數組中存儲一系列字母作爲參考。
;上述字符串的地址在x3001,
;您將看到的是與下面的2D_ARRAY標籤值相同。
;這基本上是我們的2D_ARRAY,從x3001開始並佔用26個位置,
;加1(用於字符串上的空終止符)。
;我們將假設二維數組有13行和2列。
;每行兩個字母和每列13個字母。 26個字母。
;因此,我們的NUM_ROW標籤將爲13,我們的NUM_COL標籤將爲2.(請參閱下面的標籤)
;我們將把這個數組作爲列主存儲數組。
;根據我們上面的字符串,這意味着第一個
的單元;列(按照我們的約定,列#0)是:A-M。
;第二列(列#1)的單元格是:N-Z。
;如果我們以行主要形式存儲陣列,則第一行的單元格,第一行的單元格,將是A,B,並且第二行將是C,D。等等
;像這樣:
;
; R \ C | 0 | 1
; ------------
; 0 | A | N
; 1 | B | O
; 2 | C | P
; 3 | D | Q
; 4 | E | R
; 5 | F | S
; 6 | G | T
; 7 | H | U
; 8 |我| V
; 9 | J | W
; 10 | K | X
; 11 | L | Y
; 12 | M | Z
;使得2D_ARRAY [ROW = 8,COL = 1]將是字母「V」
- 1. 在UnityScript中製作2D數組通過製作數組陣列
- 2. 如何在CUDA中使用2D陣列?
- 3. 複製1D陣列2D陣列
- 4. 在2D陣列
- 5. 在Java中的2D陣列操作
- 6. iOS使用NSMutable陣列製作2D陣列
- 7. 複製一個2D陣列到另一個2D陣列
- 8. 如何在陣列中製作卡片?
- 9. 如何在BASH中製作3D陣列?
- 10. 如何從2D陣列構造的2D陣列
- 11. 如何製作陣列陣列?
- 12. 在Numpy中製作3D陣列的2D面具
- 13. MPI_Scatter在其他2D陣列中的2D陣列
- 14. C#在2D陣列中找到2D小陣列
- 15. 在2D陣列中尋路
- 16. 在中c p 2D陣列
- 17. Java 2d陣列在列
- 18. 3d陣列到2d陣列
- 19. 2D陣列列陣混淆
- 20. 複製2D陣列從鋸齒狀2D陣列到另一個鋸齒狀2D陣列
- 21. 如何陣列2D轉換成陣列集合中的Flex
- 22. 從3D陣列中減去2D陣列
- 23. 2D陣列
- 24. Android 2D陣列
- 25. MPI_Gather 2D陣列
- 26. Groovy 2d陣列
- 27. C#2D陣列
- 28. 2D陣列
- 29. 在更改之前製作副本2D陣列
- 30. 在2D陣列中移動某一列