본문 바로가기

ASSEMBLY

(5)
System Software _ project 5 #아래와 같이 구조체로 예약 단어 및 길이를 정의하고, 이를 검색하여텍스트 파일의 각 줄에 나타나는 단어들에 대하여 “줄번호-위치-단어- 길이”를 출력한다. 단, 예약되지 않은 단어가 나타나면 “Undefined word” 메시지를 출력하고 무시한다(5 단어 이상 정의하고, 텍스트파일 10줄 이상) # [word.s] [출력결과] J, COMP, JEQ 는 소스코드를 참고하면 정의 되지 않은 단어이다. 이 코드는 정의할 수 없는 코드라 출력이 되고 나머지는 줄번호 – 위치 – 단어 – 길이 순서로 출력된 것을 확인 할 수 있다. #include #include #include /*단어 정의에 필요한 구조체*/ struct OPTAB{ char name[8]; int len; }Wordtab[]={{"ST..
MAKING ASSEMBLYSYSTEM SOFTWARE 사용자가 작성한 어셈블리 프로그램(원시 프로그램)을 목적 프로그램으로 번역하는 SIC 어셈블러를 구현하기 -xshell -Dev-c ->출력결과를 두개로 출력한 이유 C’EOF’가 operand인 목적코드를 생성할 때 Dev-c에서는 맞게 돌아가나 xshell에서는 이상하게 돌아가서. ->길이 출력 실패 새 문장이 시작될때마다 그 문장의 길이를 출력해 주어야한다. 나의 알고리즘은 순서대로 넣어진 opcode를 추적하여 발견될 때마다 즉시 출력해줌으로써 미리 길이를 구할 수가 없다. 출력해야하는 목적코드를 미리 배열에 저장하여 맨 마지막에 출력해주면 길이와 함께 출력가능. [sample.s] 5 COPY START 1000 10 FIRST STL RETADR 15 CLOOP JSUB RDREC 20 LDA..
System Software _ project 4 #아래와 같이 한줄에 단어 하나씩 기록된 텍스트 파 일 “sample.s”이 있다. 이들 단어를 모두 연결했다 고 가정했을 때, 각 단어의 시작 위치를 단어와 함 께 출력하고, 마지막에는 총 길이를 출력한다(16진 수 사용). 이 프로그램의 가장 중요한 부분은 단어의 시작주소(start)를 출력하기위해 포인터를 사용해야 한다는 점이다. #include /* project #1 : 텍스트 파일내 단어의 총 수를 카운트*/ #include #include int get_token_num(char *bp,int num,int *start); int main() { FILE *fp; char buf[80]; int num=0; int start=0; if ((fp = fopen("sample.s", "r")) ..
System Software _ project 2 # 텍스트 파일 “sample.s”를 open하여 숫자 단어, 알파벳 단어, 기타 단어 등 총 세 종류의 단어 수를 각 카운트하여 출력 [실행결과] -smple2.c 단어를 int get_token_num()함수로부터 받아오면 우선 거기에 특수문자가 있는지 한 문자 씩 검열하여 문자가 속해있는지 판별해 etc를 더해준다. 이게 아니면 또 맨 앞 글자만 비교하여 그 단어가 숫자 혹은 문자로 이루어져 있는지를 판별한다. #include /* project #1 : 텍스트 파일내 단어의 총 수를 카운트*/ #include #include int get_token_num(char *bp,int *alpha,int *etc); int main() { FILE *fp; char buf[80]; int num; in..
System Software _ project 1 # 텍스트 파일 “sample.s”를 open하여 단어의 총 수를 카운트하여 출력 -smple1.c [실행결과] 단어를 int get_token_num()함수로부터 받아오면 우선 거기에 특수문자가 있는지 한 문자 씩 검열하여 문자가 속해있는지 판별해 etc를 더해준다. 이게 아니면 또 맨 앞 글자만 비교하여 그 단어가 숫자 혹은 문자로 이루어져 있는지를 판별한다.