Windows
<<  Слог теории слогоделения мультимедийная EU 2020 Innovaci?n europea vista por un emprendedor en USA  >>
Лекции: Ассемблер, система прерываний, основы построения компиляторов,
Лекции: Ассемблер, система прерываний, основы построения компиляторов,
1 Машинный язык Структурная схема микропроцессора i8086
1 Машинный язык Структурная схема микропроцессора i8086
Регистры
Регистры
Организация основной памяти
Организация основной памяти
Схема адресации
Схема адресации
Адресация сегментов
Адресация сегментов
Слово состояния программы (PSW)
Слово состояния программы (PSW)
Форматы машинных команд
Форматы машинных команд
Примеры машинных команд
Примеры машинных команд
Ассемблер
Ассемблер
Формат команды ассемблера
Формат команды ассемблера
Определение полей памяти для размещения данных
Определение полей памяти для размещения данных
Операнды команд ассемблера
Операнды команд ассемблера
1. Команда пересылки данных MOV <Адрес приемника>,< Адрес источника>
1. Команда пересылки данных MOV <Адрес приемника>,< Адрес источника>
2. Команда обмена данных ХCHG <Операнд 1> , <Операнд 2> Примеры: а)
2. Команда обмена данных ХCHG <Операнд 1> , <Операнд 2> Примеры: а)
4-5
4-5
8-9
8-9
12
12
Команды пересылки / преобразования данных (6)
Команды пересылки / преобразования данных (6)
Команды пересылки / преобразования данных (7)
Команды пересылки / преобразования данных (7)
Команды пересылки / преобразования данных (8)
Команды пересылки / преобразования данных (8)
Пример программирования выражения
Пример программирования выражения
1. Команда безусловного перехода short JMP near ptr <Символическое имя
1. Команда безусловного перехода short JMP near ptr <Символическое имя
Команды передачи управления (2)
Команды передачи управления (2)
?
?
Программирование ветвлений
Программирование ветвлений
Написать процедуру вычисления X=max(A,B): max proc near mov AX, A cmp
Написать процедуру вычисления X=max(A,B): max proc near mov AX, A cmp
Пример 2. Определение НОД (Ex1
Пример 2. Определение НОД (Ex1
Пример
Пример
Команды передачи управления (3)
Команды передачи управления (3)
2) Команда перехода по обнуленному счетчику JCXZ <адрес перехода>
2) Команда перехода по обнуленному счетчику JCXZ <адрес перехода>
Команды передачи управления (5)
Команды передачи управления (5)
Программирование циклической обработки
Программирование циклической обработки
A dw 4,6,-1,7,5 Вариант 1 mov AX,0 lea BX,A mov CX,5 cycle:add AX
A dw 4,6,-1,7,5 Вариант 1 mov AX,0 lea BX,A mov CX,5 cycle:add AX
Программирование обработки матриц
Программирование обработки матриц
Пример
Пример
Пример (2)
Пример (2)
Команды передачи управления (6)
Команды передачи управления (6)
Организация передачи управления в процедуру
Организация передачи управления в процедуру
Команды обработки строк
Команды обработки строк
Команды обработки строк (2)
Команды обработки строк (2)
4) Префиксная команда повторения REP <команда> Пример: mov CX,10 lea
4) Префиксная команда повторения REP <команда> Пример: mov CX,10 lea
5) Команда сканирования строки SCAS SCASB ;поиск байта SCASW ;поиск
5) Команда сканирования строки SCAS SCASB ;поиск байта SCASW ;поиск
Команды обработки строк (5)
Команды обработки строк (5)
Пример
Пример
Сравнение строки с таблицей (2)
Сравнение строки с таблицей (2)
Сравнение строки с таблицей (3)
Сравнение строки с таблицей (3)
Команды манипулирования битами
Команды манипулирования битами
Команды манипулирования битами (2)
Команды манипулирования битами (2)
Пример
Пример
Управление вводом/выводом
Управление вводом/выводом

Презентация: «Системное программное обеспечение». Автор: Ivanova. Файл: «Системное программное обеспечение.ppt». Размер zip-архива: 233 КБ.

Системное программное обеспечение

