Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 лекция по СП / L01_SP14_Rysovany.pptx
Скачиваний:
18
Добавлен:
02.02.2015
Размер:
765.13 Кб
Скачать

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ 2014 “Харківськийі політехнічнийі і іінститут”

Кафедра “Обчислювальна технікаі та програмування”

Лектор: к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович

RYSOV@rambler.ru

Лекция №1

Вопросы лекции:

1.Програмна структура МП платформи х86

2.Способи адресації 32-розрядного МП Intel

3.Директиви визначення даних

4.Виконання арифметичних та логічних операцій

5.Програмна структура МП платформи X64

6.Настройка середовища Visual Studio 2013

Література:

Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку “Комп’ютерна інженерія” вищих

1

навчальних закладів. Видання четверте: виправлено та доповнено – Х.: “Слово”, 2014. – 992 с.

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

1. Програмна структура МП платформи х86

Програмна структура МП платформи х86 – пристрої та вузли, до яких програміст має доступ (пам'ять, регістри).

 

 

 

 

 

 

 

РГ сегментів

 

31

16

15

0

 

 

15

0

 

 

 

АН

AX AL

EAX

Регістри

 

CS

Сегмент коду

 

 

BX BL

EBX

загального

 

SS

Сегмент стека

 

 

CX CL

ECX

призначення

 

DS

Сегменти

 

 

DX DL

EDX

 

 

ES

 

 

 

SI

ESI

Індексні Рг

 

FS

даних

 

 

 

 

 

 

 

 

DI

EDI

 

GS

 

 

 

 

Вказівник бази

 

 

 

 

BP

EBP

 

 

 

 

 

SP

ESP

Вказівник стека

 

 

 

 

 

31

16 15

0

 

 

 

 

 

 

 

IP

 

EIP – вказівник інструкцій

 

 

 

 

 

FLAGS

 

EFLAGS – Рг прапорців

Рис. 1.2. Загальні Рг 32-розрядного МП

32-розрядні МП платформи х86 мають регістри:

регістри загального призначення;

вказівник інструкцій;

регістр прапорців;

регістри сегментів;

системні адресні регістри;

керуючі регістри;

регістри налагодження;

регістри тестування;

модельно-специфічні (залежні від конкретної моделі МП) регістри.

ММХ -регістри XMM -регістри

2

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

Розмір регістрів та їх позначення зведено в табл. 1.4.

Таблиця 1.4

 

 

 

 

 

 

 

 

 

Тип

Біти

 

 

 

 

Регістри

 

 

 

General

8

al

cl

dl

bl

ah

ch

dh

bh

 

16

ax

cx

dx

bx

sp

bp

si

di

 

32

eax

ecx

edx

ebx

esp

ebp

esi

edi

Segment

16

es

cs

ss

ds

fs

gs

 

 

Control

32

cr0

 

cr2

cr3

cr4

 

 

 

Debug

32

dr0

dr1

dr2

dr3

 

 

dr6

dr7

FPU

80

st0

st1

st2

st3

st4

st5

st6

st7

MMX

64

mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7

SSE

128

хmm0 хmm1 хmm2 хmm3 хmm4 хmm5 хmm6 хmm7

3

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

CF (Cany Flag) – прапорець переносу (позики) старшого біта в арифметичних операціях.

PF (Parity Flag) – прапорець паритету. Встановлюється при парному числі одиниць результату.

AF (Auxiliary Flag) – прапорець додаткового переносу (позики) у тетраді для десяткової арифметики.

ZF (Zero Flag) – прапорець нульового результату.

SF (Sign Flag) – прапорець знака. Вказує на одиничне значення старшого біта результату — ознаку від’ємного числа.

DF (Direction Flag) – прапорець керування напрямком у рядкових операціях. Програмно змінюється інструкціями CLD і STD.

4

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

Вплив команд на прапорці

Примітка. "+" – результат операції впливає на прапорець; "–" – не впливає; 1 – встановлює в "1"; 0 – встановлює в "0"; Г – інвертує; ? – не визначений.

5

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

2.. Способи адресаціїії 32-розрядного МП Intell

Спосіб або метод визначення в команді адреси операнда або адреси переходу називається режимом адресації або просто адресацією.

1. Безпосередня адресація.

MOV EAX, 12345678h ; завантаження в ЕАХ const = 1234567816.

2.Регістрова адресація. MOV EAX, ECX

3.Пряма адресація.

MOV EAX, mem1 ; завантаження в ЕAX змінної з іменем mem1

4.Непряма регістрова адресація. MOV EAX, [EBX] ; завантаження в ЕАХ змінної з пам’яті,

;адреса якої знаходиться в регістрі ЕВХ

5. Базова адресація.

lea EBX, meml ; завантаження в ЕВХ адреси пам’яті,

 

; де знаходиться змінна meml

mov EАХ, [EВХ] ; завантаження в ЕАХ змінної з пам’яті,

6. Індексна адресація.

; адреса якої знаходиться в регістрі ЕВХ

 

MOV ЕDX, [ЕDI]

; завантаження в ЕDX змінної з пам’яті,

; адреса якої знаходиться в регістрі ЕDI

В 32-розрядних МП декілька розмиті

Починаючи з моделі 80386 і вище, МП Intel дозволяють додатково використовувати ЕАХ, ЕВХ, ЕСХ,

EDX, EBP, ESP, ESI і EDI, так само, як і для звичайної непрямої адресації.

6

(к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru )

7. Масштабована індексна адресація

MOV ECX, [EDI*4 + EAX] ; завантаження в ЕCX змінної

;з пам’яті, адреса якої знаходиться як застосування значень

;регістра ЕАХ та перемноження значення регістра EDI на чотири

8.Базово-індексна адресація

MOV EAX, [ЕBX]ALPHA[ЕSI] ; завантаження в ЕAX змінної

;з пам’яті з ім’ям ALPHA, адреса якої знаходиться як застосування

;значень двох регістрів: ЕBX та ESI

9. Масштабована базово-індексна адресація

MOV ECX, [EBX + 4*ESI] ; завантаження в ЕСХ змінної

;з пам’яті, адреса якої знаходиться як застосування значень

;регістра ЕВХ та перемноження значення регістра ESI на чотири

10. Базово-індексна адресація зі зміщенням

MOV EAX, [EBX + ESI + 00ABCDF] ; завантаження в ЕAХ

;змінної з пам’яті, адреса якої знаходиться як застосування

;значень регістрів ЕBX, ESI та константи ABCDF

11.Масштабована базово-індексна адресація зі зміщенням

MOV ECX, [EBX + 36] + [8*ESI]

7

7

 

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

 

Структура програми під Win32 може бути такою:

TITLE <ім’я програми

.386

; директива визначення типу мікропроцесора

.model flat

; завдання лінійної моделі пам’яті

.data

; директива визначення даних

; дані, які визначені

.data?

; неініціалізовані дані

.code

; директива початку коду програми

label:

; мітка початку програми

<code> ;;; основана частина програми

 

 

ret

; повернення керування ОС

 

 

 

end

label ; закінчення програми .386

 

; директива визначення типу мікропроцесора

 

.MODEL flat ; завдання лінійної моделі пам’яті

 

.DATA

 

; директива початку сегмента даних

 

X DW 5 ; резервування в пам’яті 2-х байтів для змінної Х

 

Y

DW 3 ; резервування в пам’яті 2-х байтів для змінної Y

 

Z

DW ? ; резервування в пам’яті 2-х байтів для змінної Z

 

.CODE

; директива початку сегмента команд

 

_start:

; мітка початку основного тіла програми

 

MOV AX,X

; завантаження операнда Х

 

ADD AX,Y

; додавання операндів Х та Y

 

MOV Z,AX

; збереження результату у пам’яті у комірці з ім’ям Z

 

RET

 

; вихід із ОС Windows

 

END _start

; закінчення програми з іменем _start

-- Чем отличается программист от политика?

8

.

-

 

- Программисту платят деньги за работающие программы.

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

3. Директиви визначення даних

Тип

 

Значення

 

BYTE

8-розрядне ціле число без знака

SBYTE

8-розрядне ціле число зі знаком

WORD

16-розрядне ціле число без знака

SWORD

16-розрядне ціле число зі знаком

DWORD

32-розрядне ціле число без знака

SDWORD

32-розрядне ціле число зі знаком

FWORD

48-розрядне

ціле

число

 

(використовується як вказівник)

QWORD

64-розрядне ціле число

 

TBYTE

80-розрядне ціле число

 

REAL4

32-розрядне коротке дійсне число

REAL8

64-розрядне дійсне число

 

REAL10

80-розрядне розширене дійсне

 

число

 

 

db1 DB 5 ; запис у 8-розрядну комірку пам’яті з ім’ям db1 числа 5 db2 DB ‘ABCD’ ; запис у пам’ять з ім’ям db2 8-розрядних літер

db3 DB ?; резервування в пам’яті з ім’ям db3 даних, які не визначені dw1 DW 1234 ; запис у 16-розрядну комірку пам’яті з ім’ям dw1 числа 1234

dw2 DW 5*6; запис у 16-розрядну комірку пам’яті з ім’ям dw2 числа 30 dw4 DW array

dd1 DD 2.7 ; число займає 4 байти (4 х 8 бітів = 32 біта) в пам’яті dd2 DD ‘abcd’ ; резервування комірки пам'яті з іменем dd2 для слова ‘abcd’

dql DQ 123456789; число займає 8 байтів в пам’яті mixl DB 5 DUP(5 DUP(5 DUP(10)))

dt1 DT 56789 ; запис у 80-розрядну комірку пам’яті з ім’ям ; dt1 числа 56789, число займає в пам’яті 10 байтів

9

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

4. Виконання арифметичних та логічних операцій

Команди додавання

ADD приймач, джерело

Додавання

 

ADС приймач, джерело

Додавання з урахуванням перенесення

 

ADD mem/reg1, mem/reg2

 

ADD [EBX], ECX

; додати ECX до комірки

 

пам’яті,

 

 

; адреса якої міститься у Рг EBX

 

ADD ECX, EDX

; ECX := ECX + EDX

 

ADC mem/reg1, mem/reg2

 

ADС ECX, EDX ; EСX := ECX + EDX + CF, регістр – регістр

 

ADС EDІ, ALPHA

; EDІ = EDІ + ALPHA + CF – додати

 

змінну

 

; з пам’яті з ім’ям ALPHA до Рг EDІ та вміст біта CF

ADC mem/reg, data

ADC ЕAX, 7777H ; ЕAX = ЕAX + 00007777H + CF (прапорець CF)

10

к.т.н., проф. НТУ ХПІ Рисований Олександр Миколайович, RYSOV@rambler.ru

Соседние файлы в папке 1 лекция по СП