제 6 장 8086 어셈블러 설계.

Slides:



Advertisements
Similar presentations
신도초 5 학년 4 반 김정수 지도교사 전혜원 선생님.  산출물 주제를 정하다가 문득 낮보다 왜 밤이 더 소리가 잘 들리는지 궁금해서 결정했다. 처음에 는 물질의 종류에 따른 소리의 크기로 하려 그랬 지만 실험이 너무 간단한 것 같아서 재료를 늘리 거나 온도를 높이려고.
Advertisements

내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
의료자원 규제현황과 개선방향 자원평가실. 의료자원 관리 개요 규제개혁 토론과제.
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
성결 어린이 영등포교회 유년부 정답은 뒷면에 제 11-31호 2011월 8월 14일 어디로 가세요?
연 합 남 전 도 회 월 례 회 1부 예배- 찬 송 장 다같이 2011년 1월 2일 1부 예배- 찬 송 장 다같이 기 도
Ⅵ. 빛(단원학습목표).
사 업 계 획 2011년 제1호 - 2월 1일 2011 주 안에서 소통하며 화합하고 참여하며 헌신하는 남신도회
Shellcode 작성 김영성.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
4장 어셈블리 프로그램 작성의 기본 어셈블러 어셈블리 언어 요소 예제 프로그램 데이터 정의
년 원자력지식확산 연구사업 자문-연구진 제 1차 세미나 자료 한국기술경영연구원
통로이미지㈜ 마케팅실 신입/경력 모집 ◎ 모집부분 및 자격요건 ◎ 채용인원 ◎ 전형절차 ◎ 제출서류 ◎ 연봉 ◎ 사전인터뷰
고교평준화의 득과 실 김영주 이지영 최윤영.
유대력과 성서력 유대 절기.
제4장 어셈블리어.
제4장 어셈블리어.
알기 쉽게 해설한 Java 8th edition
Lecture #12 인터럽트 Interrupt.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
Lecture #5 어셈블리어 (2) 매크로 어셈블리어 시스템프로그래밍.
Lecture #7 어셈블리어 (4) 매크로 어셈블리어 시스템프로그래밍.
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
제 7 장 링커와 로더 설계.
제 1 장 마이크로프로세서의 기본동작.
Lecture # 어셈블러 설계.
Ch.3. 지구화학을 위한 열역학 제 1 법칙 The First Law 에너지 보존 법칙
어셈블리 문법 보강 4월 10일.
Lecture #8 어셈블리어 (5) 매크로 어셈블리어 시스템프로그래밍.
영덕풍력발전단지 준공 기념식 행사(안) 경영기획실.
제 5장 매크로 프로세서 설계.
제 5장 매크로 프로세서 설계.
어셈블리어 및 실습 금 1,2 (314) / 금 3,4 (307) RTDCS 이 종 태
제 6장 8086 어셈블러 설계.
냉난방 시스템 설계 논리회로 설계 및 실험 텀 프로젝트 제안서 16조 김태광 정상훈.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
명령어 구조 컴퓨터 하드웨어의 구성 프로그램 명령어 프로그램 실행 동작.
명품 C++ 프로그래밍 1장. C++ 시작.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리

