Assembly 05 방호남 07 반지훈 09 박상욱
목 차 정의 / 특징 Assemble & Linking 메모리 세그먼트 / 오프셋 레지스터 구성요소 기본 명령어 Hello World!
정의 / 특징 기계어와 1:1로 대응되는 명령을 기술하는 언어 메모리 상의 데이터에 접근/조작 하드웨어에 직접 액세스하여 제어 가능 크기가 작고 빠르다
Assemble & Linking
메모리 기본 단위는 1바이트 각 바이트마다 유일한 주소값 메모리에 저장되어지는 데이터는 모두 숫자 -> 문자는 ASCII 혹은 Unicode
Segment / Offset 1MByte 이상의 메모리를 사용하기 위한 개념 Segment 주소 :물리메모리에서 차지하고 있는 영역 Offset :Segment의 시작점으로부터 떨어져있는 거리
레지스터 CPU에서 명령을 처리하기 위해 혹은 처리하고난 데이터를 보관하는 장소 크키가 작다
범용 레지스터 각 16 비트로 AX, BX, CX, DX가 존재 AH(High) + AL(Low) = AX 80386 이후 각 32 비트로 EAX ~ EDX가 존재 EAH, EAL은 없다. AX: 주로 산술 계산과 입출력을 위해 사용 BX: 주소 지정시 포인터로 사용 CX: 루프의 카운트를 위해 사용 DX: 다양한 데이터, 문자출력에 사용
세그먼트 레지스터 프로그램의 각 부분에서 사용되는 데이터를 표시 (E)CS: 프로그램의 실제 코드가 있는 메모리 시작 주소 (E)DS: 데이터를 저장된 메모리 시작주소 (E)SS: 함수가 호출될 경우 돌아가기 위한 반환점 주소 (E)ES: 여분. 비디오나 문자열을 다룰 때 사용
인덱스 & 스텍 레지스터 (E)DI: 메모리 등의 이동시에 목적지 주소를 저장 (E)SI: 메모리 등의 이동시에 원본 주소를 저장 (E)SP: 스텍의 가장 윗 부분을 가리킨다 (E)BP: 스텍의 가장 아랫 부분을 가리킨다
기타 레지스터 (E)IP: 다음에 실행될 명령의 주소를 가짐 Flag: 프로그램의 상태를 나타내기 위해 사용
구성요소 예약어 식별자(변수) 디렉티브 명령어 Label Mnemonic Operand ;Comment
기본 명령어 MOV: 데이터 이동 (대입) MOV AX, 4C00H PUSH: 오퍼랜드의 내용을 스택에 쌓는다 PUSH AX POP: 스택으로부터 값을 뽑아 낸다. POP BX ADD: 오퍼랜드의 두 값을 더한다. ADD AX, BX SUB: 왼쪽에서 오른쪽의 값을 뺀다. SUB AX, 5H
기본 명령어 RET: CALL 명령 실행 후 복귀 RET (#) LEA: 메모리의 Offset값을 레지스터로 로드 LEA EAX, msg INT: 도스 인터럽트 호출 MOV AH, 09H INT 21H JMP: 점프, 프로그램의 흐름을 바꿈 (cf. GOTO) JMP <???> CALL: 프로시져 호출 CALL <proc name> RET: CALL 명령 실행 후 복귀 RET (#)
Hello world
질 문