содержание презентации «Системное программное обеспечение.ppt»
СлайдТекст
1 Лекции: Ассемблер, система прерываний, основы построения компиляторов,

Лекции: Ассемблер, система прерываний, основы построения компиляторов,

ассемблер «под Windows» Семинары: подготовка к лабораторным работам Лаб. работы: 4 – по специальному расписанию Зачет: (кафедральный) по лаб. работам Экзамен: два вопроса и задача на ассемблере

Системное программное обеспечение

1

2 1 Машинный язык Структурная схема микропроцессора i8086

1 Машинный язык Структурная схема микропроцессора i8086

2

3 Регистры

Регистры

a) четыре регистра общего назначения (регистры данных): AX - регистр-аккумулятор, BX - базовый регистр, СХ - счетчик, DX - регистр-расширитель аккумулятора; б) три адресных регистра: SI - регистр индекса источника, DI - регистр индекса результата, BP - регистр-указатель базы; в) три управляющих регистра: SP - регистр-указатель стека, IP - регистр-счетчик команд, PSW - регистр флагов (слово состояния программы); г) четыре сегментных регистра: CS - регистр сегмента кодов, DS - регистр сегмента данных, ES - регистр дополнительного сегмента данных, SS - регистр сегмента стека.

3

4 Организация основной памяти

Организация основной памяти

Схема адресация «база +смещение»: A = Aб + Асм

Сегментная схема адресация микропроцессора i8086:

0 1 2 3 4 5 6 7 …

Адрес базы

Смещение

4

5 Схема адресации

Схема адресации

Исполнительный адрес

Оп

Индекс

SI, DI

База

BX, BP

Смещение

Disp

+

Исполнительный адрес (16)

Указатель (32)

Блок преобразования адресов

Физический адрес (20)

Сегментный адрес (16)

Сегментный регистр SS

Сегментный регистр ES

Сегментный регистр DS

Сегментный регистр CS

5

6 Адресация сегментов

Адресация сегментов

1. Сегмент кода: CS: IP 2. Сегменты данных: BX + DI + <Смещение> BX + SI + <Смещение> BP + DI + <Смещение> DS: BP + SI + <Смещение> ES: BX + <Смещение> BP + <Смещение> SI + <Смещение> DI + <Смещение> 3. Сегмент стека: SS:SP

6

7 Слово состояния программы (PSW)

Слово состояния программы (PSW)

О - флаг переполнения; D - флаг направления; I - флаг прерывания; Т - флаг трассировки; S - флаг знака: 1 - число < 0, 0 - число > 0; Z - флаг нуля: 1 - число = 0; А - флаг переноса из тетрады; P - флаг четности; С - флаг заема/переноса.

7

8 Форматы машинных команд

Форматы машинных команд

Префиксы

Код операции

1 байт адресации

2 байта смещения

2 байта данных

Р/память?р

100010DW

Mod Reg R/M

См.мл.байт

См. ст.байт

Литерал? р/память

1100011W

Mod 000 R/M

См.мл.байт

См. ст.байт

Данные

D - 1- в регистр, 0 - из регистра W - 1- операнды-слова, 0 - байты W=1 W=0 sr reg 000 AX 000 AL 00 ES 001 CX 001 CL 01 CS 010 DX 010 DL 10 SS 011 BX 011 BL 11 DS 100 SP 100 AH 101 BP 101 CH 110 SI 110 DH 111 DI 111 BH

Mod - 00 - disp=0 байт 01 - disp=1 байт 10 - disp=2 байта 11 - операнды-регистры

M = 000 EA=(BX)+(SI) +Disp 001 EA=(BX)+(DI) +Disp 010 EA=(BP)+(SI) +Disp 011 EA=(BP)+(DI) +Disp 100 EA=( SI) +Disp 101 EA=(DI) +Disp 110 EA=( BP)+ Disp * 111 EA=(BX) + Disp

8

9 Примеры машинных команд

Примеры машинных команд

