Материал: 1117

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Продолжение табл. 3.2

--позже: упрощенные директивы определения сегментов – – в уч. пос., ч.4; определения процедур: proc и endp [2, с.43; 1, с.115; 6, с.89];

завершения программы end [1, с.115];

определения данных: байта (db), слова (dw), двойного слова (dd);

--позже: директивы dq и dt – в уч. пос., ч.2;

префиксы переопределения типов byte ptr, word ptr [1, с.121]

--позже: префикс переопределения типов dword ptr [1, с.121] – в уч. пос.,ч.7

Команды непривилегированные:

передачи данных: mov, lea [2, с.15-17; 6, с.138];

-- позже: команды lahf, lds, les, sahf, xchg, xlat – в уч. пос., ч.7;

арифметические (команды двоичной арифметики): сложения (add и adc), вычитания (sub и sbb), увеличения на единицу (inc), уменьшения на единицу (dec), умножения (mul и imul), деления (div и idiv), преобразования байта в слово (cbw) и слова в двойное слово - cwd [1, с.225; 4, с.63-67];

--позже: команды cwde и cdq [1, с.32] –в уч. пос., ч.7;

сравнения cmp [1, с.37; 2, с.19];

безусловного (jmp) и условного (jz, jnz, js, jns) перехода [2, с.27-28];

--позже самостоятельно: jc, jnc jcxz – в уч. пос., ч.4; jp, jnp, ja, jna, jg, jge, jl, jle, jcxz [2, с.27-28] – в уч. пос., ч.7;

организации цикла loop [1, с.47-51; 2, с.28; 7, с.74];

 

--

позже самостоятельно: loopz, loopnz, loope, loopne [2, с.28] – в уч. пос., ч.7;

