为8085开发基于java的汇编程序

时间:2012-03-11 09:39:57

标签: java

我正在阅读包含汇编语言程序的文本文件(如MOV A B; LDA 1600等)。我想将这个助记符代码转换为目标代码(不是在同一个文件中,而是直接将它们打印到控制台中)。

对于MOV,我将其替换为01,A乘以111,B乘以000,C乘以001,D乘以010。 但是我应该如何替换MVI R,32操作码是00rrr110 0011 0010 请建议一般算法..

1 个答案:

答案 0 :(得分: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;