Главная страница

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


Скачать 253 Kb.
НазваниеПрограмма представляется в виде последовательности команд, каждая из которых записывается с помощью целого числа байт порядок команд однозначно определяется программой
АнкорАссемблер методичка.doc
Дата21.03.2018
Размер253 Kb.
Формат файлаdoc
Имя файлаАссемблер методичка.doc
ТипПрограмма
#17015
страница7 из 7
1   2   3   4   5   6   7
озврат значения в функциях языков высокого уровня осуществляется через регистр AX (AL, DX:AX), в зависимости от размера возвращаемого значения.

Приведем пример функции, складывающей значения параметров и возвращающей результат через AX:

Sum PROC NEAR

PUSH BP

MOV BP, SP

MOV AX, SS:[BP+8]

ADD AX, SS:[BP+6]

POP BP

RET

Sum ENDP

Заметим, что все, что было записано в стек внутри под-программы, должно быть извлечено из него, так как в противном случае команда RET возвратит управление не в ту точку, откуда была вызвана подпрограмма.
Практическая часть
Практическая часть работы включает выполнение следующих действий:

Правильность разработки и выполнения контролируется путем ручной трассировки составленного алгоритма с последующим сравнением результатов работы программы с результатами ручной трассировки.
Варианты заданий
Для всех заданий входные данные передаются в подпрограмму через стек, а результат возвращается через регистр AL. Для массивов входными данными являются адрес массива и число элементов в нем.

  1. Найти НОД 2 заданных чисел.

  2. Найти максимум в заданном массиве.

  3. Найти минимум в заданном массиве.

  4. Найти сумму четных элементов массива.

  5. Найти сумму нечетных элементов массива.

  6. Подсчитать число ненулевых элементов массива.

  7. Найти индекс минимального элемента в массиве.

  8. Найти индекс максимального элемента в массиве.

  9. Вычислить i-е число Фибоначчи.

  10. Вычислить значение функции F(x)=x2+5x+7

  11. Вернуть 1, если числа являются сторонами треугольника Пифагора, иначе вернуть 0.

  12. Вернуть 1, если точка лежит внутри окружности и 0 иначе.


Порядок выполнения работы


  1. Сформировать исходные данные в соответствии с вариантом.

  2. Составить алгоритм подпрограммы и основной программы для решения поставленной задачи.

  3. Провести трассировку заданного алгоритма с использова-нием заданных исходных данных.

  4. Составить программу заданного алгоритма в мнемокодах.

  5. Оформить отчет по лабораторной работе.

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


Содержание отчета


  1. Титульный лист.

  2. Текст задания.

  3. Алгоритм программы.

  4. Текст программы на ассемблере с комментариями.

  5. Таблица трассировки программы.

Библиографический список


  1. Пильщиков В.Н. Программирование на языке ассемблера IBM PC. М.: «Диалог – МИФИ», 1999. – 288 с.

  2. Михальчук В.М., Ровдо А.А., Рыжиков С.В. Микропроцессоры 80х86, Pentium. Архитектура, функци-онирование, программирование, оптимизация кода. Минск: БИТРИКС, 1994.

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

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


СОДЕРЖАНИЕ


Введение

1

1. Микропроцессор Intel 8086

1

1.1. Общие принципы работы МП 8086 при выполнении прикладных программ


1

1.2. Регистры процессора

4

1.3. Способы адресации МП Intel 8086

7

1.4. Указание размера операнда

12

2. СТРУКТУРА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА

13

2.1.Основные понятия языка ассемблера

13

2.2. Написание сегмента данных

14

2.3. Написание сегмента стека

15

2.4. Написание сегмента кода

16

2.5. Написание головной программы

17

2.6. Подготовка программы к выполнению

19

2.7. Отладка программ в Turbo Debugger

20

3. ЛАБОРАТОРНЫЙ ПРАКТИКУМ

21

Библиографический список

37

ПРИЛОЖЕНИЕ

38



ПРИЛОЖЕНИЕ
Основные команды МП 8086

Таблица П.1

Команда

Действие

Z

S

C

O

MOV Оп1, Оп2

Оп1Оп2

-

-

-

-

XCHG Оп1, Оп2

Оп1↔ Оп2

-

-

-

-

NEG Оп1

Оп1:=-Оп1













ADD Оп1, Оп2

Оп1:= Оп1+Оп2

*

*

*

*

ADC Оп1, Оп2

Оп1:= Оп1+Оп2+Флаг C