Примеры: 1) mov BX,CX 100010DW Mod Reg R/M 10001001 11 001 011 2) mov CX, 6[BX] 100010DW Mod Reg R/M См.мл.байт 10001011 01 001 111 00000110 3) mov byte ptr 6[BX], 10 1100011W Mod 000 R/M См.мл.байт Данные 11000110 01 000 111 00000110 00001010

8 9

C B

8 B

4 F

0 6

C 6

4 7

0 6

0 A

9

10 Ассемблер

Ассемблер

Предложения ассемблера бывают четырех типов: команды или инструкции, представляющие собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора; макрокоманды — оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями; директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении; строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.

10

11 Формат команды ассемблера

Формат команды ассемблера

[<Метка> :] <Код операции > [<Спиcок операндов >] ; [<Комментарий>] Примеры: 1) m1: mov AX,BX ; пересылка числа 2) cbw 3) ; суммы по месяцам

11

12 Определение полей памяти для размещения данных

Определение полей памяти для размещения данных

DB <Число> или (<Список чисел>) или ? [<Имя поля>] DW < Количество > DUP ( <Список чисел > ) DD < Количество > DUP ( ? ) Примеры: a db 12 db ? dw 1234H db 5 dup (?) b db ?A? s dw 4,-1 k db 00001100b

a

b

s

k

0 C

?

3 4

1 2

?

?

?

?

?

6 1

0 4

0 0

F F

F F

0 C

12

13 Операнды команд ассемблера

Операнды команд ассемблера

1. Операнды команд ассемблера могут размещаться: а) в регистрах; б) в команде – литералы; в) в памяти. Примеры: 1) mov AX,10 2) mov AX, 6[BX+DI] 2. Длина операнда определяется: а) кодом команды: б) регистром: в) явно: byte ptr, word ptr, dword ptr Пример: mov 0[BX],10

? mov word ptr 0[BX],10

13

14 1. Команда пересылки данных MOV <Адрес приемника>,< Адрес источника>

1. Команда пересылки данных MOV <Адрес приемника>,< Адрес источника>

Примеры: а) mov AX, BX б) mov SI, 1000 в) mov 0[DI], AL г) mov AX, code mov DS, AX

Команды пересылки / преобразования данных

Литерал

Оперативная память

AX,BX,CX,DX, SI, DI. SP, BP

Сегментные регистры

14

15 2. Команда обмена данных ХCHG <Операнд 1> , <Операнд 2> Примеры: а)

2. Команда обмена данных ХCHG <Операнд 1> , <Операнд 2> Примеры: а)

xchg BX, CX б) xchg BX, 0[DI] 3. Команда загрузки исполнительного адреса LEA <Регистр> , <Операнд 2> Пример: а) lea BX, exword б) lea DI, 6[BX,SI]

Команды пересылки / преобразования данных (2)

Адрес сегмента

Смещение

exword

15

16 4-5

4-5

Команды загрузки указателя LDS <Регистр> ,<Операнд 2> LЕS <Регистр > ,<Операнд 2> Пример: lds SI, exword 6-7. Команда записи слова в стек и извлечения из стека PUSH <Операнд> POP <Операнд> Примеры: push SI pop 0[BX]

Команды пересылки / преобразования данных (3)

16

17 8-9

8-9

Команды сложения ADD <Операнд 1>, <Операнд 2> ADC <Операнд 1>, <Операнд 2> Пример. Сложение 32-разрядных чисел mov AX,value1 add AX,value2 mov res,AX mov AX,value1+2 adc AX,value2+2 mov res+2,AX 10-11. Команды вычитания SUB <Операнд 1>, <Операнд 2> SBB <Операнд 1>, <Операнд 2>

Команды пересылки / преобразования данных (4)

Мл.Байт

Ст.Байт

17

18 12

12

Команда сравнения СМP <Операнд 1> , <Операнд 2> Примеры: а) cmp AX,5 б) cmp byte ptr 0[BX],’A’ 13-14. Команда добавления/вычитания единицы INC <Операнд> DEC <Операнд> Примеры: inc AX dec byte ptr 8[BX,DI] 15. Команда изменения знака NEG <Операнд>

Команды пересылки / преобразования данных (5)

18

19 Команды пересылки / преобразования данных (6)

Команды пересылки / преобразования данных (6)

