switch 命令に誤りがありますが、その理由がわかりません。Main クラスを見てください。
try {
var result = string.Join(" ",File.ReadAllBytes(args[0]).Select(x => x.ToString("X")));
Console.WriteLine(result);
ASM asm = new ASM();
if(result != null) asm.EXEC(result); //Error here?
}
catch(Exception ex) {
Console.WriteLine(ex.Message);
}
そしてASMクラス。EXEC メソッドと switch-case 命令にエラーがあると思います:
public class ASM
{
public void EXEC(string ex)
{
if (ex == null)
Console.WriteLine("ASM opcode is null!");
string[] a = ex.Split(' ');
int i = 0;
while (i<a.Length)
{
switch (a [i])
{
case "AF": //hlt
Environment.FailFast("hlt");
break;
case "AB": //Write
i++;
string memorySegment = a[i];
i++;
int memoryValue = Convert.ToInt32(a[i]);
if(memorySegment == "F0") Memory.Write("0xC00",memoryValue);
else if (memorySegment == "F1") Memory.Write("0x100",memoryValue);
else if (memorySegment == "F2") Memory.Write("0x200",memoryValue);
else if (memorySegment == "F3") Memory.Write("0xA00",memoryValue);
else if (memorySegment == "F4") Memory.Write("0xB00",memoryValue);
break;
}
i++;
}
}
コンソールにAB F1 19 AF
Object reference not set to an instance of an object
、このエラーを回避するにはどうすればよいですか? と表示されます。コードはファイルの 16 進コードを正常に書き込みますが、ASM.EXEC メソッド (結果) の引数は null ではありませんが、メソッドの読み取りはできません。ありがとう、下手な英語でごめんなさい。