2013-10-07 61 views
0

我是新來的彙編語言,所以我對我的第一個程序有點麻煩。我應該基本上重新創建下面的代碼,顯然除了彙編語言。任何人都可以幫助我解決這些錯誤,並幫助我讓我的程序正常工作?我覺得我很接近。EASy68K彙編 - 第一個程序錯誤

原非彙編代碼:

Q = 7; 
P = 15; // also test on P = 14 and P = 6 
if (P > 12) 
    P = 8 * P + 4; // Requirement: use ASL for multiplied by 8 
else 
    P = P - Q; 
print P; 

這裏是我到目前爲止,但我得到的錯誤。我會在底部發布錯誤。

START ORG  $1000 //Program starts at loc $1000 
IF  CMP  #12,P //Is P > 12? 
     BLE  ENDIF //If P < 12, go to ENDIF 
     ASL  #3,P //Shift left 3 times (Multiply P * 8) 
     ADD  #4,P //P + 4 
ENDIF SUB  Q,P  //P - Q 

* Data section 
    ORG $2000 //Data starts at loc 2000 
P DC.W 15 //int P = 15; 
Q DC.W 7 //int Q = 7; 
    END START 

4號線:錯誤:無效的尋址模式 7號線:錯誤:無效的尋址模式

回答

1

我建議你保持M68000 Programmer's Reference Manual周圍查找使用說明書的正確途徑。

沒有#<data>,<ea>的形式。它確實有一個<ea>窗體,所以你可以做ASL P三次。或者您可以將P移入寄存器,將其向左移3位,並將結果放回P

同樣,沒有<ea>,<ea>形式的SUB。一種解決方案是將Q轉換爲D -register,並從P中減去該寄存器。