Z80

2016-08-28 19 views
0

에 대한 BCD 빼기 프로그램이 프로그램은 책 Programming the Z80에서 가져온 것입니다.이 프로그램은 x 바이트 BCD 빼기를 수행합니다. x는 일 수 있으며 두 피연산자의 바이트를 계산하여 실행합니다 결과적으로 루프를 통해 빼기 명령을 내리 겠지만, 여기서는 두 숫자가 동일한 바이트 수를 가진다고 가정합니다.이 숫자는 COUNT이라고합니다. 이 번호의 주소는 N1N2이며 그 뒤에 오는 주소입니다. 내 질문은 코드의 주석에있다. 그 결과, 어드레스에 저장된Z80

BCDPAK LD B, COUNT 
     LD DE, N2 
     LD HL, N1 
     AND A ;Clear carry 
MINUS LD A, (DE) 
     SBC A, (HL) 
     DAA ;Decimal adjust the result 
     LD (HL), A ;Store the result in HL 
     INC DE 
     INC HL ;Doesn't that overwrite the result? 
     DJNZ MINUS ;Decrement B, loop until B = 0 

답변

0

는 HL로하고 HL (즉, 포인터) 감수하고 결과의 다음의 바이트를 가리키는 증가 지적했다.

결과는 일반적으로 대부분의 어셈블리 지침에서 발생하는 피감수 대신 감수를 덮어 씁니다. 예 : SBC A, (HL)은 A에서 (HL)을 뺀 다음 결과를 A로 남겨 둡니다. 그러나이 루틴은 DE가 가리키는 번호에서 HL이 가리키는 번호를 빼고 그 결과를 원래

대신 HL이 가리키는 메모리 위치에 남겨 둡니다