본문 바로가기

KNU_study/마이크로프로세서

마이크로프로세서(5) 어셈블러 명령어

728x90
반응형


 
 
* 어셈블러 명령어란? 프로세서가 가져야 하는 기능을 명령어로 만든 것. 

기능별 분류

 
1. 산술 연산
(1) 3가지 경우 [이항 연산자의 두 항 중 하나는 99% accumulator에 있다 ]
    A(accumulator의 값) + 내부 레지스터(B,C, ... , H)의 값
    A(accumulator의 값) + 외부 메모리 값
    A(accumulator의 값) + 내가 준 임의의 명령어 값
(2) 2가지 경우 [레지스터 F에서 carry를 다룰 때]
    carry를 더하는 경우, carry를 더하지 않는 경우
-> 덧셈의 명령어에는 총 6(= 3 X 2)가지가 있다. 
-> 이와 마찬가지로, 뺄셈도 총 6가지가 있다. 
 
2. 논리 연산
and, or, xor
논리연산도 무조건 accumulator의 값과 연산해야 한다. 
3가지씩 존재한다.
-> 내부 레지스터와 A와의 연산, 외부 메모리와 A와의 연산, 임의 명령어와 A와의 연산
 
3. 데이터 전송 연산(데이터 카피)
데이터 전송 연산은 Ctrl + X, Ctrl + V가 아니다. 
데이터 전송 연산은 Ctrl + C, Ctrl + V이다. 
3가지씩 존재한다.
-> 내부 레지스터와 A와의 연산, 외부 메모리와 A와의 연산, 임의 명령어와 A와의 연산
 
 

크기별 분류

 
어셈블러 명령어로 외부 메모리를 다룰 때는 주소가 필요하다. 
그러나, 어셈블러 명령어로 내부 메모리를 다룰 때는 주소가 필요없다. 이럴 때 1byte 명령어 사용
 
1. 1 byte

A(accumulator) + 내부 메모리를 다룰 때 사용
[ex] MOV C, A : A의 data를 C로 전송해. 

 
2. 2 byte

예시대로라면, 저 빈칸에 44H를 작성하면 된다 !!

A(accumulator) + 임의의 값을 다룰 때 사용
[ex] MVI A, 40H : 40H를 A 공간 안에 넣어. 

 
3. 3 byte

A(accumulator) + 외부 메모리 주소값을 다룰 때 사용
-> 주소값은 16bit이므로 8bit, 8bit씩 할당해야 한다. 두 칸이 필요한 이유다. 
[ex] LDA 2050H : 2050H 번지에 있는 data를 A로 가져와. 

 
 
 
 
 
 
 
 
 
 

728x90
반응형