0
我有一个程序,它接收汇编代码的文本文件并解析它,并将每行更改为二进制代码。每行是一个单独的16位二进制代码(值存储为UInt 16),然后将其放入数组中。代码是(在整数表示):现在比较某些不能产生预期结果的位
32768 //
65285 //
64514 //
65280 //
64512 //
65281 //
64513 //
36352 //
65025 //
63488 //
58899 //
38400 //
65024 //
64257 //
64512 //
65026 //
64258 //
61952 //
59911 //
42496 //
65026
每个代码是如何分解是7位(指令),1个比特(立即),8位(值)。我现在试图解析二进制代码的这三个单独的部分。我写了下面这样做:
public void doInstruction()
{
foreach(var op in IPE.opCodes)
{
Console.WriteLine("this is the original op code: " + op);
var instr = (op >> 0) & 127;
Console.WriteLine(instr + " THIS IS THE INSTRUCTION BINARY");
}
}
现在例如,第一个代码(32768 =千兆)。我使用上面的代码将32768的二进制代码与127的二进制代码进行比较,在我的脑海中应该产生1000000(64应该出现在输出中)。但是在我运行我的代码之后。我的输出是:
this is the original op code: 32768
0 THIS IS THE INSTRUCTION BINARY
当输出应该是:
this is the original op code: 32768
64 THIS IS THE INSTRUCTION BINARY
我缺少/做错了什么?任何帮助表示赞赏。
非常感谢,我以相反的方式去做,显然,我明白它现在的工作原理。代码也运行它现在应该如何,再次感谢! – VakarianWrex 2014-09-20 04:42:28