16-17. Команды умножения MUL <Операнд> IМUL <Операнд> mov AX,4 imul word ptr A

19

20 Команды пересылки / преобразования данных (7)

Команды пересылки / преобразования данных (7)

18-19. Команды «развертывания» чисел CBW ; AL -> AX CWD ; AX -> DX:AX

20

21 Команды пересылки / преобразования данных (8)

Команды пересылки / преобразования данных (8)

20-21. Команды деления DIV <Операнд> IDIV <Операнд> mov AX,40 cwd idiv word ptr A

21

22 Пример программирования выражения

Пример программирования выражения

X = (A+C)(B-1)/(C+8) Сегмент данных: A dw 25 B dw -6 C dw 11 X dw ?

Сегмент кода: mov CX,C add CX,8 mov BX,B dec BX mov AX,A add AX,C imul BX idiv CX mov X,AX

22

23 1. Команда безусловного перехода short JMP near ptr <Символическое имя

1. Команда безусловного перехода short JMP near ptr <Символическое имя

или адрес> far ptr Примеры: а) jmp short Label1 б) cycle: … jmp cycle в) jmp BX г) jmp dword ptr [BX]

Команды передачи управления

23

24 Команды передачи управления (2)

Команды передачи управления (2)

2. Команды условного перехода <Команда> <Символическое имя или адрес> Команды условного перехода: JZ – переход по "ноль"; JE – переход по "равно"; JNZ – переход по "не нуль"; JNE – переход по "не равно"; JL – переход по "меньше"; JNG, JLE – переход по "меньше или равно "; JG – переход по "больше"; JNL, JGE – переход по "больше или равно "; JA – переход по "выше" (беззнаковое “больше”); JNA, JBE – переход по "не выше"(беззнаковое “не больше”); JB – переход по "ниже" (беззнаковое “меньше”); JNB, JAE – переход по "не ниже" (беззнаковое “не меньше”).

24

25 ?

?

jz zero jnz continue jmp zero continue: ...

Условный переход на более чем 128 байт

25

26 Программирование ветвлений

Программирование ветвлений

Cmp ... j<условие> ELSE <операции 1> jmp COM ELSE: <операции 2> COM: <продолжение>

26

27 Написать процедуру вычисления X=max(A,B): max proc near mov AX, A cmp

Написать процедуру вычисления X=max(A,B): max proc near mov AX, A cmp

AX, B ; сравнение A и B jl LESS ; переход по меньше mov X, AX jmp CONTINUE ; переход на конец ветвления LESS: mov AX, B mov X, AX CONTINUE: ret max endp

Пример 1. Процедура определения большего числа

27

28 Пример 2. Определение НОД (Ex1

Пример 2. Определение НОД (Ex1

asm)

code segment assume cs:code,ds:code c dw ? a dw 24 b dw 18 begin proc far push DS mov AX,0 push AX mov AX,code mov DS,AX

28

29 Пример

Пример

Определение НОД (2)

mov ax,a mov bx,b cycl: cmp ax,bx je kon jl lit sub ax,bx jmp short com lit: sub bx,ax com: jmp cycl kon: mov c,ax ret begin endp code ends end begin

cycl

lit

com

kon

29

30 Команды передачи управления (3)

Команды передачи управления (3)

3. Команды организации циклической обработки 1) Команда организации цикла LOOP < Символическое имя или адрес> Пример: mov cx, loop_count begin_loop: < Тело цикла> … loop begin_loop

30

31 2) Команда перехода по обнуленному счетчику JCXZ <адрес перехода>

2) Команда перехода по обнуленному счетчику JCXZ <адрес перехода>

Пример: mov cx, loop_count jcxz end_of_loop begin_loop: < Тело цикла > … loop begin_loop end_of_loop: ...

Команды передачи управления (4)

31

32 Команды передачи управления (5)

Команды передачи управления (5)

3) Команды организации цикла с условием LООРE <Символическое имя или адрес> LOOPNE <Символическое имя или адрес> Пример: mov CX, loop_count jcxz end_of_loop begin_loop: < Тело цикла> cmp al, 100 loopne begin_loop end_of_loop: ...

