링커란 무엇인가 ? 어셈블러가 생성한 파일들을 하나의 실행파일로 합치는 유틸리티 프로그램이다.
디버거란 무엇인가 ? 프로그램 실행 동안 프로그램을 단계적으로 실행하고 레지스터와 메모리를 살펴보게 한다.
어셈블리언어는 기계어와 어떠한 관계가 있는가 ?
어셈블리 언어는 기계어와 일대일 대응관계를 갖는다
고급언어는 어셈블리 언어와 어떠한 관계를 가지는가 ?
고급언어는 어셈블리언어와 일대다 관계를 갖는다
이식성의 정의
소스 프로그램을 컴파일하여 다양한 컴퓨터에서 실행 될 수있는 언어를 이식성이 있다고 한다
따라서 어셈블리어는 이식성이 없다
해독
L1 의 각 명령어는 L0 언어로 작성된 프로그램에 의해서 해독되어 실행
변환
L0 프로그램에 의해 L1 전체가 L0 프로그램으로 변환됨
가상 기계 레벨에 대해 적으시오
레벨 1. 디지털 논리 하드웨어
레벨 2. 명령어 집합 구조
레벨 3. 어셈블리어
레벨 4. 고급언어
기계어는 어느 레벨의 가상 기계에서 사용되는가 ?
레벨 2. 명령어 집합 구조
가중 위치 표기법에 대해서 설명하시오
우리가 흔히 쓰는 2진수에서 10진수 변환 공식. ..
11111111+00000001 = ?
if 8bit, 00000000
1byte- 8 word-16 dword-32 qword-64
16진수의 2의 보수를 구하시오.
16진수를 쉽게 반전시키는 방법은 자리 숫자를 15에서 빼는것이다 그리고 1을더한다(마지막비트에)
ex) 6A3D - - > 9 5 C 2 + 1 - - > 9 5 C 3
아스키 문자 집합은 몇비트 정수가 문자에 저장되는가 ?
7bit
ANSI 문자집함은 몇비트 문자 집합을 정의하는가 ?
8bit 256문자
유니코드 표준을 제정한 이유는 ?
매우 다양한 국제 언어를 표현할 필요성이 생김으로 인하여
256bit 부호 있는 정수를 사용하여 나타낼수 있는 가장 큰 양수는 무엇인가 ?
2^255-1
버스에 대해서 설명하시오
데이터를 컴퓨터의 한 부분에서 다른 부분으로 전송하는 병렬 와이어 이다.
버스의 종류에 대해 설명하시오
데이터 버스 , 입출력 버스 , 제어 버스 , 주소 버스
메모리 접근 속도를 높이기 위해 무엇을 사용하는가?
cache memory
고속 캐시 메모리에 대해 설명하시오
프로그램이 블록 데이터를 처음으로 읽을 때에 캐시에 복사본을 남겨둔다
그래서 같은 데이터를 두번째로 읽을 필요가 있을때 캐시에서 찾는다
x86 동작모드에 대해 설명하시오
보호모드 실제주소모드 시스템 관리모드
보호모드에 대해서 설명하시오
보호모드는 모든 명령어와 특징사용가능하고 세그먼트라고 하는 분리된 메모리 영역이 주어지며 지정된 세그먼트 바깥의 메모리를 참조하는것을 방지한다
실제주소 모드
다른 모드로 전환하는 능력을 가지고 있으며
시스템 메모리와 하드웨어 장치에 직접 접근할 필요가 있는 프로그램을 실행하는 데 사용됨
시스템 관리모드
시스템 보안과 같은 기능을 구현하는 방법을 제공