передачи управления (вызова процедур пользователя (call) и функций операционной системы DOS (int) и возврата из процедур – ret [2, с.27-31];

--позже самостоятельно: iret - выход из обработчика прерываний [2, с.29] – в уч. пос., ч.8;

--позже: операторы short (8), small (16), large (32) [1, с.120] – в уч. пос., ч.7;

работы со стеком: push, pop [2, с.27-31];

--позже самостоятельно: pushf, popf [2, с.26] – в уч. пос., ч.6;

Адресация

регистр-регистр:

mov ax,bx ; занести (скопировать) в ax содержимое bx [4, с.34]

--позже: mov ax,[bx] ; занести в регистр ax содержимое памяти по адресу из регистра bx [4, с.34-40] – в уч. пос., ч.6

mov ax,[25] ; занести (скопировать) в регистр ax содержимое ячейки по смещению 25

mov al,bl ; занести (скопировать) в регистр al содержимое bl

mov bx,cx ; занести (скопировать) в регистр bx содержимое cx

регистр-память:

mov ax,worda ; занести в регистр ax значение переменной (слова) worda

mov al,bytea; занести в регистр al значение переменной (байта) bytea

mov dx,worda ; занести в регистр dx значение переменной (слова) worda

память-регистр:

mov worda,ax ; занести в ячейку worda содержимое регистра ax (слово)

16

mov bytea,al ; занести в ячейку bytea содержимое регистра al (байт)

Продолжение табл. 3.2

mov worda,cx ; занести в ячейку worda содержимое регистра cx (слово)

регистр-непосредственный операнд:

mov ax,25 ; занести в регистр ax значение 25

mov bx,2 ; занести в регистр bx значение 2

mov al,25 ; занести в регистр al значение 25

память-непосредственный операнд:

mov worda,25 ; занести в ячейку worda значение 25

mov bytea,25 ; занести в ячейку bytea значение 25

Использование процедур операционной системы:

ввод с клавиатуры [2, с.57-62]; вывод на экран. [2, с.63-67].

Дополнительная информация (рассматривается на практических занятиях):

-процессоры Intel в реальном режиме [1, с.20-60];

-последовательность выполнения команд [2, с.12-13];

-структура процессора 8086 [2, с.9, рис. 1.1.2];

-сегментная адресация [2, с.9, рис.1.1.3];

-представление данных в компьютерах [1, с.14-19];

-логика и организация программ;

-условные и безусловные переходы [6, с.156, 162];

-дисковая память: функции базовой версии DOS [3, гл.16].

Примеры программ: lab1pr1.asm, lab1pr2.asm, lab1pr3.asm, lab1pr4.asm, lab1pr5.asm, lab1pr6.asm, lab1pr7.asm, lab1pr8.asm, lab1_sa_.asm

Используемое ПО: tasm.exe, tlink.exe, td.exe, rtm.exe, dpmiload.exe, dpmimem.dll

Формируемые файлы: lab1_fio.asm, lab1_fio.obj, lab1_fio.lst, lab1_fio.exe

Литература: 1. Зубков С.В. Assembler для DOS, Windows и UNIX. – 3-е изд.,

стер. – М.: ДМК Пресс; СПб.: Питер, 2005. – 608с.

2.Бурдаев О.В., Иванов М.А., Тетерин И.И. Ассемблер в задачах защиты информации/ Под ред. И.Ю.Жукова. – М.: КУДИЦ-ОБРАЗ, 2002. – 320с.

3.Абель Питер. Язык ассемблера для IBM PC и программирования: Пер. с англ. – М.: Высшая школа. – 1992. – 447 с.

4.Олейник Л.Е. Язык ассемблера для микропроцессора 8086: Курс лекций. – Омск: Сибирская региональная школа бизнеса, 2000

5.Дао Л. Программирование микропроцессора 8088. – М.: Мир, 1988. – 356 с.

6.Абель Питер. Ассемблер. Язык и программирование для IBM PC: Пер. с англ., изд.5-е стереот. – Киев.: Век; М.: Энтроп; Киев: НТИ, 2003. – 736 с.

Задание (З_ЛР_1): Составить EXE–программу для МП Intel 8086 для вычисления по формуле, содержащей арифметические операции сложения, вычитания, умножения и деления (в соответствии с заданным вариантом)

Использовать в качестве аргументов b1,b2,...,w1,w2,...,d1,d2,...– байты, слова и двойные слова

Вари- А. Все данные (b1,b2,b3,...,w1, w2,w3,...d1,d2,d3,....) вводятся c

анты: клавиатуры после запроса (прокрутка снизу вверх)

Б. Данные (b2, b4,...,w1, w3,...,d2, d4,....) вводятся c клавиатуры после запроса (прокрутка снизу вверх), все остальные – из сегмента данных

17

Окончание табл. 3.2

Применяется перевод из ASCII-формата в двоичный код (для данных, введенных с клавиатуры) и перевод из двоичного кода в ASCII-формат (для данных, выдаваемых на экран)

Результат вывести на экран по формату:

Вари- А. "Вычисление по формуле:____, Y=____ для b1=__;b2=__;b3=__; анты: b4=__;w1=___и т.д." (после очистки – в свободную строку)

Б. "Вычисление по формуле:____, Y=___ (после очистки – в строку №10)

Лабораторная считается сданной, если:

-полностью выдержаны требования к программе, т.е. создана программа заданного типа для заданного микропроцессора, состоящая из одного модуля и использующая перечисленные директивы, команды (применяющие соответствующую адресацию), заданные функции операционной системы MSDOS и сформированы файлы, предусмотренные заданием;

-в комментариях указана максимальная длина промежуточных результатов;

-при ассемблировании и компоновке не обнаружено ошибок;

-результат совпадает с результатом ручного просчета для контрольных примеров (составить самостоятельно по аналогии с пп.2.1.16, 2.1.17 и 2.1.18, а также использовать произвольно заданные преподавателем. При этом разрешается подбирать исходные данные таким образом, чтобы результат получался не отрицательным)

Типичные ошибки: см. подраздел 5

Задание повышенной сложности (ЗПС_ЛР_1): Составить EXE-программу МП Intel 8086 для вычисления по формуле, содержащей арифметические операции сложения, вычитания, умножения и деления (в соответствии с заданным вариантом, но дополнить программу таким образом, чтобы на экран правильно выводился отрицательный результат вычисления).

4.СВЕДЕНИЯ, НЕОБХОДИМЫЕ ДЛЯ ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ

4.1. Язык ассемблера и архитектура компьютера

Язык ассемблера является ориентированной на человека формой набора инструкций процессора. Машинный язык (т.е. набор инструкций процессора) и язык ассемблера функционально эквивалентны, но на языке ассемблера намного проще программировать. При этом ассемблер транслирует инструкции из мнемонического вида в их машинный эквивалент. В дальнейшем и язык ассемблера и компилятор с этого языка будем называть ассемблером.

Ассемблер позволяет достигать любой части памяти и управлять любым устройством ввода-вывода, т.к. программы на ассемблере могут делать все то, на что способен процессор. Хорошо написанная на

18

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

Процессор Intel 8086 представляет собой основание всей ветви процессоров серии iAPx86, и язык ассемблера, используемый для его программирования, известен как язык ассемблера процессора 8086. Программы, написанные на этом языке, могут выполняться на любом процессоре серии iAPx86. В первой главе пособия не рассматриваются инструкции, выполняемые не на всех компьютерах этого семейства. Например, не рассматриваются инструкции cwde и cdq, используемые в процессоре Intel 80386, а рассматриваются только cbw и cwd.

Кроме того, рассмотрение инструкций ограничивается архитектурой процессора 8086, и в связи с этим, например, при обсуждении инструкции mov не применяются варианты с регистрами eax, ebx, ecx и т.п.

Электронно-вычислительная машина (ЭВМ), или, по-другому, компьютер система, состоящая из пяти функциональных подсистем:

1)арифметической (сложение, вычитание, умножение, деление, операции "И", "ИЛИ", "исключающее ИЛИ" и т.д.);

