오늘은 어셈블리 언어에 대해서 배워보겠습니다.
Assembly Language
어셈블리 언어는 저급 언어에 속합니다. 즉, 파이썬같이 인간이 알 수 있는 고급언어와 다르게 기계가 알 수 있도록 쓰이는 언어를 의미합니다.
어셈블리 언어는 3가지 filed로 구성됩니다.
- label field : 비어있거나, symbolic address를 나타냅니다. Symbolic Address는 아래에서 다룹니다.
- Instruction field : machine instruction이나 pseudo instruction을 나타냅니다.
- Comment filed : 공란이거나 주석을 작성합니다.
이 세가지 filed를 알아보기 전, Symbolic Address에 대해서 알아봅시다. Symbolic Address는 마치 우리가 변수로 선언하는 것처럼, 해당 line의 값을 선언하는 것을 의미합니다. Symbolic Address에는 3자리로 구성되며, 각 자리에는 문자와 숫자가 들어올 수 있지만, 첫 자는 반드시 문자여야하고, comma로 마지막 4번째 자리를 완성해야한다는 규칙을 갖고 있습니다.
Label filed
label filed에서는 마치 파이썬에서 변수를 선언하는 것과 비슷하게 작성합니다. Label filed가 있는 부분에서는 해당 Label의 값을 정의하는 부분입니다. 보통 어셈블리 언어는 아래와 같이 작성되는데, 이 중 가장 좌측의 부분을 Label이라고 칭합니다.
Instruction field
우리는 전에, Instruction에 대해서 배웠습니다. 여기서는 Memory-reference Instruction과 non-Memory-reference Instruction으로 나뉩니다.
(memory-reference, non-memory-reference instruction에 대한 글은 여기!!)
이제 우리는 MRI, non-MRI로 부르겠습니다.
MRI는 Instruction filed에서 2개 또는 3개의 space를 갖습니다.
만약 2개의 space를 갖는다면, opcode와 symbolic address를 나타내고,
3개의 space를 갖는다면 opcode, symbolic address, indirect mode를 나타내는 space가 될 것입니다.
반면, non-MRI는 1개의 space를 갖습니다.(operand가 필요없기 때문이죠. 따라서 operand의 주소, direct mode 또한 필요하지 않습니다.)
아래의 예시를 보고 확인해봅시다.
우리는 Instruction filed에 Pseudo insturction이 올 수 있다고 하였습니다. 이는 이 책(Computer System Architecture)의 저자 Mano가 정의한 4가지 종류를 갖습니다.
- ORG N : 16진수 N은 memory의 위치로, 해당 위치에 instruction이나 operand의 list를 갖고 있습니다. ORG는 origin을 줄인 것입니다.
- END : 해당 프로그램의 종료를 의미합니다.
- DEC N : signed 10진수 N을 의미합니다.
- HEX N : 16진수 N을 의미합니다.
Comment filed
주석을 작성하는 것으로, 반드시 slash로 시작해야하고, return(=enter)로 종료해야합니다.
자, 그럼 이제 이러한 어셈블리 언어로 작성된 프로그램을 배워봅시다. 아래는 두 수 83과 -23을 빼는 프로그램을 작성한 것입니다.
오늘은 어셈블리 언어에 대해서 알아봤습니다. 다음 글에서는 이 어셈블리 언어가 기계어로 바뀌는 부분에 대해서 알아보겠습니다. 감사합니다.
'CS > Computer Architecture' 카테고리의 다른 글
[컴퓨터구조] 6-3. Assembly Programs -1 (0) | 2023.10.09 |
---|---|
[컴퓨터구조] 6-2. The Assembler (2) | 2023.10.08 |
[컴퓨터구조] 5-6. Complete Computer Description (0) | 2023.10.02 |
[컴퓨터구조] 5-5.3. Instruction Cycle(register-reference, I/O Instruction) (0) | 2023.09.27 |
[컴퓨터구조] 5-5.2. Instruction Cycle(Memory-reference instruction) (1) | 2023.09.27 |