범용 레지스터에 대해 설명하시오
범용 레지스터는 계산과 데이터 전송에 주로 사용됨
EAX는 곱셈과 나눗셈명령어에서 자동으로 사용된다. 확장 누산기 레지스터 라고함
루프 카운터로 ECX 사용
ESI EDI 는 고속 메모리 전송명령어에서 사용됨 확장소스인덱스 확장 목적지 인덱스라고함
EBP는 사용되지 않아야 한다
세그먼트 레지스터
real address 모드에서 16비트 세그먼트 레지스터는 세그먼트라고 하는 미리 할당된 메모리 영역의 시작주소를 가르킨다.
명령어 포인터 EIP
실행할 다음 명령어의 주소 포함
EFLAG 레지스터
개별적인 플래그를 검사한다
CF 부호없는 산술 연산 결과가 너무 커서 저장 불가일때 1
OF 부호있는 산술 연산 결과가 너무 크거나 작아 저장 불가면 1
SF 음수면 1
ZF 연산 결과 0 이면 1
PF 패리티 플래그
인텔 8086 프로세서는 CISC 이다.
CISC 의 장단점을 설명하시오
비교적 오래걸린다는 것이 단점이며 장점은 명령어의 커다란 모음이라 정교한 동작 수행
RISC 의 장단점
비교적 적은수의 그리고 빠르게 실행 , 명령어의 작은 집합이라 복잡한 동작 필요시 명령어 조합
REAL address 모드에서는 20비트를 주소를 사용하여 00000-FFFFF 즉 1MB(2^20)
20비트 선형 주소 계산에 대해 설명하시오
20비트 선형 주소를 직접 사용할 수 없어서 두개의 16비트 정수를 사용하여 주소를 나타낸다
보호모드는 0부터 FFFFFFFF 즉 32비트 2^32=4GB
균일 세그먼트 모델에 대해서 설명하시오
균일 세그먼트 모델에서 모든 세그먼트는 컴퓨터의 32비트 물리적 주소 공간 전체에 맵핑된다. 세그먼트 서술자의 베이스 주소는 메모리의 첫번째 주소를 가르킨다
다중 세그먼트 모델에 대해서 설명하시오
다른 프로세서들이 사용하는 모든 세그먼트와 구별될 수 있다.
각 세그먼트는 자신의 주소 공간을 갖는다.
페이징에 대해 설명하시오
페이징은 동시에 실행중인 모든 프로그램이 사용하는 전체 메모리가 컴퓨터의 물리적 메모리보다 훨씬 더 커도 되게 한다. 운영체제가 맵핑하는 페이지의 전체 집합을 가상 메모리라고 한다.
실제 주소모드에서 다음 16진수 세그먼트-오프셋 주소를 선형주소로 변환하시오
0CD1:02E0
0CD1
+02E0
0CFF0h
MASM 균일 메모리 모델에서 ㅁ여령어와 변수의 주소는 몇 비트를 갖고 있는가?
32BIT
장치 드라이버에 대해 설명하시오
장치드라이버는 운영체제가 하드웨어 장치와 직접 통신을 하는 저수준 서브루틴의 집합이다
병렬포트는 한 장치에서 다른 장치로 8 또는 16 비트를 동시에 전송한다
어셈블러의 진수가 될 수 있는 것들을 나열하라
h (16) r (,부호화실수) q/o(8진수) t (10 ) d(10) b (2) y(2)
진수가 없으면 정수상수는 몇진수로 간주하는가 ?
10진수
정수 수식은 실행시간에 수행되는 수식이 아니다 어셈블 할때에 계산된다
예약어의 여러 유형을 적어라 ( 예약어는 MASM이 만든거)
명령어 니모닉 (MOV ADD MUL...)
레지스터 이름
디렉티브 ( MASM에게 어떻게 어셈블하는지 알려주는 들)
연산자
미리정의된 기호(@DATA 같은)
식별자 ( 프로그래머가 선택한 이름 )
1-247개 사이의 문자
대소문자구분안함
첫번째 문자는 알파벳 ( _ ) @ ? $ 그 다음에 숫자가 올 수 있다
모든 키워드와 식별자에 대해 대소문자 구별하려면 어떤 옵션을 줘야하는가?
-Cp
디렉티브에 관해서 설명하시오
디렉티브는 어셈블러가 인식하여 그것에 따라 동작하는 명령이다. 실행시간에 실행되지 않음
ex( .data .code)
세그먼트를 정의하시오
.data .code ..
명령어니모닉
명령어를 식별하기 위한 짧은 단어이다
MOV ADD...
주석
한줄 : 세미콜론 (;)
블록 : COMMENT 와 사용자정의기호
EX) COMMENT *~~~~~*
NOP 명령어
1바이트 프로그램 저장공간을 차지하며 아무런 동작도 안함
코드를 짝수 홀수로 정렬
TITLE 디렉티브는 줄 전체가 주석임을 나타냄
16진수 코드 CR/LF 또는 줄끝문자를 나타내는 코드는 ?
0Dh 0Ah
리틀엔디언을 설명하시오
비초기화 데이터 선언에 대해 설명하시오
.DATA? 는 초기화 되지 않은 큰 블록 DATA를 정의할때 크기를 줄여준다
16bit 부호있는 정수를 위한 비초기화 데이터 선언하시오
val1 sword ?
현재 위치 카운터 기호는 ?
$
문자열 길이 계산하는 방법
list byte 10,20,```
listsize - ($ - list)
EQU 디렉티브를 사용하는 3가지 형식을 적으시오
name EQU expression ; 10* 10
name EQU symbol ;
name EQU <text>
ex)
matrix1 equ 10*10
matrix2 equ <10*10> ----> 10*10 as text
TEXTEQU 디렉티브 사용하는 3가지 형식 적으시오
name TEXTEQU <text>
name TEXTEQU textmacro
name TEXTEQU %constExpr (수식)
REAL-ADDRESS 모드 프로그래밍 장점과 단점
ms dos 함수 호출 가능 메모리 접근 제한 없음
단점 : 세그먼트와 오프셋 인식해야함
수정사항
DS값을 프로그램의 데이터 세그먼트 시작주소로 초기화해야함
mov ax,@data
mov ds,ax
MOV 명령어의 규칙을 말하시오
1. 두 피연산자는 같은 크기여야한다
2. 두 피연산자가 모두 메모리 피연산자일 수 는 없다
3. CS EIP IP는 목적지 피연산자일 수 없다
4. 즉시값이 세그먼트 레지스터로 이동될 수 없다
MOVZX명령어에 대해 설명하시오
피 연산자를 목적지 피연산자로 복사하고 값을 16BIT 또는 32BIT로 제로확장한다(0으로채움) 부호없는 정수에만 사용된다
MOVSX명령어에 대해 설명하시오
마찬가지로 MOVZX와 같이 부호확장하는데 부호비트로 채워진다. 부호있는 정수에만 사용된다
직접 오프셋 피연산자에 대해 설명하시오
변수의 이름과 상수를 더한 형태로 표현되는 메모리 피연산자를 말하며
어셈블러가 offset주소로 변환함 .
ex) mov al,arrayB+1 ; arrayB의 두번째 원소값 (주소가 아님)
피연산자의 세 가지 유형은 무엇인가
레지스터 즉시값 메모리
INC DEC 명령어는 Carry Flag (CF)에 영향주지 않는다 나머지는 다 영향준다
ADD SUB NEG 는 모든 플래그
덧셈 연산에서의 Carry Flag 는 목적지 피 연산자의 최상위 비트에서 일어나느 캐리를 복사한 값이다
뺄셈 연산에서의 Carry flag는 작은 부호없는 정수에서 큰 부호없는 정수를 뺄때 1
댓글 없음:
댓글 쓰기