7장: 빛의 간섭과 회절 빛의 간섭 단일슬릿과 회절 회절격자 – 더 선명해진 간섭무늬.
Java 8장. 상속 public class SumTest {
제 장 학습내용 C 언어에서의 인터럽트 사용 레지스터를 위한 자료구조 인터럽트를 수행하기 위한 명령어
어셈블리어 (2) 매크로 어셈블리어 시스템 프로그래밍 - Lecture #4
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
maria db JDBC PROGRAMMING3
자전거를 배우려면 안장에 올라가 페달을 밟아라.
우리는 부모를 닮지만, 왜 똑같지는 않을까? 유전적 다양성 독립 연관과 교차 무작위 수정.
연구를 위한 준비 참고문헌 카드 만들기.
Lecture #9 매크로 프로세서 설계 & 구현.
제 2 장 어셈블러(Assemblers) 2.1 기본 어셈블러 기능 단순 SIC 어셈블러
[INA470] Java Programming Youn-Hee Han
제안 목적 고객성향 분석으로 매출 증대 유사업체 분석으로 신상품 홍보 원가요소 분석 및 피드백으로 원가율 관리
청각기관의 구조와 기능2 옥정달.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
수학8가 대한 108~110 쪽 Ⅴ. 부등식 2. 일차부등식 §1.일차부등식의 풀이(5/10) 일차부등식의 풀이.
기술가정 2학년 1학기 2.재료의 이용>1) 목재,플라스틱,금속재료의 특성>11/15제품의 구상
세계영화사 입문 3강 소련영화의 혁명 소비에트 몽타주.
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
Report #4 (1) (due 4/4) 문제 #1 3개의 막대 A, B, C와 원판 n개를 전달받아 Hanoi 탑 문제를 해결하는데 필요한 원판의 이동 회수를 구하여 반환하는 hanoi_tower(n, A, B, C)를 작성하라. 여기서 원판 n은 막대 A에 쌓여 있고.
볼링 지도 – 학습 과정안.
제 5 장 82C55를 이용한 포트 출력.
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
Makefile
제 10 장  코드 생성.
Report #3- 문제 1 Set(집합) 추상 데이터 타입을 정의하고, 다음과 같은 연산자들을 포함시켜라. 여기서 S, S1, S2는 집합을 나타내고, i는 집합 원소를 나타낸다. 연산 의미 create() Return {} insert(S, i) If i є S then.
Presentation transcript:

제 6 장 8086 어셈블러 설계

제 6 장 학습내용 어셈블러의 개요 레이블,외부기호,내부기호 개념 프로그램의 실행 과정 어셈블러,링커,로더의 역할 이중패스의 필요성 및 기능 어셈블러의 역할 패스1, 패스2의 기능 명령어의 상대주소와 기호표의 생성 프로그램의 적재와 어셈블러 지시어 패스1, 패스2의 알고리즘 패스1, 패스2 각각에 관련된 데이터베이스

어셈블러의 개요 어셈블리어 명령어의 번역 기계어와 일대일 대응으로 번역 작업과정이 컴파일러보다 간단 일반적으로 패스1과 패스2로 구성

프로그램의 실행과정 실행 적재모듈 주기억장치 원시 모듈 어셈블러 목적 모듈 목적모듈 어셈블러 원시 모듈 목적 모듈 링커 원시 *.asm *.obj 실행 적재모듈 로더

어셈블러와 링커/로더 원시프로그램이 커지면 여러 개의 원시모듈로 나누어 작성 프로그램 및 유지보수가 용이 링커: 여러 개의 목적모듈을 연결하여 적재모듈을 생성 로더: 적재모듈을 주기억장치에 적재

어셈블러와 링커/로더 어셈블러와 링커/로더를 분리한 이유 기억 장소의 낭비 시간 낭비 프로그램의 실행동안 어셈블러가 기억장소에 있어야 하므로 시간 낭비 번역된 목적 프로그램이 저장되어 있지 않으므로 실행시 마다 번역 과정을 수행

어셈블러의 입력과 출력 어셈블러는 링커와 로더가 필요로 하는 정보 제공 원시 모듈 어셈 블러 목적 어셈블러는 링커와 로더가 필요로 하는 정보 제공 링커: 외부참조 테이블: 다른 모듈에 정의된 기호를 참조하기 위한 수단 로더: 재배치시 변경할 주소 테이블

어셈블러,링커,로더의 역할 목적모듈 AA 원시모듈 AA 어셈 블러 원시모듈 BB 목적모듈 BB 어셈 블러 기억장치 적재모듈 (상대(목적코드)주소) 0 MOV ... 2 ....... ... MOV...... ......... . 11 원시모듈 BB 목적모듈 BB 어셈 블러 ADD...... ......... (상대(목적코드)주소) 0 ADD ... 2 ....... ... . 7 기억장치 물리 주소 적재모듈 100 MOV.... ... ADD.... (상대(목적코드)주소) 0 MOV ... 2 ....... ... 12 ADD ... 로더 . 19 102 링 커 112 ... 100번지부터 적재 119

외부기호와 내부기호 외부기호(external symbol) * 외부 모듈에서 정의된 기호나 프로그램 이름 내부기호(internal symbol) * 같은 모듈에서 정의된 기호

