본문 바로가기

KNU_study/마이크로프로세서

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

728x90
반응형


 
 
instruction cycle과 machine cycle의 차이점이 궁금하다면 여기를 클릭 
어셈블러 명령어의 간단한 요약이 궁금하다면 여기를 클릭
 


** r : 내부 register
** rp : register pair, 내부 register의 쌍
 
 
1. MOV r1, r2
1byte 명령어, opcode fetch read machine cycle
내부의 register끼리 서로 값을 바꿔라. 
-> r2를 r1으로 copy해라 (r2 : source, r1 : destination)
 

MOV B, D 전/후

 
 
2. MVI r, 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
8bits(데이터)의 값을 r에 넣어라. 
 

MVI C, 20H 전/후

 
 
3. IN #port
2byte 명령어, opcode fetch read + MEMR + IOR machine cycle
#port로부터 data를 가져와서 A에 옮겨 담아라.  
-> 공간을 많이 사용하지 않기 때문에 input, output 포트에는 번지수를 8bit만 할당한다. 
-> 2000H 수행, 2001H : MEMR -> 01H 임시저장 -> IOR -> 01H가 디코더를 거쳐 IOR 명령 받고 IN된다. 
 

IN 01H 전/후 -> 확실치 않음

 
 
4. OUT #port
2byte 명령어, opcode fetch read + MEMR + IOW machine cycle
-> 2000H 수행, 2001H : MEMR -> 02H 임시저장 -> 02H를 data bus에 싣는다 -> IOW
 

OUT 02H 전/후 -> 확실치 않음

 
 
5. LXI rp, 16bits
3byte 명령어, opcode fetch read + MEMR + MEMR machine cycle
인접한 16bits의 값을 불러와라. 이거 다시 찾아보자 !~!!!!
-> stack point(sp)에 명령할 수 있는 유일한 명령어
-> 주의 !!! 2050H라면, 맨 아래 공간에 50H가 아닌, 20H를 넣어야 하며, 불러올 땐 2050H로 불러오기
 

LXI D, 2050H 전/후

 
 
6. LDA 16bits
 3byte 명령어, opcode fetch read + MEMR + MEMR + MEMR machine cycle
16bits(해당 주소)의 data를 A로 가져와라. address bus의 data를 A로 !
-> 16bits를 address bus에 실어야 함 + 거기의 data를 읽어야 함 = 총 3번의 MEMR
 

LDI 2050H 전/후

 
 
7. STA 16bits
3byte 명령어, opcode fetch read + MEMR + MEMR + MEMW machine cycle
A에 있는 data를 16bits(해당 주소)에 저장해라. A의 data를 address bus로 !
-> 마찬가지로 write 명령어를 쓰기 전에, 해당 data를 address bus에 실은 후에 control bus 하기
 

STA 2051H 전/후

 
 
8. LDAX rp 
1byte 명령어, opcode fetch read + MEMR machine cycle
rp의 data(16bits, 해당 주소)의 data를 A에 저장해라. rp, 주소의 data를 A로 !
-> rp로는 B, D 사용 가능. H, SP 사용 불가능. 
    H를 사용할 경우, A가 아닌 r로도 load가 가능하다는 장점이 있다. 그래서 따로 정의해서 쓴다. 
 

LDAW B 전/후

 
 
9. STAX rp 
1byte 명령어, opcode fetch read + MEMW machine cycle
A에 있는 data를 rp의 data(16bits, 해당 주소)에 저장해라. A의 data를 rp, 주소로! 
-> rp로는 B, D 사용 가능. H, SP 사용 불가능.
 

STAX D 전/후

 
 
+) MOV r, M
1byte 명령어, opcode fetch read + MEMR machine cycle
M(16bits, 해당 주소)의 data를 r에 넣어라. 
-> M이란? HL이 가리키고 있는, 외부 메모리에 있는 data의 값
 

MOV A, M 전/후

 
 
+) MOV M, r
1byte 명령어, opcode fetch read + MEMW machine cycle
r의 data를 M(16bits, 해당 주소)에 넣어라. 
 

MOV M, C 전/후

 
 
** 다음 글에서는 덧셈, 뺄셈, AND, OR, XOR 등의 명령어를 공부해보자 !!
 
 
 
 
 
 
 
** IOR, IOW는 IN, OUT 명령어에만 있다. -> 따라서 앵간하면 OP, MEMR, MEMW만 쓸 듯 !
 
 
 
 

728x90
반응형