Java-文件操作:去除(删除)文本中的注释

原码小数除法(复杂模型机实现)的报告要求只要机器码,注释和汇编都不要。原始文件内容如下:

$P 00 AA 00;    IN R2,00H;   从IN单元读入一个被除数
$P 02 A9 00;    IN R1,00H;   从IN单元读入一个除数 
$P 04 D2 9F;    ST R2,9F;    R2->9F
$P 06 24;       MOV R0,R1;  
$P 07 96;       XOR R0,R2;
$P 08 BA 10;    MOV R2,10H;
$P 0A 38;       AND R0,R2;   得到符号位
$P 0B D0 9A;    ST R0,9A;    将符号位保存至内存单元
$P 0D C2 9F;    LD R2,9F;    
$P 0F B8 00;    MOV R0,00H;  商置零  
$P 11 BB 0F;    MOV R3,OFH;  0F->R3  
$P 13 3D;       AND R1,R3;   求出Y*补码在R1中
$P 14 3E;       AND R2,R3;   被除数求绝对值X*补在R2中
$P 15 D2 9B;    ST R2,9B;
$P 17 16;       SUB R2,R1;   判断是否溢出
$P 18 BB 10;    MOV R3,10H;
$P 1A 3E;       AND R2,R3;
$P 1B F2 04;    JNZ START;   若无溢出则开始执行,即不等于0跳转
$P 1D BB FF;    MOV R3,FFH;  若等于0则溢出则输出FF
$P 1F AF 00;    OUT 00H,R3;
$P 21 C2 9B;START:LD R2,9B; 
$P 23 16;       SUB R2,R1;   被除数减Y*补得余数
$P 24 BB 05;    MOV R3,05H;  将R3次数置为5
$P 26 87; START1:DEC R3;
$P 27 A4;       PUSH R0;
$P 28 A5;       PUSH R1;
$P 29 2D;       MOV R1,R3;  
$P 2A B8 0F;    MOV R0,0FH;  
$P 2C 33;       AND R1,R0;   判断次数是否为零
$P 2D A1;       POP R1;
$P 2E A0;       POP R0;
$P 2F F3 15;    JZ START2;   若为0跳转置
$P 31 A5;       PUSH R1;
$P 32 A4;       PUSH R0;     
$P 33 B8 10;    MOV R0,10H;
$P 35 29;       MOV R1,R2;  
$P 36 31;       AND R1,R0;   判断余数R2的正负
$P 37 A0;       POP R0;
$P 38 A1;       POP R1;      
$P 39 F3 05;    JZ START3;   余数为正则跳置START3,
$P 3B 8C;       SHL R0;      上商0,商左移1位
$P 3C 8E;       SHL R2;      余数左移1位   
$P 3D 06;       ADD R2,R1;   余数加上Y*补      
$P 3E E7 26;    JMP START1;  跳到START1,次数减1
$P 40 80; START3:INC R0;     若余数为正数上商1
$P 41 8C;       SHL R0;      商左移一位
$P 42 8E;       SHL R2;      余数左移1位
$P 43 16;       SUB R2,R1;   余数减去Y*补
$P 44 E7 26;    JMP START1;  跳到START1,次数减1     
$P 46 BB 10;START2:MOV R3,10H;
$P 48 29;       MOV R1,R2;  
$P 49 3D;       AND R1,R3;   判断最后一次余数符号位正负
$P 4A F3 02;    JZ START4;   跳到START4(若为正则跳)若为负数,即上商0
$P 4C E7 4F;    JMP START5;  跳到START5
$P 4E 80;START4:INC R0;      为正数上商1
$P 4F C3 9A;START5:LD R3,9A;
$P 51 B9 0F;    MOV R1,0FH;
$P 53 34;       AND R0,R1;
$P 54 0C;       ADD R0,R3;   得到带符号商      
$P 55 AC 00;    OUT OOH,R0;  将R0输出
$P 57 FF;       HALT;



