蛋疼的计组实验,8086汇编语言,找出8086/8088指令系统所有指令的操作码的编码,没学会,就去搞了点副业,复习了下C++文件操作。
实验要求生成一个in.txt文件,然后用debug
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include<iostream> #include<fstream> 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 "<<hex<<a<<b<<endl; //输出16进制 out<<"u 100 101"<<endl; } out.close(); } |
debug
-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++了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include<iostream> #include<fstream> #include<cstring> 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<<str<<endl; } din.close(); dout.close(); } |
把需要的部分复制到新文件中,如下:
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
生成文件倒是好看了,可是看不懂啊,头大!
发表回复