검색어 입력폼

[전자전기실험]추가적인 산술 명령어

저작시기 1997.01 |등록일 2006.04.29 한글파일한컴오피스 (hwp) | 8페이지 | 가격 700원

소개글

중앙대학교 전자전기공학부 3학년 1학기 실험 4의 예비와 결과 레포트 입니다.
DEBUG를 통한 시뮬레이션 결과도 포함 되어 있습니다.

목차

1. 실험 목적
2. 이론
(1) ADC(ADd with Carry) 명령어
(2) SBB(SuBtract with Borrow) 명령어
(3) Packed BCD 연산
(4) Unpacked BCD 연산
(5) MUL 명령어와 DIV 명령어
3. 실험기기 및 재료
4. 실험 방법

본문내용

(1) ADC (Add with Carry) 명령어
앞서의 실험에서 이진덧셈을 할 때 ADD명령을 사용하였는데, ADD는 계산결과에서 올림수가 발생해도 연산결과에 영향을 주지 못한다. 그러나 여러 바이트가 모여 하나의 수를 표현하는 배정밀 연산 시 올림수의 영향이 매우 중요하다. 만약 2워드단위의 연산에서 첫 번째 워드가 연산을 하고 올림수가 생겨도 다음 워드에는 연산에 포함되지 않으므로 이때 ADC명령어를 사용하면 올림수가 있을시 결과에 1을 더해준다. 그러나 배정밀 연산이 아닌 1워드내의 연산에서는 인텔8086이 자동으로 올림수를 고려해주기 때문에 사용하지 않아도 된다.

단계1은 내용이 없으므로 캐리플래그의 값은 0이다.
단계2에서 두 번째 명령어인 MOV를 수행하면 AX 레지스터에 DATA1의 값인 65A0H가 입력된다. 이 때 FL는 연산 전이므로 세트되지 않아서 0이다. 16비트의 끝자리인 캐리 플래그가 0이므로 전체 플래그 레지스터의 값을 16진수로 표시된 값을 보면 짝수로 나온다. 즉, 플래그 레지스터 값이 짝수이면 캐리 플래그의 값이 0이고 홀수이면 캐리 플래그의 값은 1이 된다.
단계3에서 세번째 명령어인 ADD를 수행하면 AX 레지스터의 값인 65A0H에 DATA2의 값인 B79EH를 더해서 AX 레지스터에 입력하게 된다. 이 때 연산 값은 ADD명령어의 원칙에 따라 캐리를 빼고 계산하므로 1D3E가 되고 계산할 때 캐리가 발생해서 CF가 1로 세트된다.
단계4에서 AX 레지스터의 내용을 SUM에 넣는다. 이 때 CF의 내용은 보존되므로 역시 1이다.
단계5에서 DATA1+2의 값인 0215H의 값을 AX 레지스터에 옮긴다. 새로운 연산이 없으므로 CF 레지스터의 내용은 그대로 1이다.
단계6에서 DATA2+2의 값인 0421H를 AX 레지스터의 값인 0215H와 ADC한다. 이 때 ADC 명령어는 CF를 고려하여 연산하기 때문에 1로 세트된 캐리의 값을 더해서 0637H가 된다. CF의 내용을 연산 내에 포함시켰으므로 CF의 내용은 다시 0으로 리셋된다.
단계7에서 AX 를 SUM+2로 옮긴다.
그러므로 연산 내용을 조합해 보면 06371D3E가 되어 과정(5)의 연산 결과와 일치하게 된다.

참고 자료

16BIT 마이크로 프로세서-응용 및 실험- (홍릉과학출판사)
다운로드 맨위로