외부기호 PUBLIC symbol[, …] 여기 프로그램을 외부사용자가 연결하여 수행하여도 좋다. 내가 정의한 것을 남이 사용하도록 허용 EXTRN name:type[, …] 어떤 프로그램을 사용하고자 한다. 그 프로그램을 나의 프로그램과 연결시켜 프로그램을 완성하라. 남이 정의한 것을 내가 사용하도록 정의

외부기호 EXTRN name:type[, …] name : 데이터 세그먼트 내의 심볼 type : BYTE, WORD, DWORD.. name : procedure 이름 type : NEAR, FAR name : EQU, = 으로 정의된 상수 type : ABS

링커와 로더의 역할 링커의 역할 * 모듈들 간의 결합 * 외부기호의 주소값을 결정 로더의 역할 * 결합된 모듈의 적재 * 기호의 절대주소 결정

재배치의 개념 상대주소를 절대주소로 전환 재배치 정보는 어셈블러가 생성 로더는 재배치 정보 이용 재배치는 재배치 로더가 담당

이중패스의 필요성 전향참조의 경우 MOV AX, FOUR ADD AX, FIVE MOV SUM, AX ... FOUR DW 4 FIVE DW 5 SUM DW ?

이중패스 어셈블러의 기능 기호표 목적 프로그램 원시 프로 패스2 그램 패스1 링커 오류 및 기타 정보 명령어표 원시 프로그램 사본 패스2 패스1 링커 오류 및 기타 정보 원시프로그램 오류정보 등 명령어표

0000 MAIN SEGMENT ASSUME CS:MAIN, DS: MAIN 0000 8C C8 MOV AX,CS 0002 8E D8 MOV DS, AX 0004 A1 0012 mov ax, four 0007 03 06 0014 add ax, five 000B A3 0016 mov sum, ax 000E B4 4C mov ah, 4ch 0010 CD 21 int 21h 0012 0004 four dw 4 0014 0005 five dw 5 0016 0001 sum dw 1 0018 MAIN ENDS END

어셈블러의 역할 명령어 처리 * 기호표의 작성 어셈블러 지시어 처리 * 지시어표 지시대로 처리 * 명령어에 상응하는 기계코드 생성 * 기호를 기호값으로 대체 어셈블러 지시어 처리 * 지시어표 지시대로 처리

패스1의 기능 명령어표를 참조 명령어들의 상대주소 결정 기호의 재배치 여부 결정 각 기호표 작성

패스2의 기능 명령어 자체를 2진코드로 대체 명령어의 기호대신 기호표에서 찾은 값으로 대체

명령어의 상대주소 상대주소 2 4 6 8 10 원시 코드 MOV AX, FOUR ADD AX, FIVE MOV SUM, AX 2 4 6 8 10 원시 코드 MOV AX, FOUR ADD AX, FIVE MOV SUM, AX FOUR DW 4 FIVE DW 5 SUM DW ? END

기호표의 생성 기호 FOUR FIVE SUM 값(주소) 6 8 10 재배치 여부 1

번역된 코드의 형태 상대주소 2 4 6 8 10 번역된 코드(연상기호) MOV AX, 6 ADD AX, 8 MOV 10, AX 2 4 6 8 10 번역된 코드(연상기호) MOV AX, 6 ADD AX, 8 MOV 10, AX 4 5 -

기억장치에 적재된 형태 주기억장치 100 102 MOV AX, 106 104 106 ADD AX, 108 108 110 5

어셈블러지시어의 역할 어셈블러가 해야 할 역할 지정 FOUR DW 4 TEN EQU 10 상대주소 6에 4를 저장 번역되지 않음 TEN EQU 10 TEN의 값으로 10을 저장 10은 주소가 아니며 상수(재배치할 필요가 없음) TEN을 만나면 10으로 변환

