使用流打开* .COM文件

时间:2013-05-22 04:11:53

标签: c# io

刚发现自己需要在C#应用程序中打开* .COM文件。 * .COM文件由fasm生成,其组装代码如下:

  

org 100h

     

jmp start

     

msg:db“Hi”,0Dh,0Ah,24h

     

开始:   mov dx,msg

    mov     ah, 09h 
    int     21h         
    mov     ah, 0 
    int     16h
     

保留

当使用像Sublime这样的文本处理器打开时,它表示代码如下所示:

  

eb05 4869 0d0a 24ba 0201 b409 cd21 b400

     

cd16 c3

我尝试在应用程序中使用类似这样的代码打开此文件

string COMtext = File.ReadAllText(filename,encoding);

byte[] info = new UTF8Encoding(true).GetBytes(COMtext); 

使用MessageBox.Show(info[i].ToString("x2"));核对时 它说,第一个字节是EF,第二个是BF(将EB分成两半),然后在第三个位置(BD)添加一个额外的字节。在此之后 - 一切都按计划解析。 4:05,5:48等 我做错了什么,有没有办法解决它而没有解决方法(在这个阶段我不清楚哪一个,因为我不知道是否会有相同的行为或者不这样做)

1 个答案:

答案 0 :(得分:3)

您需要将文件打开为二进制流,而不是文本流。作为文本,它被编码为Unicode代理。

File.OpenRead与字节数组一起使用。您也可以使用File.ReadAllBytes但我不建议使用它,因为大文件会导致OutOfMemoryException