📄 gen.java
字号:
dx=true;
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
}
else {
if (bx==true && dx==true){
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else if (bx==true){
dx=true;
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else{
bx=true;
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
}
}
break;
case 32://=
if (bx==false && dx==false){
bx=true;
dx=true;
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
}
else {
if (bx==true && dx==true){
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else if (bx==true){
dx=true;
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else{
bx=true;
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
}
}
break;
case 35://<>
if (bx==false && dx==false){
bx=true;
dx=true;
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
}
else {
if (bx==true && dx==true){
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else if (bx==true){
dx=true;
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else{
bx=true;
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
}
}
break;
case 36://>
if (bx==false && dx==false){
bx=true;
dx=true;
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
}
else {
if (bx==true && dx==true){
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else if (bx==true){
dx=true;
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else{
bx=true;
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
}
}
break;
case 37://>=
if (bx==false && dx==false){
bx=true;
dx=true;
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
}
else {
if (bx==true && dx==true){
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else if (bx==true){
dx=true;
outDesFile.writeBytes(lineNum+++" : push bx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
}
else{
bx=true;
outDesFile.writeBytes(lineNum+++" : push dx\r\n");
outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
}
}
break;
case 38://j
outDesFile.writeBytes(lineNum+++" : jmp "+genNum[gs.getAddress()]+"\r\n");
break;
default:JOptionPane.showMessageDialog(null,"Gen error");
}
}
outDesFile.writeBytes("\r\nmov ax,4c00h\r\n"+
"int 21h\r\n"+
"end start");
outDesFile.close();
BuildWindow.getBuildWindow().gettaProName().append("The DestinationFile is finish\nPlease see over it");
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null,"FileNotFoundException is occurred--Create RandomAccessFile");
} catch (IOException e) {
JOptionPane.showMessageDialog(null,"IOException is occurred--write DesFile");
}
}
private void createDestinationFile() {//创建目的文件
if(desFile.exists()){
desFile.delete();
try {
desFile.createNewFile();
BuildWindow.getBuildWindow().gettaProName().append("The DestinationFile is created\n");
} catch (IOException e) {
JOptionPane.showMessageDialog(null,"Create festinationFile is failed");
}
}
else{
try {
desFile.createNewFile();
BuildWindow.getBuildWindow().gettaProName().append("The DestinationFile is created\n");
} catch (IOException e) {
JOptionPane.showMessageDialog(null,"Create festinationFile is failed");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -