시스템 프로그래밍(인텔 프로세서를 위한)(개정판)(양장본 Hardcover)
『시스템 프로그래밍』은 인텔 프로세서를 위한 시스템 소프트웨어들(어셈블러, 매크로 프로세서 등)의 설계 방법과 알고리즘을 설명하고, 실제 구현 코드를 [부록]에 수록함으로서 시스템 소프트웨어의 구현 능력을 배양하도록 하였다. 또한 이를 통해 인텔 계열뿐만 아니라 Motorola사의 M68 계열과 Z80 계열 등과 같이 기종이 다른 프로세서를 위한 일반적인 시스템 소프트웨어 설계 및 구현 방법을 습득할 수 있도록 하였다.
Couldn't load pickup availability
출판사 리뷰
출판사 리뷰
컴퓨터 소프트웨어는 시스템 소프트웨어와 응용 소프트웨어로 나누어지는데, 일반적으로 후자는 고급 언어를 전자는 어셈블리어를 많이 사용하므로, 시스템 프로그래밍 방법은 어떤 특정 어셈블리어를 이용하여 예제를 만들고 이를 위한 어셈블러를 만드는 방법으로 설명한다.
그동안 대다수의 시스템 프로그래밍 책이 다룬 IBM 360 어셈블러는 이미 사용하지 않는 컴퓨터에 대한 내용인 반면에, 현재 대부분의 국내 대학에서는 인텔 프로세서 계열의 PC를 가지고 컴퓨터 실습을 하고 있는 실정이다. 따라서 이 책은 지금까지 이미 존재하지 않은 기계에 대한 내용을 실습도 하지 못하면서 배워야 했던 불편함을 해결하고자 인텔 프로세서 기반의 시스템 프로그래밍을 설계하여 실습할 수 있도록 집필하였다.
이 책은 인텔 프로세서를 위한 시스템 소프트웨어들(어셈블러, 매크로 프로세서 등)의 설계 방법과 알고리즘을 설명하고, 실제 구현 코드를 [부록]에 수록함으로서 시스템 소프트웨어의 구현 능력을 배양하도록 하였다. 또한 이를 통해 인텔 계열뿐만 아니라 Motorola사의 M68 계열과 Z80 계열 등과 같이 기종이 다른 프로세서를 위한 일반적인 시스템 소프트웨어 설계 및 구현 방법을 습득할 수 있도록 하였다.
이 책의 내용
1장에서는 시스템 소프트웨어와 임베디드 시스템에 대하여 살펴본다.
2장에서는 일반적인 컴퓨터 시스템의 개념 부분으로 연산의 기본 논리, 명령어 실행의 기본 개념, 기억 장치의 관리 등을 다룬다.
3장에서는 어셈블리어(Assembly Language)에 대해 설명한다. 이를 이해하기 위해서는 프로세서의 내부 구조를 알아야 한다. 이 장에서는 인텔 프로세서에 대한 기억 장치 모델과 레지스터의 종류 및 역할 등을 통해 인텔 프로세서의 내부 원리를 터득한다.
4장에서 어셈블러를 설계하기 위해서는 기본적인 어셈블리 언어의 동작을 알아야 한다. 따라서 이에 필요한 어셈블리 언어를 간단한 프로그램 통하여 명령어 및 주소 지정 방식들을 이해하여야 한다.
5장에서는 어셈블러 프로그램에서 매크로 확장을 할 때 필요한 매크로 프로세서의 원리와 설계 시 고려사항, 자료구조, 이중 패스에 의한 구현 알고리즘, 이 알고리즘의 구현에 대하여 알아본다. 이 장에서 설계된 방법으로 구현한 프로그램을 [부록]에 수록하였다.
6장에서는 어셈블러의 기능과 이를 구현하기 위한 알고리즘을 설명한다. 이중 패스 알고리즘으로 구현한 간단한 어셈블러를 [부록]에 수록하였다. 수록된 어셈블러 코드는 다양한 기능의 어셈블러로 확장할 수 있다.
7장에서는 어셈블러가 생성한 모듈을 연결하고 메모리에 적재하는 기능을 수행하는 링커와 로더를 설계하는 알고리즘을 이해한다.
8장에는 어셈블리 프로그램의 연습을 수록하였다
목차
목차
1.1 컴퓨터 하드웨어
1.1.1 컴퓨터 시스템의 기본 개념
1.1.2 시스템 소프트웨어 정의
1.2 시스템 소프트웨어
1.2.1 어셈블러(assembler)
1.2.2 매크로 프로세서(macro processor)
1.2.3 링커(linker)와 로더(loader)
1.2.4 번역기(Translator)
1.2.5 운영체제(Operating System)
1.3 임베디드 시스템(Embedded System)의 개요 및 활용
1.3.1 임베디드 시스템의 정의
1.3.2 임베디드 시스템을 설계하거나 개발할 때 고려 사항
1.3.3 임베디드 시스템 활용의 예
요약
연습문제
chapter 02 컴퓨터 동작의 기본 개념
2.1 컴퓨터 연산 단위
2.1.1 비트(Bit)
2.1.2 바이트(Byte)
2.1.3 단어(Word)
2.1.4 2진수 연산
2.2 컴퓨터 조직
2.2.1 프로세서(processor)
2.2.2 시스템 버스(system bus)
2.2.3 기억 장치(memory)
2.2.4 입출력 장치(input/output device)
2.3 명령어 실행 개념
2.3.1 판독 사이클(read cycle)과 기록 사이클(write cycle)
2.3.2 명령어의 실행
2.3.3 명령어 실행 속도
2.4 기억 장치 관리
2.4.1 기억 장치의 주소
2.4.2 데이터 및 프로그램의 저장
2.4.3 기억 장치의 관리 방법
요약
연습문제
chapter 03 인텔 프로세서의 내부 구조
3.1 32비트 인텔 프로세서
3.1.1 펜티엄 프로세서의 개요
3.1.2 32비트 프로세서의 실행 환경
3.1.3 기본 프로그램 실행 레지스터
3.2 16비트 인텔 프로세서
3.2.1 16비트 인텔 프로세서의 구조
3.2.2 명령어의 길이
3.2.3 8086 명령어
3.3 기억 장치(memory)
3.3.1 기억 장치의 모델
3.3.2 데이터 기록
3.4 레지스터(register)
3.4.1 레지스터의 종류와 역할
3.4.2 데이터 레지스터(data register)
3.4.3 포인터, 인덱스 레지스터
3.4.4 플래그 레지스터(Flag Register)
3.4.5 세그먼트 레지스터(Segment Register)
3.4.6 논리 주소와 실제 주소
3.4.7 명령어 포인터(IP: Instruction Pointer)
3.5 데이터의 표현
3.5.1 데이터의 부호(sign)
3.5.2 데이터의 해석
요약
연습문제
chapter 04 어셈블리어
4.1 프로그래밍 언어
4.1.1 수의 체계
4.1.2 프로그래밍 언어의 계층
4.1.3 고급 언어와 중급 언어
4.1.4 저급 언어
4.1.5 프로그래밍 언어의 선택
4.2 메모리와 레지스터
4.2.1 메모리
4.2.2 세그먼트:오프셋(Segment:Offset)
4.2.3 레지스터(Register)
4.3 8086 어셈블리어 개요
4.3.1 어셈블리 언어의 기본적인 이해
4.3.2 명령어 형식
4.3.3 주석문
4.3.4 데이터 정의
4.4 분기와 표지 기호
4.4.1 순차적 실행(sequential execution)
4.4.2 조건 분기(conditional branch)
4.4.3 무조건 분기(Unconditional Branch)
4.5 주소 지정 방식(Addressing Mode)
4.6 값 즉시 지정 방식
4.7 직접 주소 지정 방식
4.7.1 레지스터 직접 지정 방식
4.7.2 메모리 직접 주소 지정 방식
4.8 간접 주소 지정 방식
4.8.1 레지스터 간접 주소 지정 방식([ ])
4.8.2 베이스 주소 지정 방식(Displacement, BX, BP)
4.8.3 인덱스 주소 지정 방식(Displacement, SI, DI)
4.8.4 베이스 인덱스 번지 지정 방식(Displacement, BX or BP, SI or DI)
4.9 MOV와 ADD 명령어의 코드 변환
요약
연습문제
chapter 05 매크로 프로세서 설계
5.1 매크로의 역할
5.1.1 매크로 정의와 확장
5.1.2 매크로와 서브루틴
5.2 매크로 기능
5.2.1 매크로 인수
5.2.2 조건부 매크로 확장
5.2.3 매크로 내의 매크로 호출
5.2.4 매크로 내의 매크로 정의
5.2.5 반복 기능의 매크로
5.3 매크로 프로세서의 설계
5.3.1 설계 시 고려사항
5.3.2 자료구조
5.4 이중 패스 매크로 프로세서 알고리즘
5.4.1 패스 1 알고리즘
5.4.2 기본 기능만 포함하는 패스 2 알고리즘
5.4.3 매크로 내의 매크로 호출 기능을 포함하는 패스 2 알고리즘
요약
연습문제
chapter 06 8086 어셈블러 설계
6.1 어셈블러의 역할
6.1.1 프로그램의 작성과 실행 단계
6.1.2 어셈블러의 입력과 출력
6.2 이중 패스(Two Pass)
6.2.1 이중 패스의 필요성
6.2.2 어셈블 과정
6.2.3 패스 1과 패스 2의 역할
6.3 이중 패스 어셈블러의 설계
6.3.1 이중 패스 알고리즘
6.3.2 자료구조
6.4 단일 패스 어셈블러
6.4.1 단순 전향 참조
6.4.2 다수의 전향 참조 처리
요약
연습문제
chapter 07 링커와 로더의 설계
7.1 링커와 로더의 역할
7.1.1 링크(link)
7.1.2 주기억 장치의 할당(memory allocation)
7.1.3 재배치 및 적재(relocation & loading)
7.2 로더의 형태
7.2.1 컴파일 즉시 로더(compile-and-go loader)
7.2.2 절대 로더(absolute loader)
7.2.3 링커 및 재배치 로더(linker and relocate loader)
7.2.4 링킹 로더(linking loader)
7.2.5 동적 로더(dynamic loader)
7.3 링커 및 재배치 로더 설계
7.3.1 설계를 위한 문제점
7.3.2 링크를 위한 어셈블링(예제)
7.3.3 링크 및 재배치 과정(예제의 연속)
7.4 자료구조 및 알고리즘
7.4.1 자료구조
7.4.2 알고리즘
요약
연습문제
chapter 08 어셈블리 프로그램의 연습
[연습 1] 간단한 키패드 제어 프로그램
[연습 2] Repetive Move Operation의 프로그램
[연습 3] ASCII 파일의 입/출력 프로그램
부록
부록 A. 16진수 변환표, 2의 x제곱
부록 B. ASCII 변환표
부록 C. BCD 코드 변환표
부록 D. 8086/8088 명령어표와 80x86 명령어
부록 E. 어셈블러의 지시어
부록 F. DOS 함수 호출(function call)
부록 G. DEBUG 명령어와 사용법
부록 H. 이중 패스 매크로 프로세서의 구현
부록 I. 이중 패스 어셈블러의 설계 및 구현
부록 J. Visual Basic 6.0으로 설계한 스택 시뮬레이션의 구현 예
부록 K. TASM에서 그래픽 문자의 제거 방법
부록 L. stdio.h에 정의된 함수들
부록 M. 세그먼트(Segment)
저자
저자
전주대학교 영어영문학과 학사
전북대학교 컴퓨터과학과 학사
전북대학교 전산학 석사
일본 국립 도쿠시마대학교 지능정보공학 박사
미국 Ohio주 University of Cincinnati, Visiting Scholar 방문 연구 교수 역임
현재: 전주대학교 컴퓨터공학과 교수
저서: 최신정보검색론(교보문고)
Your payment information is processed securely. We do not store credit card details nor have access to your credit card information.

