-
[문제해설] 다음 어셈블리언어 코드의 실행 결과로 도출되는 레지스터 al의 값은? (단, 모든 명령어와 상수, 레지스터 이름은 인텔 기반 PC의 어셈블리언어 체계를 따른다고 가정한다.)전자계산기조직응용기사/필기 기출문제 해설 2021. 8. 14. 00:05반응형
전자계산기조직응용기사 필기 기출문제 (1과목 전자계산기프로그래밍-어셈블리어)
다음 어셈블리언어 코드의 실행 결과로 도출되는 레지스터 al의 값은? (단, 모든 명령어와 상수, 레지스터 이름은 인텔 기반 PC의 어셈블리언어 체계를 따른다고 가정한다.)
COUNT = 5
mov al, COUNT
COUNT = 10
mov al, COUNT
COUNT = 100
mov al, COUNT① 5 ② 10
③ 100 ④ 115
- 문제해설 -
대부분의 학습자들이(전공자, 비전공자 모두) 어셈블리어를 보면 두려워합니다. 그 이유는 어셈블리어만을 배울 기회가 별로 없기 때문입니다. 그것을 배려한 것인지, 기출문제들을 보면 굉장히 쉽습니다. 너무 쉬워서 문제를 풀고 나면 혹시 내가 모르는 함정이 아닐까? 하는 의심이 생깁니다.
각설하고, 어셈블리어에 대해서 간단하게 설명하겠습니다.
어벤져스의 캐릭터, 캡틴아메리카의 유명한 대사 "어벤져스 어셈블~"을 아시죠? 물론, 의역하면 '우리 뭉쳐서 타노스 무찌르자~' 겠지만, 그냥 직역하면 '어벤져스 집합!' 정도가 되겠죠.. 이처럼 어셈블리어는 니모닉을 집합시킨 것입니다. 다른 고급 언어들처럼 복잡한 문법 같은건 없습니다. 더구나 문제들이 쉽기 때문에, 조직응용기사에서 어셈블리어 코드로 매크로까지 다룰 일은 없으니, 간단한 니모닉 몇개만 알고 있고, 니모닉이 나열된 순서대로 의미 풀이만 하면 됩니다.
그럼 어셈블리어 코드 문제로 나올만한 니모닉 몇개를 살펴보겠습니다.
니모닉 의미 ADD + (덧셈) SUB - (뺄셈) MUL × (곱셈) DIV ÷ (나눗셈) PUSH 스택 입력 POP 스택 출력 MOV 자료 전송 몇개 없죠? 더구나 너무 쉽습니다. 니모닉은 프로그래머가 알아보기 쉽게 만든 기호이기 때문입니다.
문법이라고 말하기 민망한 어셈블리어의 문법을 살펴보겠습니다.
OP code Operand 이렇게 어셈블리어는 OP 코드와 오퍼랜드로 구성됩니다. OP 코드는 명령어입니다. 위에 표로 만든 니모닉이 오는 자리입니다. 그리고 오퍼랜드는 레지스터, 메모리 주소, 값(value) 등이 오며, 콤마로 구분된 갯수에 따라, 0주소, 1주소, 2주소, 3주소 명령어로 형식을 분류하기도 합니다.
그럼 문제에서의 코드를 살펴보겠습니다.
1 COUNT=5 2 mov al, COUNT 3 COUNT=10 4 mov al, COUNT 5 COUNT=100 6 mov al, COUNT
1라인 : COUNT = 5
변수 COUNT에 '5'라는 값으로 초기화 시킵니다. 그럼 COUNT의 값은 5가 됩니다.
2라인 : mov al, COUNT
레지스터 al에 변수 COUNT의 값을 전송합니다. al의 값은 5가 됩니다.
3라인 : COUNT=10
변수 COUNT에 '10'이라는 값으로 초기화 시킵니다. 그럼 COUNT의 값은 10가 됩니다.
4라인 : mov al, COUNT
레지스터 al에 변수 COUNT의 값을 전송합니다. al의 기존 값은 지워지고, al의 값은 10가 됩니다.
5라인 : COUNT=100
변수 COUNT에 '100'이라는 값으로 초기화 시킵니다. 그럼 COUNT의 값은 100가 됩니다.
6라인 : mov al, COUNT
레지스터 al에 변수 COUNT의 값을 전송합니다. al의 기존 값은 지워지고, al의 값은 100가 됩니다.
어셈블리어는 순차적 프로그래밍 언어이기 때문에, 이처럼 순서대로 읽으면됩니다.
그럼 문제에서 묻는 것은 레지스터 al의 값이니, 마지막 6라인이 실행한 후의 al의 값은 100입니다.
그래서 정답은 3번입니다.
https://youtube.com/playlist?list=PLboXycXmAIDuukQ2A6EvMZI-x1IMy3Xc-
반응형'전자계산기조직응용기사 > 필기 기출문제 해설' 카테고리의 다른 글
[문제해설] 양자화 스텝수가 5비트이면 양자화 계단수는? (0) 2021.08.15 [문제해설] 다음 그림에서 “트리의 차수(Degree)”는? (0) 2021.08.14 [문제해설] 다음 C언어로 작성한 프로그램의 실행 결과로 가장 옳은 것은? (0) 2021.08.13 [문제해설] 20[MHz] 발진기를 사용하는 CPU에서 10개의 T 스테이트(State)가 필요한 명령의 명령 사이클 시간(Instruction Cycle Time)은 얼마인가? (0) 2021.08.12 [문제해설] 스케줄링 하고자 하는 세 작업의 도착시간과 실행시간은 다음 표와 같다. 이 작업을 SJF로 스케줄링 하였을 때, “작업번호 2”의 종료 시간은? ( 단, 여기서 오버헤드는 무시한다.) (0) 2021.08.11