본문 바로가기

KNU_study/마이크로프로세서

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

728x90
반응형

 


어셈블러 명령어1 을 읽고 싶다면 여기를 클릭 !
 
 
1. ADD r
1byte 명령어, opcode fetch read machine cycle
r과 A를 더한 값을 A에 저장해라. 
-> ADD A 명령은 A + A의 결과값을 A에 저장하라는 의미이다. 
 

ADD B 전/후

 
 
2. ADI 8bits
2 byte 명령어, opcode fetch read + MEMR machine cycle
8bits(데이터)와 A를 더한 값을 A에 저장해라. 
 

ADI 20H 전/후

 
 
+) ADD M
1byte 명령어, opcode fetch read + MEMR machine cycle
M(16bits, 해당 주소)의 data와 A를 더한 값을 A에 저장해라. 
 

ADD M 전/후

 
 
3. ADC r
1byte 명령어, opcode fetch read machine cycle
carry, r, A를 더한 값을 A에 저장해라. 
-> 16bit data + 16bit data를 실행할 때, 1 + 1이 될 경우 carry가 발생한다. 
-> F register의 CY칸에 carry가 발생할텐데 이 값(0 or 1)까지 포함하여 A에 저장한다. 
 

ADC B 전/후

 
 
4. ACI 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
carry와 8bits(데이터)와 A를 더한 값을 A에 저장해라. 
 

ACI 01H 전/후

 
 
+) ADC M
1byte 명령어, opcode fetch read + MEMR machine cycle
carry와 M(16bits, 해당 주소)의 data와 A를 더한 값을 A에 저장해라.
 

ADC M 전/후

 
 
5. SUB r
1byte 명령어, opcode fetch read machine cycle
A에서 r을 뺀 값을 A에 저장해라. 
 

SUB B 전/후

 
 
6. SUI 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
A에서 8bits(데이터)를 뺀 값을 A에 저장해라. 
 

SUI 20H 전/후

 
 
+) SUB M
1byte 명령어, opcode fetch read + MEMR machin cycle
A에서 M(16bits, 해당 주소)의 data를 뺀 값을 A에 저장해라. 
 

SUB M 전/후

 
 
7. SBB r
1byte 명령어, opcode fetch read machine cycle
A에서 carry, r를 뺀 값을 A에 저장해라.
-> 16bit data - 16bit data를 실행할 때, 0 - 1이 될 경우 carry가 발생한다. 
-> F register의 CY칸에 carry가 발생할텐데 이 값(0 or 1)까지 포함하여 A에 저장한다. 
 

SBB B 전/후

 
 
8. SBI 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
A에서 carry와 8bits(데이터)를 뺀 값을 A에 저장해라. 
 

SBI 20H 전/후

 
 
+) SBB M 
1byte 명령어, opcode fetch read + MEMR machine cycle
A에서 M(16bits, 해당 주소)의 data를 뺀 값에 carry를 포함하여 A에 저장해라. 
 
 
9. INR r
1byte 명령어, opcode fetch read machine cycle
내부 register를 1씩 증가시켜라. 
(ex) INR C : C의 data에 1을 더한 값을 C에 저장해라. 
 

INR B 전/후

 
 
10. INR M
1byte 명령어, opcode fetch read + MEMR + MEMW machine cycle
 M(16bits, 해당 주소)의 data에 1을 더한 값을 A에 저장한 후, M이 가리키는 주소에 저장해라. 
-> 산술연산은 CPU 프로세서 안에서만 가능하다. (CPU 안에 ALU가 있기 때문에)
-> address bus에서 2개를 더하고 싶어도, 프로세서 안으로 가져와 덧셈한 후에 그 값을 내보내야 한다. 
-> 외부 메모리 값은 직접 조작이 불가능하므로 MEMR, MEMW를 다 사용한다. 
 

A의 04H는 03H와 1을 더해서 넣은 값이다. 오른쪽 그림은 A 값을 다시 MEMW하는 상황이다.

 
 
11. DCR r
1byte 명령어, opcode fetch read machine cycle
r에서 1을 뺀 값을 해당 r에 저장해라. 
 
 
12. DCR M
1byte 명령어, opcode fetch read + MEMR + MEMW machine cycle
무슨 의미징
 
 
13. INX rp
1byte 명령어
rp에서 1을 더한 값을 해당 rp에 저장해라. 
-> rp에는 B, D, H, SP가 가능하다. 
-> 0 - 255 bit 사용 가능, 더 큰 값이 필요할 때 pair를 사용하자. 
 
 
14. DCX rp
1byte 명령어
 
 
<논리 연산 : 무조건 A와 비교, 연산한 결과를 무조건 A에 저장>
 
 
15. ANA r
1byte 명령어, opcode fetch read machine cycle
(+) ANA M : 1byte 명령어, opcode fetch read + MEMR machine cycle
-> 참고로 모든 논리연산은 bitand, bitor, bitxor이다. 즉 bit별로 각각 논리연산한다. 
 
 
16. ANI 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
 
 
17. ORA r
1byte 명령어, opcode fetch read machine cycle
(+) ORA M : 1byte 명령어, opcode fetch read + MEMR machine cycle
 
 
18. ORI 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
 
 
19. XRA r
1byte 명령어, opcode fetch read machine cycle
(+) XRA M : 1byte 명령어, opcode fetch read + MEMR machine cycle
 
 
20. XRI 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
 
 
<비교 : 크기 비교 명령어, 무조건 A와 비교하고 그 결과를 A에 저장>
 
 
21. CMP r
1byte 명령어, opcode fetch read machine cycle
-> 뺄셈으로 크기를 비교한다. 크기 비교 후 변화 없이 종료된다. 
-> 대소 비교는 F(Flag register) 내부의 z와 CY, 2개의 값으로 알아낼 수 있다. 
 

Flag register

 
(+) CMP M : ~~
 
22. CPI 8bits
2byte 명령어, opcode fetch read + MEMR machine cycle
(ex) CPI 20H
 
 
 
 
 
 
 
 
 
 
 
 
 
 

728x90
반응형