마이크로 프로세서 Assembler 제작
- 최초 등록일
- 2005.01.01
- 최종 저작일
- 2005.01
- 10페이지/ 한컴오피스
- 가격 2,000원
소개글
마이크로 프로세서 과목에서 다루는 Assembler 제작 소스코드입니다. Fist Pass와 Second Pass 과정을 통해 어셈블리 언어를 기계어로 바꿔주는 프로그램입니다. 모리스 마노의 컴퓨터시스템구조 책을 참고하시면 정확한 동작을 알 수 있습니다. 텀프로젝트에 참고하세요.
컴파일 실행환경
Visual C++ 6.0
1.5G 노트북
본문내용
#include<iostream>
#include<cmath>
using namespace std;
int i=0,j=0,k=0,l=0,m=0,n=0,LC=0,num;
char symbol[100][20];
int binary[100][16], flag[100];
char label[10][3], intnum[10];
int lc[100], label_lc[10];
char inteager[10];
void firstpass();
void secondpass();
int char_to_int(char *a);
int char_hex_to_int(char *a);
void int_to_hex(int *bin,int nu);
int hex_to_int(int a);
void nonmri(int *a,char *b);
main(){
cout<<"Enter the Assembly code\n";
while(symbol[i-1][0]!='E'||symbol[i-1][1]!='N'||symbol[i-1][2]!='D'){
cin.getline(symbol[i],20);
i++;
}
firstpass();
secondpass();
}
void firstpass(){
for(j=0;j<i;j++){
lc[j]=LC;
flag[j]=0;
if(symbol[j][3]==','){
label[k][0]=symbol[j][0];
label[k][1]=symbol[j][1];
label[k][2]=symbol[j][2];
label_lc[k]=lc[j];
k++;
LC++;
}
else if(symbol[j][0]=='O'&&symbol[j][1]=='R'&&symbol[j][2]=='G'){
n=0;
while(symbol[j][n+4]!=NULL){
intnum[n]=symbol[j][n+4];
n++;
}
intnum[n]=NULL;
n=0;
LC = char_to_int(intnum);
}
else if(symbol[j][0]=='E'&&symbol[j][1]=='N'&&symbol[j][2]=='D'){
break;
}
else{
LC++;
}
}
}
참고 자료
없음