C++输出16进制数和整行读取文件

蛋疼的计组实验,8086汇编语言,找出8086/8088指令系统所有指令的操作码的编码,没学会,就去搞了点副业,复习了下C++文件操作。

实验要求生成一个in.txt文件,然后用debugout.txt命令将指令码输出到out.txt中。
in.txt内容示例如下,要输入512行,手动的话直接累死掉了,所以编程了。
e 100 00
u 100 101
e 100 01
u 100 101
e 100 02
u 100 101
e 100 03
u 100 101
e 100 04
u 100 101

用c++生成in.txt

#include
#include
using namespace std;

int main()
{
	ofstream out;
	out.open("in.txt");
	int a,b;
	for(a=0;a<16;a++)
		for(b=0;b<16;b++)
		{
			out<<"e 100 "<

debugout.txt后,生成的out.txt文件示例如下:

-e 100 00

-u 100 101

0B3E:0100 0000 ADD [BX+SI],AL
-e 100 01

-u 100 101

0B3E:0100 0100 ADD [BX+SI],AX
-e 100 02

只想要指令部分,所以又得动用c++了:

#include
#include
#include
using namespace std;
int main()
{
	ifstream din;
	ofstream dout;
	din.open("out.txt");
	dout.open("out1.txt");
	string str;
	while(getline(din,str))  				//整行读取字符串
	{
		if(str[0]=='0'&&str[1]=='B'&&str[8]=='0')
			dout<

把需要的部分复制到新文件中,如下:

0B3E:0100 0000 ADD [BX+SI],AL
0B3E:0100 0100 ADD [BX+SI],AX
0B3E:0100 0200 ADD AL,[BX+SI]
0B3E:0100 0300 ADD AX,[BX+SI]
0B3E:0100 0400 ADD AL,00
0B3E:0100 050000 ADD AX,0000
0B3E:0100 06 PUSH ES
0B3E:0100 07 POP ES
0B3E:0100 0800 OR [BX+SI],AL
0B3E:0100 0900 OR [BX+SI],AX
0B3E:0100 0A00 OR AL,[BX+SI]
0B3E:0100 0B00 OR AX,[BX+SI]
0B3E:0100 0C00 OR AL,00
0B3E:0100 0D0000 OR AX,0000
0B3E:0100 0E PUSH CS

生成文件倒是好看了,可是看不懂啊,头大!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注