2)ввода (клавиатура, "мышь", диск и т.д.);

3)управления (координация всех функций);

4)памяти (с прямым доступом для чтения и записи – ОЗУ и диск и доступной только по чтению ПЗУ);

5)вывода (дисплей, принтер, графопостроитель, диск).

Из подсистемы памяти компьютера поступают исходные значения для арифметических и логических операций, и сюда записывается их результат. Подсистема управления объединяет работу остальных четырех подсистем и управляет перемещением данных. Подсистема управления и арифметическая подсистема образуют обрабатывающее устройство или процессор. Процессор управляет работой каждой из подсистем и координирует их в один согласованно работающий модуль.

4.2. Язык ассемблера

Процессор извлекает данные из памяти, и эти данные указывают ему, что нужно делать. Такие данные обычно называются инструкциями.

Значение каждой инструкции имеет для процессора строго определенный смысл. Например, значение инструкции 4 говорит процессору 8086, что нужно сложить значение, хранящееся в следующей ячейке памяти, с регистром al.

Процессор отслеживает внутренний указатель на то место в памяти, где хранится значение следующей выполняемой инструкции. Когда из памяти считывается и выполняется некоторая инструкция, указатель перемещается на следующую инструкцию. Некоторые инструкции могут

19

устанавливать указатель инструкций в новое значение, это дает процессору возможность выполнять ряд инструкций не строго последовательно и даже выполнять различные группы инструкций, в зависимости от определенных условий.

4.3. Процессоры 8086 и 80386

Процессор Intel 8086 представляет собой только один процессор из серии процессоров, известных как серия iAPx86. Другие процессоры данной серии: Intel 80286, Intel 80386 и т.д. Все они в дальнейшем будут обозначаться как процессоры 8086, 80286, 80386 и т.п.

4.4. Возможности процессора 8086

Процессор 8086 может адресоваться к большому объему памяти, имеет мощный набор инструкций, при соответствующем программировании может обеспечивать работу высокоэффективных программ. Его тактовая частота – 4,77…8 мегагерц (МГц).

Тактовая частота процессора 80286 – 6…16 МГц; процессора 80386 – 16…35 МГц, и современных процессоров этой серии – более 4000 МГц, т.е. 4 ГГц.

4.5. Память

Основной единицей памяти компьютера является бит. В бите может храниться значение 0 или 1. Процессоры 8086, 80386 и др. работают с байтами, которые состоят из 8 битов.

Байт – это наименьшая единица адресации процессора. В нем может храниться 1 символ, 1 беззнаковое значение от 0 до 255 или одно значение со знаком в диапазоне от -128 до +127. Байт не подходит для хранения значений с плавающей точкой и указателей на память.

Процессор 8086 может адресоваться к памяти объемом 1 мегабайт (это 1 048 576 ячеек памяти, каждая размером 8 битов). Первый байт памяти имеет адрес 0, а последний – адрес 0fffffh.

Адрес 0fffffh – это шестнадцатеричная форма записи, о чем говорит суффикс h. В десятичном виде это эквивалентно значению 1 048 575.

В любой момент программа процессора 8086 может считать или изменить содержимое любого из 1 048 576 байтов памяти (один мегабайт – Мб). Процессор 80386 может обращаться к памяти в 4 000 раз большей. Хотя процессор 8086 может адресоваться к памяти объемом 1 Мб, но доступно для общего использования только 640 Кб (килобайт). Остальное пространство предназначено для использования системными программами, а также занято памятью, используемой для работы с дисплеем (видеопамять).

20

Источник: https://studfile.net/preview/16407174/