32

33 Программирование циклической обработки

Программирование циклической обработки

Определить сумму натуральных чисел 1..n. ; сегмент данных S dw 0 n dw 18 ; сегмент кода mov CX,n mov AX,0 cycle: add AX,CX loop cycle mov S,AX

mov CX,n mov AX,0 mov BX,1 cycle: add AX,BX inc BX loop cycle mov S,AX

S=0

i=1,n

S=S+i

33

34 A dw 4,6,-1,7,5 Вариант 1 mov AX,0 lea BX,A mov CX,5 cycle:add AX

A dw 4,6,-1,7,5 Вариант 1 mov AX,0 lea BX,A mov CX,5 cycle:add AX

0[BX] add BX,2 loop cycle

Программирование обработки массивов

Вариант 2 mov AX,0 mov BX,0 mov CX,5 cycle:add AX,A[BX] add BX,2 loop cycle

A

4

6

-1

7

5

DS

DS

A

A

4

6

-1

7

5

4

6

-1

7

5

S=0

BX

BX

i=1,n

S=S+A[i]

34

35 Программирование обработки матриц

Программирование обработки матриц

A db 2,3,1,-1,8 db 6,-8,5,4,7 db 8,6,3,1,6 mov BX,0 mov CX,3 cycle1: push CX mov CX,5 cycle2: ... A[BX] inc BX loop cycle2 pop CX loop cycle1

A db 2,3,1,-1,8 db 6,-8,5,4,7 db 8,6,3,1,6 mov BX,0 mov CX,3 cycle1: push CX mov CX,5 cycle2: ... A[BX] inc BX loop cycle2 pop CX loop cycle1

mov DI,0 mov CX,5 cycle1: push CX mov CX,3 mov BX,0 cycle2: ... A[BX,DI] add BX,5 loop cycle2 pop CX inc DI loop cycle1

A

2

3

-1

-1

8

6

-8

5

4

7

8

6

-3

1

6

DS

DI

A

2

3

-1

-1

8

6

-8

5

4

7

8

6

-3

1

6

BX

35

36 Пример

Пример

Определить количество положительных, нулевых и отрицательных значений в массиве code segment assume cs:code,ds:code x dw 1,-1,3,0,15,-4,0 n dw 7 ng dw ? nl dw ? nz dw ? ; begin proc far push ds mov ax,0 push ax mov ax,code mov ds,ax

36

37 Пример (2)

Пример (2)

mov cx,n mov bx,0 mov di,bx mov si,bx again: cmp x[bx],0 jle less_or_eq inc di jmp short next less_or_eq: jl next inc si next: add bx,2 dec cx jnz again mov ax,n sub ax,di sub ax,si mov ng,di mov nl,ax mov nz,si ret begin endp code ends end begin

Начало

ng=0

ng=0

nz=0

i=1,n

>0

=0

x[i] ? 0

<0

ng=ng+1

ng=ng+1

nl=n-ng-nz

Конец

37

38 Команды передачи управления (6)

Команды передачи управления (6)

4) Команды вызова подпрограмм а) Команда вызова процедуры CALL <Символическое имя или адрес > б) Команда возврата управления RET [<Целое>] Текст процедуры должен быть оформлен в виде: <Имя процедуры> ргос < Описатель удаленности> <Тело процедуры> <Имя процедуры> endp

38

39 Организация передачи управления в процедуру

Организация передачи управления в процедуру

Основная программа

Процедура

Стек

2 или 4 байта

CALL <Имя>

<Имя> PROC RET <Имя> ENDP

Адрес возврата

39

40 Команды обработки строк

Команды обработки строк

Элемент: байт или слово Установка/сброс флага направления: STD CLD

DS:SI

DF =0

Источник

ES:DI

DF =0

Приемник

40

41 Команды обработки строк (2)

Команды обработки строк (2)

DS:SI

AX(AL)

ES:DI

AX(AL)

DS:SI

ES:DI

1) Команда загрузки строки LODS LODSB ; загрузка байта LODSW ; загрузка слова 2) Команда записи строки STOS STOSB ; запись байта STOSW ; запись слова 3) Команда пересылки MOVS. MOVSB ;пересылка байта МОVSW ;пересылки слова

