2017-12-12 2 views
0

Stack에서 2 개의 값을 비교하여 작은 값을 찾는 방법을 알고 싶습니다. 저는 Beginer이므로 Acumulator를 사용해야한다면 어떻게 될지 확실하지 않습니다. 8 비트 레지스터 일 뿐이며 스택은 각 값에 대해 레지스터 쌍을 사용합니다. 네가 나를 도울 수 있으면 고마워, 고마워 !!8085 - 스택의 두 값을 비교하는 방법

인텔 구문

+0

@Ruan_Lopes 다른 아키텍처. – fuz

답변

1

당신은 스택에서 pop 값이 어려운 방법을해야 할 것이다없는 경우; 8085 (또는 Zilog Z80) CPU는 스택에서 직접 읽을 수 없습니다.

HL 레지스터 쌍의 값으로 포인터를 복사하고 (HL) 메모리 위치에서 메모리를 읽어야합니다.

스택 포인터를 HL에 직접 복사 할 수는 없지만 HL에만 스택 포인터를 추가 할 수 있습니다.

예 : 주소 (SP + 5)의 스택에있는 바이트와 주소 (SP + 10)에있는 바이트를 비교하려고합니다.

그런 다음 우리는 (안 Z80 구문, 8,085분의 8,080 구문 여기에) 다음을 수행하십시오

LXI H, 5 ; Set HL to 5 
DAD SP  ; Add the address of the stack to HL -> HL contains (SP+5) 
MOV A,M ; Load the byte at (HL) into the accumulator 
LXI H, 10 ; Set HL to 10 
DAD SP  ; Add the address of the stack to HL -> HL contains (SP+10) 
CMP M  ; Compare the byte at (HL) to the accumulator 

플래그는 비교 결과에 따라 설정되는 CMP 명령 후.

16 비트, 24 비트, 32 비트 ... 비트 수를 비교하려면 맨 위의 바이트를 먼저 비교해야합니다. 0 플래그가 설정되면 두 바이트가 모두 동일 함을 의미합니다. 이 경우 가장 낮은 바이트까지 또는 0 플래그가 더 이상 설정되지 않을 때까지 다음 바이트를 비교합니다.