Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
64
Добавлен:
09.06.2015
Размер:
829.32 Кб
Скачать

К командам простого циклического сдвига относятся:

ROL (Rotate Left) – сдвигаемые влево биты записываются в тот же опе- ранд справа (рис. 11).

0

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Флаг cf

Рис.11. Схема работы команды простого циклического сдвига вправо ROL

ROR (Rotate Right) – сдвигаемые вправо биты записываются в тот же операнд (рис.12).

Флаг cf

Рис.12. Схема работы команды простого циклического сдвига влево ROR

Команды циклического сдвига через флаг переноса CF отличаются от команд простого циклического сдвига тем, что сдвигаемый бит не сразу попадает в операнд с другого его конца, а сначала записывается во флаг переноса CF. К таким командам относятся следующие:

RCL (Rotate through Carry Left) – циклический сдвиг влево через перенос. Сдвигаемые биты поочерёдно становятся значением флага CF

(рис. 13).

Флаг cf

Рис.13. Схема работы команды циклического сдвига влево через флаг переноса ROR

41

RCR (Rotate through Carry Right) – циклический сдвиг вправо через перенос. Сдвигаемые биты поочерёдно становятся значением флага CF

(рис. 14.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

 

0

Флаг cf

Рис.14. Схема работы команды циклического сдвига вправо через флаг переноса RСR

Варианты заданий к лабораторной работе 6

При разработке программ использовать выше рассмотренные команды.

1.Сформировать массив из 10 двухбайтных чисел. Найти максимальное зна- чение, поделить его на 4 и поместить в один из регистров процессора. Все остальные числа переместить в другой массив.

2.Сформировать массив из 10 двухбайтных чисел. Найти минимальное зна- чение, умножить его на 8 и поместить в один из регистров процессора. Все остальные числа переместить в другой массив.

3.Сформировать два массива из 10 однобайтных чисел. Посчитать количест- во одинаковых чисел и поместить это число в регистр СХ.

4.Сформировать массив из 10 двухбайтных чисел. Найти в массиве число 55 и его номер поместить в регистр ВН.

5.Сформировать два массива из 10 однобайтных чисел. Посчитать количест- во неодинаковых чисел и поместить это число на место первого элемента массива.

6.Сформировать массив из 10 однобайтных чисел. Найти максимальное зна- чение, проверить его старший разряд и, если он равен единице, поместить в один из регистров процессора. В противном случае поместить в память.

7.Написать программу поиска числа ААН в массиве из десяти чисел. В слу- чае отсутствия такого числа переместить весь массив другое место памяти.

8.Написать программупоиска чисел ААН и 33Н в массиве из десяти чисел. В случае наличия таких чисел помножить каждое число из массива и пере- слать в другое место памяти.

9.Написать программу умножения каждого числа из массива, состоящего из десяти чисел, на 16. Все чётные числа переписать в другой массив.

10.Сформировать массив из десяти однобайтных чисел, найти среди них числа, превышающие число 48Н, переписать их в другой массив, умножив на два.

42

ЛИТЕРАТУРА И ИНФОРМАЦИОННЫЕ ИСТОЧНИКИ

Основная литература

1.Юров, В. ASSEMBLER: учебник/ В.Юров. – СПб.: Питер, 2002.

2.Нарышкин, А.К. Цифровые устройства и микропроцессоры: учеб. пособие для студентов вузов/ А.К.Нарышкин. – М.: Академия, 2006.

3.Юров, В. ASSEMBLER: практикум/ В.Юров. – СПб.: Питер, 2003.

4.Брэй, Барри. Микропроцессоры Intel: 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium Pro Processor, Pentium 4. Архитектура, программирование и

интерфейсы/ Барри Брэй. – СПб.: БХВ-Петербург, 2005.

5.Галисеев, Г.В. АССЕМБЛЕР IBM PC: самоучитель/ Г.В. Галисеев. – М.: Диалектика, 2004.

6.Зубков, С. В. Assembler дя DOS, Windows и UNIX/ С.В. Зубков . – СПб.: Питер, 2004.

7.Микропроцессорный комплект К1810. Структура, программирование/ под ред. Ю. М. Казаринова. – М.: Высш. шк., 1995.

8.Панов, А. Ассемблер/ А. Панов. – СПб.: БХВ-Петербург, 2006.

Дополнительная литература

9.Гук, М. Процессоры INTEL от 8086 до PENTIUM / М. Гук.– Л.: Питер, 1997.

10.Григорьев, В. Л. Программирование однокристальных микропроцессоров/ В.Л. Григорьев. – М.: Энергоатомиздат, 1999.

11.Юров, В. Assembler: спец. справочник/ В.Юров. – СПб.: Питер, 2000.

12.Григорьев, В. Л. Микропроцессоры I486. Архитектура и программирование. Кн. 1, 2, 3, 4/ В.Л. Григорьев. – М.: Гранал, 1998.

13.Скэнлон, Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера/ Л. Скэнлон. – М.: Радио и связь,1996 .

14.Рудаков, П. И. Программируем на языке ассемблера IBM PC/ П.И. Рудаков, К.Г. Финогенов.– Обнинск: Принтер, 1997.

15.Ю-Чжен-Лю, Микропроцессоры семейства 8086/8088 / Ю-Чжен-Лю, Г. Гибсон. – М.: Радио и связь,1997.

16.Точчи, Рональд Дж. Нил С.Уидмер Цифровые системы. Теория и практика /Рональд Дж. Точчи, Нил С.Уидмер. – М.: Вильямс, 2004.

17.Брамм, П. Микропроцессор 80386 и его программирование/

18.П. Брамм, Д. Брамм. – М.: Мир, 1992.

19.Дао, Л. Программирование микропроцессора 8088/ Л. Дао. – М.: Мир, 1993.

Методическая литература

1.Мичурина, М.М. Цифровые устройства и микропроцессоры. Архитектура микро- процессоров INTEL: метод. указания/ М.М. Мичурина. – Красноярск: КГТУ, 2004. – 60 с.

2.Мичурина, М.М. Освоение ассемблера: метод. указания/ М.М. Мичурина, И. Н. Сушкин. – Красноярск: КГТУ, 2002. – 40 с.

3.Мичурина, М.М. Методические указания к лабораторным работам по дисциплине ЦУ и МП/ М. М. Мичурина, И. Н. Сушкин. – Красноярск: КГТУ, 2001.

4.Микропроцессор 80386. Методические указания для студентов специальности 2007 –“ Радиотехника”/ сост. М. М. Мичурина, И. Н. Сушкин. – Красноярск: КГТУ, 1996. –

41с.

43

ПРИЛОЖЕНИЯ Приложение 1

 

 

 

Таблица 1

 

 

Директивы ассемблера

Группа

№ п/п

Директива

Назначение

директив

 

 

директивы

Управления сегмен-

1

SEGMENT

Определяет начало (имя) сегмента

тированием и счетчи-

 

 

Определяет конец сегмента

ком команд

2

ENDS

Определяет содержимое сегментных

 

3

ASSUME

регистров

 

 

 

Определяет адрес размещения команд

 

4

ORG

или данных

 

 

 

Определяет список объектов которые

 

5

GROUP

должны быть размещены в одном блоке

 

 

 

памяти объемом 64 К

 

 

 

Определяет метки программы

 

6

LABEL

 

Определения данных

7

DB

Определяет байты памяти

 

8

DW

Определяет два байта памяти

 

9

DD

Определяет четыре байта памяти

 

10

DQ

Определяет восемь байтов памяти

 

 

 

Определяет десять байтов памяти

 

11

DT

 

Определения симво-

12

EQU

Определяет имя переменной

лов

13

PURGE

Отменяет ранее определенное имя пере-

 

 

 

менной

Определения макро-

16

CODEMACRO

Вводит макроопределение

средств

17

ENDM

Определяет конец макроопределения

 

 

 

Распределяет имена и размерности по-

 

18

RECORD

лей (в битах) при определении записей в

 

 

 

макроопределениях

 

 

 

Определяет необходимость префикса

 

 

 

замены

 

19

SEGFIX

Проверяет соответствие указанного ад-

 

 

 

реса текущему сегменту

 

20

NOSEGFIX

Задает значение полей в записях

 

 

 

Определяет необходимость генерации 8-

 

 

 

зарядного смещения при передачи

 

21

MODRM

управления

 

22

RELB

Определяет необходимость генерации

 

 

 

16-зарядного смещения при передаче

 

 

 

управления

 

23

RELW

 

Связывания модулей

24

PUBLIC

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

 

 

 

модулей программ

 

25

EXTRN

Задает список имен переменных, разме-

 

 

 

щенных в других модулях программ

 

 

 

Определяет имя объектного модуля про-

 

26

NAME

граммы, полученной в результате ас-

 

 

 

семблирования

 

 

 

Конец ассемблирования

 

27

END

 

 

 

44

 

Группа

№ п/п

Оператор

Назначение

Вспомогательных

 

 

оператора

операторов

 

 

 

Определения место-

1

PTR

Формирует адрес переменной или пере-

положения команд и

 

 

менную

данных

2

NEAR

Определяет метку в текущем сегменте

 

 

 

Определяет метку вне текущего сегмен-

 

3

FAR

та

 

 

 

Вводит в программу тип переменной

 

4

THIS

Тир выравнивания, указывающий на на-

 

 

 

чальный адрес сегмента, заканчиваю-

 

5

PARA

щийся цифрой 0H

 

 

 

Тип выравнивания, указывающий на на-

 

 

 

чальный адрес сегмента, заканчиваю-

 

6

PAGE

щийся цифрами 00H

 

 

 

Тип выравнивания, указывающий, что

 

 

 

весь сегмент должен быть расположен в

 

7

INPAGE

пределах страницы в 256 байт

 

 

 

Тип выравнивания, допускающий любое

 

 

 

смещение

 

 

 

Тип выравнивания, допускающий четное

 

8

BYTE

смещение (полный начальный адрес

 

 

 

сегмента четный)

 

9

WORD

 

 

 

 

 

Связывания модулей

10

AT

Определяет начальный адрес сегмента

программ

 

 

Определяет последовательное располо-

 

11

STACK

жение стековых сегментов модулей про-

 

 

 

грамм в памяти

 

 

 

Определяет общую область памяти мо-

 

12

COMMON

дулей программ

 

 

 

Аналогичен COMMON, но сегмент рас-

 

13

MEMORY

полагается последним

 

 

 

Определяет сегментную компоненту ад-

 

14

SEG

реса переменной

 

 

 

Определяет относительную компоненту

 

15

OFFSET

адреса (исполнительный адрес перемен-

 

 

 

ной)

 

 

 

Определяет тип переменной

 

 

 

Определяет число компонент перемен-

 

16

TYPE

ной (массива)

 

17

LENGTH

Определяет число байтов, занимаемых

 

 

 

переменной (массивом)

 

18

SIZE

Определяет число битов, занимаемых

 

 

 

переменной (массивом)

 

 

 

Выделяет младший байт слова

 

19

WIDTH

Выделяет старший байт слова

 

20

LOW

 

 

21

HIGH

 

 

 

 

 

45

Группа

№ п/п

Оператор

Назначение

Вспомогательных

 

 

оператора

операторов

 

 

 

 

22

DUP

Задает массивы данных

 

23

SHORT

Указывает, что для хранения значения

 

 

 

достаточно одного байта

Специального назна-

24

PROCLEN

Определяет удаленность процедуры (0

чения

 

 

процедура размещена в текущем про-

 

 

 

граммном сегменте, FFH – процедура

 

 

 

размещена вне текущего сегмента)

 

 

 

Для отмены сегментных регистров, на-

 

25

NOTHING

значенных директивой ASSUME (после

 

 

его использования для каждого операнда

 

 

 

 

 

 

необходимо задавать префиксы сегмен-

 

 

 

тов в явном виде)

 

 

PREFIX

Определение префикса

 

 

 

 

26

 

 

Приложение 2

 

 

 

Таблица 2

 

 

Программное обеспечение дисциплины

№ раздела курса

Разработчик программы

Название программного про-

 

п/п

 

 

дукта

 

1

2,3

MicroSoft

Turbo Assembler

 

2

2,3

MicroSoft

Turbo Link

 

3

2,3

MicroSoft

Turbo Debugger

 

 

2,3

 

 

 

Приложение 3

Система команд микропроцессора К1810ВМ86

В таблице 2 приведена полная система команд центрального процессора К1810ВМ86 со всеми данными, необходимыми для её использования. При этом приняты следующие обозначения: Е число тактов, затрачиваемое на вычисление исполнительного адреса ЕА операнда, находящегося в памяти; пчисло тактов, требуемое для выполнения команды; r

регистр ЦП; seg – сегментный регистр

46

47

Приложение 4

 

 

 

 

 

 

 

 

Таблица 3

 

 

 

 

Система команд микропроцессора I8086/8088

 

 

 

 

 

 

 

 

 

 

 

 

Группа

 

Номер

Мнемокод

 

nт

Байты формата команды

Описание команды

команд

 

команды

 

нечетный

четный

 

 

 

 

 

 

Пересылка

1

MOV r, r

 

2

 

 

Pг ← Pг

 

данных

 

 

 

 

 

100010 dw

mod reg r/m

 

 

 

2

MOV r, mem

 

8 + E

Pг П

 

 

 

 

 

3

MOV mem, r

 

9 + E

 

 

П ← Pг

 

 

4

MOV mem, data

 

10 + E

1100011 w

mod 000 r/m

П Д

 

 

 

 

 

 

 

data L

data H (w = 1)

 

 

 

5

MOV r, data

 

4

1011 w reg

data L

Pг Д

 

 

 

 

 

 

 

data H (w = 1)

 

 

 

 

6

MOV a, mem

 

10

101000dw

addr L

A ← П

 

 

 

 

 

 

 

addr H

 

 

 

 

7

MOV mem, a

 

10

 

 

П ← A

 

 

8

MOV seg, r

 

2

 

 

Сегментный Pг ← Pг

 

 

9

MOV seg, mem

 

8 + E

100011d 0

mod 0 seg r/m

Сегментный Pг П

 

 

10

MOV r, seg

 

2

Pг сегментный Pг

 

 

 

 

 

11

MOV mem, seg

 

9 + E

 

 

П сегментный Pг

 

 

12

PUSH r

 

10

11111111

mod 110 r/m

Cтек ← Pг

 

 

13

PUSH mem

 

16 + E

Cтек П

 

 

 

 

 

14

PUSH r

 

10

01010 reg

Cтек ← Pг

 

 

15

PUSH seg

 

10

000 seg 110

Стек сегментный Pг

 

 

16

POP r

 

8

10001111

mod 000 r/m

Pг стек

 

 

17

POP mem

 

17 + E

П стек

 

 

 

 

 

18

POP r

 

8

01011 reg

Pг стек

 

 

19

POP seg

 

8

000 seg 111

Сегментный Pг стек

 

 

20

XCHG r, mem

 

17 + E

1000011 w

mod reg r/m

Pг ↔ П

 

 

 

 

 

 

 

 

 

 

21

XCHG r, r

 

4

Pг ↔ Рг

 

 

 

 

 

 

 

22

XCHG AX, r

 

3

10010 reg

A Pг

 

 

23

IN port

 

10

1110010 w

port

A ← порт

 

 

 

 

 

 

 

47

 

 

 

 

 

24

IN

8

1110110 w

A ← [DX]

 

 

25

OUT port

10

1110011 w

port

Порт А

 

 

26

OUT

8

1110111 w

[DX] ← А

 

 

27

LEA r

2 + E

10001101

mod reg r/m

Pг ← EA

 

 

28

LDS r, mem

16 + E

11000101

mod reg r/m

Pг и DS ← П

 

 

29

LES r, mem

16 + E

11000100

mod reg r/m

Pг и ES ← П

 

 

30

LAHF

4

10011111

AH ← FL

 

 

31

SAHF

4

10011110

FL ← AH

 

 

32

PUSHF

10

10011100

Стек ← F

 

 

33

POPF

8

10011101

F ← Стек

 

Арифмети-

34

ADD rl, r2

3

 

 

Pг ← Pг + Pг

 

ческие дей-

 

 

 

 

 

 

 

ствия

 

 

 

000000 dw

mod reg r/m

 

48

 

35

ADD r, mem

9 + E

Pг ← Pг + П

 

 

 

 

 

36

ADD mem, r

16 + E

 

 

П ← Pг + Pг

 

 

37

ADD r, data

4

100000 sw data L

mod 000 r/m

Pг ← Pг + Д

 

 

 

 

 

 

data H (sw = 01)

 

 

 

38

ADD mem, data

17 + E

 

 

П П + Д

 

 

39

ADD a, data

4

0000010 w

data L

А А + Д

 

 

 

 

 

data H (w = 1)

 

 

 

 

 

 

 

 

 

 

 

 

40

ADC rl, r2

3

 

 

Pг ← Pг + Pг + CF

 

 

41

ADC r, mem

9 + E

000100 dw

mod reg r/m

Pг ← Pг + П + CF

 

 

42

ADC mem, r

16 + E

 

 

П П + Pг + CF

 

 

43

ADC r, data

4

1 0 0 0 0 0 sw

mod 0 10 r/m

Pг ← Pг + Д + CF

 

 

44

ADC mem, data

17 + E

data L

data H (sw = 0)

П П + Д + CF

 

 

45

ADC a, data

4

0 0 01 0 1 0 w

data L

А А + Д + CF

 

 

 

 

 

data H (w = 1)

 

 

 

 

46

INC r

2

1 1 1 1 1 1 1 w

mod 0 0 0 r/m

Pг ← Pг + 1

 

 

 

 

 

48

 

 

49

 

47

INC mem

15 + E

 

 

 

 

П П + 1

 

48

INC r

2

0 1 0 0 0 reg

 

Pг ← Pг (8) + 1

 

49

SUB r l, r 2

3

 

 

 

 

Pг ← Pг – P г

 

50

SUB r, mem

9 + E

0 0 1 0 1 0 dw

 

mod reg r/m

Pг ← Pг

П

 

51

SUB mem, r

16 + E

 

 

 

 

П П – P г

 

52

SUB r, data

4

1 0 0 0 0 0 sw

mod 1 0 1 r/m

Pг ← Pг

Д

 

 

 

 

data L

data (sw + 01)

 

 

 

 

53

SUB mem, data

17 + E

 

 

 

 

П П

Д

 

54

SUB a, data

4

0 0 1 0 1 1 0 w

data L

А А

Д

 

 

 

 

data H (w = 1)

 

 

 

 

 

 

55

SBB r l, r2

3

 

 

 

 

Pг ← Pг – P г – CF

 

56

SBB r, mem

9 + E

0 0 0 1 1 0 dw

 

mod reg r/m

Pг ← Pг П – CF

 

57

SBB mem, r

16 + E

 

 

 

 

Pг ← Pг – P г – CF

 

58

SBB r, data

4

1 0 0 0 0 0 sw

mod 0 1 r/m

Pг ← Pг Д – CF

 

 

 

 

data L

data H (sw = 01)

 

 

 

 

59

SBB mem, data

17 + E

 

 

 

 

П П

Д – CF

 

60

SBB а, data

4

0 0 0 1 1 1 0 w

data L

А А

Д

 

 

 

 

data H (w = 1)

 

 

 

 

 

 

61

DEC r

2

1 1 1 1 1 1 1 w

 

mod 0 0 1 r/m

Pг ← Pг – 1

 

62

DEC mem

155 + E

 

П П – 1

 

 

 

 

 

 

 

 

 

 

63

DEC r

2

0 1 0 0 1 reg

 

Pг ← Pг (8) – 1

 

64

NEG r

3

1 1 1 1 0 1 1 w

 

mod 0 1 1 r/m

Pг ← 0 – P г

 

65

NEG mem

16 + E

 

П ← 0 – П

 

 

 

 

 

 

 

 

 

 

66

CMP r l, r2

3

 

 

 

 

Pг – P г

 

 

 

67

CMP r, mem

9 + E

0 0 1 1 1 0 dw

 

mod reg r/m

Pг П

 

Результат

 

68

CMP mem, r

16 + E

 

 

 

 

П – P г

 

 

69

CMP r, data

4

1 0 0 0 0 0 sw

 

mod 1 1 1 r/m

Pг Д

 

определяется

 

 

 

 

 

data L

 

 

 

по флагам

 

 

 

 

 

 

 

data H (w = 1)

 

 

 

 

70

CMP mem, data

17 + E

 

 

П Д

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

49

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

71

CMP a, data

4

0 0 1 1 1 1 0 w

data L

А Д

 

 

 

 

 

 

 

 

data H (w = 1)

 

 

 

 

 

 

72

MUL src

71 + E

1 1 1 1 0 1 1 w

mod 1 0 0 r/m

AX ← AL × источник (при

 

 

 

 

124 + E

 

 

ω = 0)

 

 

 

 

 

 

 

 

 

 

DX, AX ← AX × источник

 

 

 

 

 

 

 

(при ω = 1)

 

 

 

 

73

IMUL src

90 + E

1 1 1 1 0 1 1 w

mod 1 0 0 r/m

DX, AX ← AX × источник

 

 

 

 

144 + E

 

 

(при ω = 1) со знаком

 

 

74

DIV src

90 + E

1 1 1 1 0 1 1 w

mod 1 1 0 r/m

AL ← AX/источник

 

 

 

 

 

 

 

 

AH ← остаток (при ω = 0)

 

 

 

 

155 + E

 

 

AX ← DХ, AX/источник

 

 

 

 

 

 

 

 

DX ← остаток (при ω = 1)

 

75

IDIV src

112 + E

1 1 1 1 0 1 1 w

mod 1 1 1 r/m

AL ← AX/источник

 

 

 

 

 

 

 

 

AH ← остаток (при ω = 0)

 

 

 

 

 

 

 

AX ← DX, AX/источник

 

 

 

 

 

 

 

 

DX ← остаток (при ω = 1)

50

 

 

 

 

 

 

со знаком

 

 

 

 

76

DAA

4

0 0 1 0 0 1 1 1

Десятичная

коррекция

при

 

 

 

 

 

 

 

сложении упакованных 2–10

 

 

 

 

 

 

 

чисел

 

 

 

 

77

DAS

4

0 0 1 0 1 1 1 1

Десятичная

коррекция

при

 

 

 

 

 

 

 

вычитании

упакованных

 

 

 

 

 

 

 

2–10 чисел

 

 

 

 

78

AAA

4

0 0 1 1 0 1 1 1

Коррекция

кода

ASCII

при

 

 

 

 

 

 

 

сложении

 

 

 

 

79

AAS

4

0 0 1 1 1 1 1 1

Коррекция

кода

ASCII

при

 

 

 

 

 

 

 

вычитании

 

 

 

 

80

AAM

83

1 1 0 1 0 1 0 0

0 0 0 0 1 0 1 0

Коррекция

кода

ASCII

при

 

 

 

 

 

 

 

умножении

 

 

 

 

81

AAD

60

1 1 0 1 0 1 0 1

0 0 0 0 1 0 1 0

Коррекция

кода

ASCII

при

 

 

 

 

 

 

 

делении

 

 

 

 

82

СBW

5

1 0 0 1 1 0 0 0

AH ← знак AL

 

 

 

 

 

 

 

50

 

 

 

 

 

Соседние файлы в папке Радиоавтоматика и МП