*

*

*

*

SUB Оп1, Оп2

Оп1:= Оп1-Оп2

*

*

*

*

SBC Оп1, Оп2

Оп1:= Оп1-Оп2-Флаг C

*

*

*

*

INC Оп

Оп1:= Оп1+1

*

*

-

*

DEC Оп

Оп1:= Оп1-1

*

*

-

*

MUL Оп,

IMUL Оп

DX:AX = AX*Оп

*

-

*

*

AX = AL*Оп

*

*

*

*

DIV Оп,

IDIV Оп

AX = DX:AX div Оп;

DX = DX:AX mod Оп

*

-

*

*

AL = AX div Оп;

AH = AX mod Оп

*

*

*

*

CMP Оп1, Оп2

Оп1-Оп2 без сохранения результата

*

*

*

*

NOT Оп1

Оп1:= ⌐Оп1













AND Оп1, Оп2

Оп1:= Оп1 ^ Оп2

*

*

0

0

OR Оп1, Оп2

Оп1:= Оп1∨Оп2

*

*

0

0

XOR Оп1, Оп2

Оп1:= Оп1⊕ Оп2

*

*

0

0

TEST Оп1, Оп2

Оп1 ^ Оп2 без сохранения результата

*

*

0

0

SHL Оп1,1

SHL Оп1,CL

Логический сдвиг влево на 1 или CL бит

*

*

*

*

SHR Оп1,1

SHR Оп1,CL

Логический сдвиг вправо на 1 или CL бит

*

*

*

*







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


Команда

Действие

Z

S

C

O

SAR Оп1,1

SAR Оп1,CL

Арифметический сдвиг вправо на 1 или CL бит

*

*

*

0

JMP метка

Переход на метку

-

-

-

-

JC метка

JB метка

Переход, если C=1 (если Оп1 в CMP<Оп2 и Оп1 и Оп2 - беззнаковые)

-

-

-

-

JNC метка

JNB метка

JAE метка

Переход, если C=0 (если Оп1 в CMP>=Оп2 и Оп1 и Оп2 - беззнаковые)

-

-

-

-

JZ метка

Переход, если Z=1 (если Оп1 в CMP=Оп2 или если результат нулевой)

-

-

-

-

JNZ метка

Переход, если Z=0 (если Оп1 в CMP<>Оп2 или если результат ненулевой)

-

-

-

-

JS метка

Переход, если S=1 (если результат отрицательный)

-

-

-

-

JNS метка

Переход, если S=0 (если результат положительный)

-

-

-

-

JBE метка

JNA метка

Переход, если C∨Z=1 (если Оп1 в CMP<=Оп2 и Оп1, Оп2 – беззнаковые)

-

-

-

-

JA метка

Переход, если C=0 и Z=0 (если Оп1>Оп2 и Оп1, Оп2 – беззнаковые)

-

-

-

-

JL метка

Переход, если O⊕S = 1 (если Оп1 в CMP<Оп2 и Оп1 и Оп2 – знаковые)

-

-

-

-

JNL метка

JGE метка

Переход, если O⊕S = 0 (если Оп1 в CMP>=Оп2 и Оп1 и Оп2 – знаковые)

-

-

-

-




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


Команда

Действие

Z

S

C

O

JLE метка

JNG метка

Переход, если O⊕S = 1 и C=1 (если Оп1 в CMP<=Оп2 и Оп1 и Оп2 – знаковые)

-

-

-

-

JG метка

Переход, если O⊕S = 0 и Z=0 (если Оп1 в CMP>Оп2 и Оп1 и Оп2 – знаковые)

-

-

-

-

JO метка

Переход, если O=1

-

-

-

-

JNO метка

Переход, если О=0

-

-

-

-

LOOP метка

CX := CX-1, переход, если CX<>0

-

-

-

-

CALL метка

Вызов подпрограммы

-

-

-

-

RET

Возврат из подпрограммы

-

-

-

-

PUSH регистр

Запись регистра в стек

-

-

-

-

POP регистр

Восстановление из стека

-

-

-

-

PUSHF

Запись регистра FLAGS в стек

-

-

-

-

POPF

Восстановление FLAGS из стека

-

-

-

-

CLC

Сброс C

-

-

0

-

STC

Установка C

-

-

1

-

CBW

Заполняет AX знаковым битом AL













CWD

Заполняет DX знаковым битом AX














1   2   3   4   5   6   7


написать администратору сайта