$uM 00 6F0ED001		;取指(MEM[PC]->IR),PC+1
$uM 04 5F0ED005		;T2:MEM[PC]->B, T3:PC+1
$uM 05 3EA2F800		;T1:PC->A, T3:A+B->PC
$uM 06 7F0ED000		;T3:PC+1
$uM 08 184AF800	
$uM 09 184AF900  	;ADD	Rdi,Ri  T1:Rdi->A  T2:Ri->B  T3:A+B->Rdi
$uM 0A 7D4AF000		;MOV	Rdi,Ri  T2、T3:Ri->iDBus  T3:iDBus->Rdi
$uM 0B 184AF200		;AND	Rdi,Ri
$uM 0C 184AF100	
$uM 0D 184AF500	;AND	Rdi,Ri
$uM 0E 190AF900	
$uM 0F 190AF200	
$uM 10 774BD011
$uM 11 3A6AFA00
$uM 12 3A6AFB13
$uM 13 750BB000;CMP	Rdi,Ri  T1:Rdi->A  T2:Ri->B  T3:影响的标志位->PSW
$uM 14 7FCED015		;T3:MEM[PC]->MAR, PC+1
$uM 15 7F49C000		;T2:IO[[MAR]->Rdi
$uM 16 7FCED017		;T3:MEM[PC]->MAR, PC+1
$uM 17 7D09A000
$uM 18 7DCAF019
$uM 19 7F89D000
$uM 1A 3A6AFB1B
$uM 1B 7703B01C
$uM 1C 7DCAF01D
$uM 1D 7F89D000		;T2:Ri->IO[MAR]
$uM 1E 7F4ED000		;T3:MEM[PC]->Rdi, PC+1
$uM 20 7FCED021		;T3:MEM[PC]->MAR, PC+1
$uM 21 7F49D000
$uM 22 7DCAF023
$uM 23 7F49D000		;T3:MEM[MAR]->Rdi
$uM 24 1AEED825		;T1:Rdi->A, T2:MEM[PC]->B T3:A+B->MAR
$uM 25 7F49D000		;T3:MEM[MAR]->Rdi
$uM 28 7FCED029		;T3:MEM[PC]->MAR, PC+1
$uM 29 7D09B000	
$uM 2A 3ACAF02B
$uM 2B 7D09B000
$uM 2C 1AEED82D
$uM 2D 7D09B000
$uM 30 3A4AFA00 	;T2:Ri->MEM[MAR]
$uM 31 3A4AFB00		;T1:Rdi->A T3:A-1->Rdi
$uM 32 184AF300	
$uM 33 3A4AF700
$uM 34 3A4AF600
$uM 35 184AF300
$uM 36 185AF800
$uM 37 185AF900
$uM 38 7F0AF000
$uM 39 7F0AF000
$uM 3A 7F0AF000
$uM 3B 7F0AFD00
$uM 3C 7F1AFD00
$uM 3D 7F0AFC00
$uM 3E 7F1AFC00
$uM 3F 7F0AF03F
$uM 40 3A6AFB41
$uM 41 5F0ED064
$uM 42 570BD043
$uM 43 7FCED062
$uM 44 774BD045
$uM 45 3A6AFA46;T1:Rdi->A T2:Ri->B T3: A xor B ->Rdi
$uM 46 778BD047		;T3:MEM[SP]->PC				//RET
$uM 47 3A6AFA00	
$uM 48 3A6AFB49
$uM 49 750BB000
$uM 4A 774BD04B
$uM 4B 3A6AFA00	;SP+1
$uM 4E 7F8AD000		;T3:MEM[PC]->PC
$uM 50 3A6AFB51		;SP -1,不允许改变标志位		//CALL data
$uM 51 5F0ED060	
$uM 52 3ACAF053
$uM 53 7F49C000
$uM 54 3ACAF055
$uM 55 7D09A000	;T2:MEM[PC]->B, T3:PC+1
$uM 60 7703B061		;T2:PC->MEM[SP]
$uM 61 7E9AF000	
$uM 62 7E19B063
$uM 63 3A6AFA00
$uM 64 761BB000	;T3:B->PC
java代码处理结果为:

$P 00 AA 00
$P 02 A9 00
$P 04 D2 9F
$P 06 24
$P 07 96
$P 08 BA 10
$P 0A 38
$P 0B D0 9A
$P 0D C2 9F
$P 0F B8 00
$P 11 BB 0F
$P 13 3D
$P 14 3E
$P 15 D2 9B
$P 17 16
$P 18 BB 10
$P 1A 3E
$P 1B F2 04
$P 1D BB FF
$P 1F AF 00
$P 21 C2 9B
$P 23 16
$P 24 BB 05
$P 26 87
$P 27 A4
$P 28 A5
$P 29 2D
$P 2A B8 0F
$P 2C 33
$P 2D A1
$P 2E A0
$P 2F F3 15
$P 31 A5
$P 32 A4
$P 33 B8 10
$P 35 29
$P 36 31
$P 37 A0
$P 38 A1
$P 39 F3 05
$P 3B 8C
$P 3C 8E
$P 3D 06
$P 3E E7 26
$P 40 80
$P 41 8C
$P 42 8E
$P 43 16
$P 44 E7 26
$P 46 BB 10
$P 48 29
$P 49 3D
$P 4A F3 02
$P 4C E7 4F
$P 4E 80
$P 4F C3 9A
$P 51 B9 0F
$P 53 34
$P 54 0C
$P 55 AC 00
$P 57 FF

java代码如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/*
 * 2017/07/09
 * 主要针对计算机组成原理课设中机器码后面的汇编注释进行清除,只保留机器码
 */
public class StringPractice {

	public static void main(String[] args) throws IOException,FileNotFoundException{
		// TODO Auto-generated method stub
		File file1 = new File("D:/JAVA/Demo/in.txt");
		File file2 = new File("D:/JAVA/Demo/out.txt");
		BufferedReader bReader;
		PrintWriter pWriter;
		String string;
		String[] aStrings = new String[10];
		bReader = new BufferedReader(new FileReader(file1));
		pWriter = new PrintWriter(new BufferedWriter(new FileWriter(file2)));
		while((string = bReader.readLine())!=null){
			aStrings = string.split(";");
			if(aStrings[0].length()==0)//判断是否遇到空行
				break;
			//System.out.println(aStrings[0].length());
			//System.out.println(aStrings[0].charAt(1));
			pWriter.println(aStrings[0]);//写入首个字符串
		}
			bReader.close();
			pWriter.flush();
			pWriter.close();
		
		

	}

}


猜你喜欢

转载自blog.csdn.net/phs999/article/details/74906855
今日推荐