패스1의 알고리즘 procedure pass 1 LC ← 0; repeat{ 다음 명령어를 읽음; if (END 명령어?) 패스1끝; if (기호가 있는가?) if (이미 기호표에 존재?) 이중기호이므로 오류표시;

패스1의 알고리즘 else{ 기호는 기호표에 기입; LC의 값을 기호표에 기입; } LC ← LC + 명령어의 길이: end procedure

패스2의 알고리즘 procedure pass 2 LC ← 0; repeat 다음 명령어를 읽음; if (END 명령어?) 어셈블 끝; if (명령어가 명령어표에 있는가?){ 명령어표에서 기계어코드를 찾음; 기호표에서 기호의 값을 찾음;

패스2의 알고리즘 명령어를 기계어코드로 완성 LC ← LC + 명령어의 길이; } else 정의되지 않은 명령어 오류표시; end procedure

어셈블러 지시어의 처리 if (어셈블러 지시어?) { if (EQU) 기호를 기호표에 기록; 지시어값을 기호값으로 대체; if (DW<값>) 주어진 값만큼 LC증가;

어셈블러 지시어의 처리 if (DW<?>) 확보할 크기 계산 후 LC증가; } else { 명령어표에서 명령어 길이 탐색; LC ← LC + 명령어의 길이:

패스1 순서도 패스1시작 위치계수기 LC←0 다음 명령어를 읽음 기호를 기호표에 기입 LC값을 예 기호값으로 기입 패스1끝 명령어:END 아니오 아니오 기호정의가 있는가? 예 아니오 예 이미 기호 표에 존재 이중으로 정의한 기호 오류표시 LC←LC+명령어의 길이 확장

패스1의 상세 흐름도 어느 종류? 예 어셈블러 지시어 아니오 EQU DW 값 DW ? 명령어표에서 명령어 길이를 찾음 기호를 기호표에 기입하고 이 지시어의 값을 기호의 값으로 한다 주어진 데이터의 크기만큼 LC를 증가시킴 확보해야 할 기억장소의 크기를 계산하여 LC를 증가시킴 LC←LC + 명령어의 길이

패스2 순서도 패스2시작 위치계수기 LC←0 다음 명령어를 읽음 예 명령어:END 패스2끝 아니오 정의되지 않은 명령어, 오류표시 명령어가 명령어표에 있는가? 아니오 예 명령어에서 기계어 코드를 찾음 명령어를 기계어 코드로 완성하여 출력 기호표에서 기호값을 찾음 LC←LC+명령어의 길이 확장

패스2의 상세 흐름도 어느 종류? 예 어셈블러 지시어 EQU 아니오 DW <값> DW ? 연상항에 주어진 명령어표에서 명령어 길이를 찾음 DW <값> DW ? 연상항에 주어진 상수값을 기계어 코드로 출력한다 확보해야 할 기억공간의 크기 결정 기호표에서 기호값을 찾음 명령어를 기계어 코드로 완성하여 출력한다 LC←LC+ 데이터 크기 LC←LC+ 확보해야 할 공간 크기 LC←LC+명령어의 길이

패스1에 관련된 데이터베이스 입력 원시프로그램, 위치계수기(변수) 어셈블러 지시어 & 명령어 표 출력 기호표, 오류정보, 윈시프로그램 사본

패스2에 관련된 데이터베이스 입력 원시프로그램,위치계수기(변수) 어셈블러지시어&명령어표, 기호표 출력 목적 프로그램, 오류정보

명령어표의 예 2진 코드 길 이 2 연상 코드 ADD MOV ... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 d w mod reg r/w 2 1 0 0 0 1 0 d w mod reg r/w ...

단일패스 어셈블러 단순전향참조 JMP OVER의 처리 10 ADD AX, BX 12 JMP 0 14 MOV... ... 기호 값 확정표기 주소 OVER - 0 12 10 ADD AX, BX 12 JMP 0 14 MOV... ... 30 OVER MOV...

단일패스 어셈블러 다수전향참조처리 10 ADD AX, BX 12 JMP 0 END 14 MOV … 16 JMP 12 ... 기호 값 확정표기 주소 OVER - 0 20 10 ADD AX, BX 12 JMP 0 14 MOV … 16 JMP 12 ... 20 JMP 16 30 OVER MOV … END

제 6 장 요약 어셈블러의 개념 이해 레이블, 외부기호, 내부기호 이해 프로그램의 번역과 실행 이해 이중패스의 필요성 및 기능 이해 패스1과 패스2의 기능 이해 상대주소와 기호의 생성과정 이해 어셈블러지시어 이해 패스1과 패스2의 알고리즘 이해 패스1, 패스2의 순서도 이해 패스1과 패스2에 관련된 DB 이해 명령어표의 구성 이해 단일패스 어셈블러 이해