3
如何在ARM程序集中打印出2D陣列? 我試圖把每一行,然後把它變成一個空終止的字符串,但它只打印出第一個數字。我如何移動到下一個號碼?在ARM中打印2D陣列
我被告知:要打印數組,最好編寫一個子程序,循環遍歷數組,一次打印一個元素。 printf只接受一個參數,而在彙編語言中,數組只是一個數字的加載,printf將只打印第一個參數。或者,您可以編寫一個子例程,使該板成爲以空字符結尾的字符串。無論哪種情況,子程序都可以打印紙板並很好地格式化。
但我只知道如何做這種方式:
AREA Countdown, CODE, READONLY
IMPORT main
IMPORT getkey
IMPORT sendchar
IMPORT printf
EXPORT start
start
LDR R3, = teststr
LDR R4, = array
wh1 LDRB R0, [R4]
CMP R0, #0
BEQ stop
ADD R0, R0, #0X30
STRB R0, [R3]
ADD R3, R3, #1
ADD R4, R4, #1
B wh1
stop B stop
AREA Strings, DATA, READWRITE
teststr DCB "",0
array DCD 6, 3, 8, 2, 5, 2, 9, 1
DCD 3, 7, 2, 8, 5, 7, 2, 6
DCD 2, 4, 7, 4, 2, 6, 7, 4
DCD 1, 9, 3, 2, 9, 5, 6, 8
DCD 7, 5, 3, 7, 5, 8, 2, 1
END
感謝輸入有一些命令,我不明白。像BMI,ORRS,MOVEQ,STREQB。他們代表什麼? – 2012-02-29 22:48:59
如何將此數組顯示到控制檯? – 2012-02-29 22:56:36
你正在引用printf作爲extern ...稱之爲:)。 R0 =第一個參數,R1 =秒等。 – BitBank 2012-02-29 23:00:52