|
一个简单的C语言编译器(21) { if(hasError){ log<<endl; log<<"*******************************************"<<endl; log<<"源代码中有错误,不能生成目标代码!"<<endl; log<<"*******************************************"<<endl; return; } log<<endl; log<<"*******************************************"<<endl; log<<"开始生成目标代码..."<<endl; out.open((fileName + ".asm").c_str(),ios::out); if(out.is_open()){ log<<"创建文件"<<(fileName + ".asm").c_str()<<"成功!"<<endl; out<<"\t.model small"<<endl; out<<"\t.stack"<<endl; out<<"\t.data"<<endl; while(!symbolList.empty()) { out<<symbolList.front().c_str()<<"\tdw ?"<<endl; symbolList.pop_front(); } out<<"__end\tdb 13,10,\'Press Any Key To Continue...\',\'$\'"<<endl; out<<"\t.code"<<endl; out<<endl; if(needOutSuppose){ log<<"写入被引入系统函数代码."<<endl; out<<"outint proc near"<<endl; out<<"\tmov cx,0"<<endl; out<<"\tmov bx,10"<<endl; out<<"again:\tmov dx,0"<<endl; out<<"\tdiv bx"<<endl; out<<"\tpush dx"<<endl; out<<"\tinc cx"<<endl; out<<"\tcmp ax,0"<<endl; out<<"\tjne again"<<endl; out<<"print:\tpop dx"<<endl; out<<"\tadd dl,30h"<<endl; out<<"\tmov ah,02h"<<endl; out<<"\tint 21h"<<endl; out<<"\tloop print"<<endl; out<<"\tmov dl,20h"<<endl;
|