2014-04-09 68 views
0

我已經存儲了字符串'',所以現在每個字符的ASCII值都作爲一個字節存儲在內存中,如何將每個連續的2個字節如下所示:如何從內存中讀取10個字節來添加每個連續的2個字節

0 + 1-> 1,1 + 2-> 2 ........等

「」 
30 31 32 33 34 35 36 37 38 39 
00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 

00010001 
00001111 
00001101 
00001011 
00001001 
00000111 
00000101 
00000011 
00000001 
00000000 

我的第一次嘗試是像這樣

ORG  $1000 
START:   DC.L ''   
       MOVE.L #$1000, A1 

       MOVE.B (A1)+, D0 
       MOVE.B (A1)+, D1 
       MOVE.B (A1)+, D2 
       MOVE.B (A1)+, D3 
       MOVE.B (A1)+, D4 
       MOVE.B (A1)+, D6 
       MOVE.B (A1)+, D6 
       MOVE.B (A1)+, D7 



    SIMHALT    



    END START   

回答

1

正如您所指出的那樣,這些值是以字符代碼存儲的,而不是整數。

所以要添加它們,您必須通過減去'0'轉換爲整數。假設您使用一個平臺,其中十進制數字以連續代碼編碼(如C需要)。這很常見。

下面是一個子例程,其中添加了兩個這樣的數字,如代碼a1所示,並返回d1的總和。它只會推進單個字符,所以如果您在循環中執行此操作,您將首先索引索引0和1,然後索引索引1和2,依此類推。

sum_two: 
    move.b (a1)+,d1 
    subi.b #'0',d1 
    add.b (a1),d1 
    subi.b #'0',d1 
    rts 

注:它已經BIGNUM年以來我上次寫MC68K組裝,所以我可能有一些細節了。

相關問題