41

42 4) Префиксная команда повторения REP <команда> Пример: mov CX,10 lea

4) Префиксная команда повторения REP <команда> Пример: mov CX,10 lea

SI, A lea DI, B rep movsb

Команды обработки строк (3)

42

43 5) Команда сканирования строки SCAS SCASB ;поиск байта SCASW ;поиск

5) Команда сканирования строки SCAS SCASB ;поиск байта SCASW ;поиск

слова AX(AL)-(ES:DI) -> флаги 6) Команда сравнения строк CMPS СMPSB ;сравнение байт СMPSW ;сравнение слов (CS:SI)-(ES:DI) -> флаги

Команды обработки строк (4)

AX(AL)

ES:DI

DS:SI

ES:DI

43

44 Команды обработки строк (5)

Команды обработки строк (5)

7) Префиксные команды "повторять, пока равно" и "повторять, пока не равно" REPE < Команда > REPNE < Команда > Пример: mov CX,10 lea SI, A lea DI, B repe cmpsb

44

45 Пример

Пример

Сравнение строки с таблицей (Ex2_2)

S

ES:DI

Flaq=0

A B C D E

Tabl

DS:SI

i = 1,6

S F D Y E

D H F Y U

A B C D R

S=Tabl[i]

Нет

Да

F Y E D K

A B C D E

Flaq=0

S Y U F K

Flaq=i

45

46 Сравнение строки с таблицей (2)

Сравнение строки с таблицей (2)

code segment assume CS:code,DS:code,ES:code Flag DB 0 S DB 'ABCDE' Tabl DB 'ARTYG','FGJJU' DB 'FGHJK','ABCDY' DB 'ABCDE','FTYRG' begin proc far push DS mov AX,0 push AX mov AX,code mov DS,AX mov ES,AX lea SI,S lea DI,Tabl mov CX,6 mov BL,1 cld

46

47 Сравнение строки с таблицей (3)

Сравнение строки с таблицей (3)

Cycle: push SI push DI push CX mov CX,5 repe cmpsb pop CX pop DI pop SI je Found add DI,5 inc BL loop Cycle jmp not_Found Found: mov byte ptr Flag,BL not_Found: ret begin endp code ends end begin

47

48 Команды манипулирования битами

Команды манипулирования битами

1. Логические команды NOT <Операнд> ; логическое НЕ; AND <Операнд 1>, <Операнд 2> ;логическое И; OR <Операнд 1>, <Операнд 2> ;логическое ИЛИ; XOR <Операнд 1>, <Операнд 2> ;исключающее ИЛИ; TEST <Операнд 1>, <Операнд 2> ; И без записи результата Пример. Выделить из числа в AL первый бит: and al, 10000000B 10110001 10000000 10000000

48

49 Команды манипулирования битами (2)

Команды манипулирования битами (2)

2. Команды сдвига <Код операции> <Операнд>, СL или 1 Команды: SAL – сдвиг влево арифметический; SHL – сдвиг влево логический; SAR – сдвиг вправо арифметический; SHR – сдвиг вправо логический; ROL – сдвиг влево циклический; ROR – сдвиг вправо циклический; RCL – сдвиг циклический влево с флагом переноса; RCR – сдвиг циклический вправо с флагом переноса

0

CF

0

CF

CF

CF

0

CF

CF

49

50 Пример

Пример

Умножить число в AX на 10: mov bx, ax shl ax, 1 shl ax, 1 add ax, bx shl ax, 1

Команды манипулирования битами (3)

50

51 Управление вводом/выводом

Управление вводом/выводом

IN AL или AX, <Порт> или DX OUT <Порт> или DX, AL или AX Пример: in AL, 60H out 60H, AL

Генератор синхронизации

Шина

Оп

Упр. шиной

Интерфейс

Мп

Порты

Устройство в/в

Ин т - с

51

«Системное программное обеспечение»
http://900igr.net/prezentacija/informatika/sistemnoe-programmnoe-obespechenie-235209.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды
900igr.net > Презентации по информатике > Windows > Системное программное обеспечение