2012-03-11 21 views
2

我正在閱讀包含彙編語言程序的文本文件(如MOV A B; LDA 1600等)。我想將這個助記碼轉換爲目標代碼(不在同一個文件中,但直接將它們打印到控制檯中)。爲8085開發基於java的彙編程序

對於MOV我通過01通過111通過000通過001通過010 但是代替它,A,B,C,d應該怎麼取代MVI R,32操作碼是00rrr110 0011 0010 請提出的一般算法..

+3

你可以看看到用Java編寫的KAsm Z80彙編是怎麼做的。 Z80是8085使用的8080指令集的擴展。 http://trimah.com/eng/index.php/tools-for-developers/1-kasm – 2012-03-11 09:43:26

回答

1

首先在操作碼中將rrr替換爲000,結果爲00000110=0x06。然後從查找表(A = 111,B = 000,C = 001等等)中取出與您的寄存器相對應的值,並使用<<運算符將其左移3個位置。最後,OR兩個值一起,像這樣:

聲明此使用無處不在,你需要rrr:A是在索引0,B是在索引1,則有C,d,E,H,和L

static int registerLookup[] = {0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05} 

MVI,使用此代碼:

int baseOpcode = 0x06; // MVI 
int opcode = baseOpcode | registerLookup[regIndex]<<3; 
+0

看起來好像我得到它..但是,如果我發現任何進一步的問題,我會張貼在這裏.. thnx a很多的幫助.. – 2012-03-13 14:54:30

+0

我明白你想說什麼.. Bt我覺得很難在我的算法中實現......可能是因爲我沒有在我的程序中使用指令長度.. 。plz幫助!!!! – 2012-03-13 15:55:29