이 글은 www.youtube.com/watch?v=4h_EORNsQNY&list=PLc8fQ-m7b1hD4jqccMlfQpWgDVdalXFbH&index=28 보고 공부한 글입니다.
어셈블리 언어
언어 규칙
1. 라벨 필드(Lable) : 기호주소, 또는 공란
2. 명령어 필드: 기계명령어, 슈도 명령어
3. 코멘트 필드: 명령어에 대한 주석
1개의 명령이 3개의 필드로 구성되어 있다.
명령어 필드 항목
MMi, RRI, IO 명령이냐 에 따라에 바뀐다.
슈도 명령어(Pseudo instruction)
실제로 컴퓨터를 동작시키는 데 사용되는 코드는 아니다.
ORG N- N번지부터 시작하라
ex) ORG 0면 0번지에 프로그램을 넣어라라는 뜻이다.
END – 어셈블리 프로그램이 여기가 끝이다 라는 걸 알려준다.
DEC N – N이 십진수를 알려준다.
HEX N – N이 16진수를 알려준다.
어셈블리 프로그램 예
프로그램을 만들어보자
먼저 이 프로그램이 들어갈 주소를 정한다. ORG 100을 해서 100부터 시작한다고 알린다.
LDA 에서 뺄 수를 load해온다.
CMA – 1 의보 수로의보수로 만든다.
INC – 1을 증가시켜 2 의보 수로 만든다.
ADD MIN – MIN을 더한다.
STA DIF – DIF에 저장한다.
실제로 SUB, MIN, DIF의 주소는?
맵핑해놓는다. – 심볼테이블(주소-기호 테이블)을 만든다.
위 과정을 이진수(기계어)로의 변환
16진수 형태로 된 기계어 이진수로 변환시키면 된다.
어셈블러란?
기호-언어 프로그램을 이진 프로그램으로 번역하는 프로그램
Two pass 어셈블러
메모리 내에서 기호 프로그램의 표현
예) PL3, LDA SUB i 을 Symbol Table로 만들어 보자
뒤에 i가 붙으면 간접 주소이다.
Symbol을 어떻게 기계어로 바꾸는지?
First Pass – address Symbol Table을 만드는 게 목적
1. 주소 기호 – 이진수 값의 관계 표 작성
2. Symbol Table을 출력
3. Location Counter(LC)를 사용하여 프로그램 주소 카운트
MIN , SUB, DIF의 Symbol을 기계어로 바꾸는 법은 하나하나 맵핑해서 Table 형태로 만드는 것이다.
Second Pass
LC가0일 때 읽는다. -> pseudo 명령인가? -> ORG 인가? -> 다시 LC을 바꿔준다. -> DEC, HEX가 나오면 해당하는 값으로 바꿔주면 된다. 바꿔주는 symbol table에서 읽는다.
MRI이거나 RRI, IO명령이다.
이진수로의 번역 수행
4개의 테이블 참조
MRI명령어 Table
Non-MRI명령어 Table
슈도 명령어 Table
Symbol Table
출력
기계어 코드
'Computer Science > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터 구조] 입출력 프로그래밍 (0) | 2021.01.27 |
---|---|
[컴퓨터 구조] 어셈블리어 예제 (0) | 2021.01.26 |
[컴퓨터 구조] 기본 컴퓨터 프로그래밍 (0) | 2021.01.24 |
[컴퓨터 구조] 공통버스에 대한 제어 (0) | 2021.01.23 |
[컴퓨터 구조] 제어장치 (0) | 2021.01.22 |