-
[문제해설] 2의 보수로 표현되는 수가 A, B 레지스터에 저장되어 있다. A ← A-B 연산을 수행한 후의 A 레지스터는?전자계산기조직응용기사/필기 기출문제 해설 2021. 8. 17. 05:20반응형
전자계산기조직응용기사 필기 기출문제 (3과목 전자계산기구조-2의 보수)
2의 보수로 표현되는 수가 A, B 레지스터에 저장되어 있다. A ← A-B 연산을 수행한 후의 A 레지스터는?
A 레지스터 B 레지스터 FFFF FF61 0000 004F 가. 00000012 나. FFFFFF12
다. 000000B0 라. FFFFFFB0
- 문제해설 -
2의 보수 코드의 연산을 묻는 문제입니다.
2의 보수에 대해 먼저 말아보겠습니다.
위 표는 4비트 환경에서 10진수에 대응하는 2의 보수로 표현하는 코드표입니다. 2의 보수를 사용하는 주된 이유는 부호를 나타내기 위해서입니다.
표에서 표시해놓은 것을 예로 설명하면, +3을 2진수로 표현하면 0011입니다. 이를 2의 보수로 변경하면 1101이고, 이는 -3과 대응됩니다. 나머지 숫자들도 2의 보수로 변환하면 절대값은 같고 부호만 바뀌게 됩니다.
이렇게 보수를 활용하여 부호를 표시함으로써, 뺄셈 회로 구성하는게 간단해집니다. 그냥 덧셈기에서 보수를 더해주면 뺄셈연산이 되는 것이죠.
5 - 3 = 5 + (-3)
10진수로 표현하자면, 위 식처럼 표현한 것입니다.
그럼 문제로 돌아가겠습니다.
문제에선 A, B 레지스터에 2의 보수로 표현된 수가 있고, A←A-B 연산을 수행한 후 레지스터 A의 값을 묻고 있습니다.
'A←A-B'는 레지스터 A 값에 레지스터 B의 값을 뺀 값을 레지스터 A에 저장하라는 말입니다.
우선 레지스터 A와 B의 값을 2진수로 변경을 합니다.
레지스터 A FFFF FF61
= 1111 1111 1111 1111 1111 1111 0110 0001레지스터 B 0000 004F
= 0000 0000 0000 0000 0000 0000 0100 1111그럼 우선 A-B를 연산을 하려면, 레지스터 B의 2의 보수를 구해여 더해주면 됩니다.
그럼 B의 2의 보수를 구해보겠습니다.
B = 0000 0000 0000 0000 0000 0000 0000 1111
B'= 1111 1111 1111 1111 1111 1111 1011 0001
그럼 B'(B의 2의 보수)를 A와 다음과 같이 더해주면 됩니다.
A = 1111 1111 1111 1111 1111 1111 0110 0001
+
B = 1111 1111 1111 1111 1111 1111 1011 0001
A+B = 1 1111 1111 1111 1111 1111 1111 0000 0010
이때 발생한 캐리는 버리면 됩니다. 이 값을 다시 16진수로 변경하면,
FFFFFF12가 됩니다. 정답은 2번입니다.
https://youtube.com/playlist?list=PLboXycXmAIDuukQ2A6EvMZI-x1IMy3Xc-
반응형'전자계산기조직응용기사 > 필기 기출문제 해설' 카테고리의 다른 글
[문제해설] 우선순위체제 인터럽트 방식에서의 우선순위 식별회로에서 우선순위가 가장 높은 인터럽트 요청신호는? (0) 2021.08.21 [문제해설] HRN 방식으로 스케줄링 할 경우, 입력된 작업이 다음과 같을 때 우선순위가 가장 높은 것은? (0) 2021.08.18 [문제해설] 양자화 스텝수가 5비트이면 양자화 계단수는? (0) 2021.08.15 [문제해설] 다음 그림에서 “트리의 차수(Degree)”는? (0) 2021.08.14 [문제해설] 다음 어셈블리언어 코드의 실행 결과로 도출되는 레지스터 al의 값은? (단, 모든 명령어와 상수, 레지스터 이름은 인텔 기반 PC의 어셈블리언어 체계를 따른다고 가정한다.) (0) 2021.08.14