2016년 10월 17일 월요일

ASSEMBLY 161017


CISC 의 단점 :
복잡한 명령어를 해독하고 실행하는 데 시간이 비교적 오래 걸린다
ECX 레지스터는 어던 특별한 목적으로 사용되는가 ?
루프카운터
스택 포인터 (ESP)이외에 어떤 다른 레지스터가 스택에 있는 변수를 가르키는가?
EBP
어떤 인텔 프로세서가 IA-32계열의 첫 번째 프로세서인가 ?
THE Intel 80386
실제 주소모드에서
주소 8000:0250 은 8000에서 시작하는 세그먼트 내의 오프셋 250을 나타내며
이 주소의 선형주소는 80250h 이다.
실제 주소모드는 선형주소가 20비트이다
프로그램은 선형주소를 직접 사용할 수 없어서 두 개의 16비트 정수를 사용하여
주소를 나타낸다 세그먼트 - 오프셋 주소는 다음을 포함한다
16비트 세그먼트값 - 세그먼트 레지스터 중 하나에 위치한다
16비트 오프셋 값

cpu는 세그먼트-오프셋 주소를 20비트 선형 주소로 자동으로 변환
변수의 16진수 세그먼트-오프셋 주소가 08F1:0100 이라고 하자
cpu는 세그먼트 값에 16을 곱하고 곱에 변수의 오프셋을 더한다
08F1h X 10h = 08F10h

균일 세그먼트 모델
세그먼트 서술자의 베이스 주소는 사용할 수 있는 메모리의 첫 번째 주소를 나타낸다
x86 구조 기반의 모든 최신 운영체제는 균일 세그먼트 모델을 사용
[전역 서술자 테이블]
다중 세그먼트 모델
[지역 서술자 테이블]

PCI 버스 는 cpu와 여러 시스템 장치간에 연결 브릿지 제공
PCI 고속 버스는 장치와 메모리 , 프로세서간에 양방향 직렬연결 제공

ROM : 영구적으로 칩에 구워지며 삭제될 수 없다
DRAM : 주 메모리, 프로그램이 실행 중일때 프로그램과 데이터가 DRAM에  저장
SRAM : 고속 캐쉬 메모리용
VRAM : 비디오 저장

범용 직렬 버스 (USB)
지원장치간의 지능적이고 고속의 연결

장치드라이버
장치드라이버는 운영체제가 하드웨어 장치와 직접 통신을 하는 저수준 서브루틴

.code 디렉티브는 코드 세그먼트의 시작을 나타냄
main proc 는 프로시저의 시작

INCLUDE 디렉티브의 의미는 무엇인가 ?
IRVINE32.inc 로부터 필요한 정의와 셋업을 가져온다
어떤 문장이 프로그램을 종료시키는가 ?
exit

직접 오프셋 피연산자
mov al,arrayB
mov al,[arrrayB+1]
arrayB+1과 같은 수식은 유효 주소라고 한다

뺄셈 carry 플래그
1. 소스 피연산자의 부호를 바꾸고 목적지 피 연산자에 더한다
2. MSB의 캐리의 출력을 반전시켜서 carry로 복사한다
mov al,1
sub al,2
00000000
11111110
11111111
MSB 캐리가 0이므로 반전 1

패리티 플래그
1이 짝수면 1

movsx edx,var1 . ; varl= -4
FFFFFFFCh


댓글 없음:

댓글 쓰기