ТУСУР, информатика. Ассемблер для процессора i8086 (лабораторные работы)


Узнать стоимость этой работы
08.06.2026, 10:44

Выбор варианта контрольной работы № 2 и лабораторной работы № 1 осуществляется по общим правилам с использованием следующей формулы:

V = (N*K) div 100,

где V — искомый номер варианта,

N — общее количество вариантов,

div — целочисленное деление (после деления дробная часть отбрасывается),

при V= 0 выбирается максимальный вариант, K — код варианта.

При изучении данного курса Вам потребуется:

1) операционная система MSDOS. Допускается применение ее в самостоятельном режиме или под управлением операционной системы Windows;

2) Norton Commander или другая подобная утилита;

3) DEBUG — отладчик;

4) NASM — транслятор ассемблера i8086.

Данный лабораторный курс состоит из двух частей. В процессе выполнения первой части (лабораторная работа № 1) производится знакомство с языком, занимающим промежуточное положение между машинным языком и ассемблером. Обладая ассемблерной формой записи кодов операций и регистров, данный язык не имеет ассемблерных псевдооператоров и использует численные (не символьные) адреса. Знакомство с данным языком производится с помощью отладчика Debug и прежде всего предназначено для изучения механизма выполнения процессором машинных программ. Кроме того, создается основа для последующего написания и отладки ассемблерных программ.

Во второй части курса (лабораторная работа № 2) производится знакомство с основами программирования на языке ассемблера. При этом объектами рассмотрения являются не только операторы ассемблера, но и методы проектирования и отладки программ.

Выполните задание:

Без использования калькулятора выполните следующие действия над двумя четырехзначными целыми положительными десятичными числами:

1) запишите исходные числа в двоичной системе счисления;

2) найдите сумму двоичных чисел из п. 1;

3) найдите разность двоичных чисел из п. 1 (от меньшего числа отнять большее);

4) запишите исходные числа в шестнадцатеричной системе счисления;

5) найдите сумму шестнадцатеричных чисел из п. 4;

6) найдите разность шестнадцатеричных чисел из п. 4 (от большего числа отнять меньшее число).

Примечание. В качестве проверки рекомендуется найти сумму результатов п. 3 и п. 6, предварительно представив их в одной и той же системе счисления (двоичной или шестнадцатеричной). Указанная сумма должна быть равна 0. В самом деле, если обозначим исходные числа как A и B, то результат п. 3: A B, а результат п. 6: B A. Найдем искомую сумму: (A B) + (B A) = 0.


ЛАБОРАТОРНАЯ РАБОТА № 1 АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ, ВЫВОД СИМВОЛОВ, ВЫВОД ДВОИЧНЫХ ЧИСЕЛ

Цель работы

Целью настоящей работы является первоначальное знакомство с программой Debug — важнейшим помощником разработчика программ на языке Ассемблер. С помощью этой программы производится анализ и заполнение ячеек регистровой и оперативной памяти, осуществляется пошаговое выполнение программы. Другая цель: знакомство с некоторыми инструкциями Ассемблера, выполняющими арифметические операции, знакомство с инструкциями программного прерывания, с инструкциями пересылки данных, операторами сдвигов, операторами циклов.

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

Для успешного выполнения лабораторной работы № 1 нужно изучить из пособия [1] темы 3. ПРОГРАММИРОВАНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ, 4. ВЫВОД СИМВОЛОВ НА ЭКРАН, 5. ВЫВОД НА ЭКРАН ДВОИЧНЫХ ЧИСЕЛ. Для формирования строк символов и вывода их на экран воспользуйтесь значениями из таблицы 1 и таблицы 2.

Таблица 1 — Коды ASCII

Символ  16рич.

ASCII       код

Символ  16рич.

ASCII       код

Символ  16рич.

ASCII       код

Символ  16рич.

ASCII       код

20

8           38

Р          50

H        68

!           21

9           39

Q         51

I         69

“          22

:           3A

R         52

J         6A

#          23

;           3B

S          53

k         6B

$          24

<           3C

T          54

L         6C

%         25

=           3D

U         55

M         6D

&         26

>           3E

V         56

n         6E

‘           27

?            3F

W         57

o         6F

(           28

@           40

X         58

p         70

)           29

A           41

Y         59

q         71

*           2A

B           42

Z          5A

r         72

+        2B

C          43

[           5B

s         73

,          2C

D          44

\          5C

t         74

–          2D

E          45

]           5D

u         75

.          2E

F          46

^         5E

v         76

/          2F

G          47

_         5F

w        77

0         30

H          48

`           60

x         78

1         31

I           49

a         61

y         79

2         32

J          4А

b          62

z          7A

3         33

K          4В

c          63

{          7B

4         34

L           4C

d          64

|         7C

5         35

M         4D

e          65

}         7D

6         36

N          4E

f           66

~         7E

7         37

O          4F

g          67

DEL      7F

 

Таблица 2 — Коды букв русского алфавита

Символ  Код(16)

Символ  Код(16)

Символ  Код(16)

Символ  Код(16)

А          80

Р             90

а            А0

р           Е0

Б           81

С             91

б            А1

с            Е1

В           82

Т             92

в            А2

т           Е2

Г           83

У             93

г           А3

у          Е3

Д           84

Ф             94

д            А4

ф          Е4

Е           85

Х             95

е            А5

х           Е5

Ж          86

Ц             96

ж           А6

ц           Е6

З          87

Ч             97

з           А7

ч           Е7

И         88

Ш             98

и           А8

ш          Е8

Й         89

Щ            99

й           А9

щ          Е9

К          8А

Ъ             9А

к           АА

ъ          ЕА

Л          8В

Ы             9В

л           АВ

ы          ЕВ

М        8С

Ь             9C

м          AC

ь           EC

Н        8D

Э            9D

н           AD

э           ED

О        8E

Ю            9E

о           AE

ю          EE

П         8F

Я             9F

п           AF

я           EF


Задание

Разработать с помощью Debug программу, выполняющую вывод на экран текстового сообщения и последующее вычисление выражения:

Y=[(Х1+Х2)ХЗ–Х4]/Х5,

где Х1—Х5 — десятичные целые числа, выбранные в соответствии с номером варианта из таблицы 3.

Результат вычисления выражения программа помещает в регистры AX и DX. Нужно вывести эти результаты в двоичной системе счисления.

Структура выходного сообщения программы:

“Программа вычисления выражения Y=[(Х1+Х2)ХЗ–Х4]/Х5, где X1=..., X2=..., X3=..., X4=..., X5=...”

AX=0011110111000101 DX=0000000000010101

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

Вместо точек должны выводиться заданные числа (в шестнадцатеричной системе).

Таблица 3 — Варианты заданий к лабораторной работе № 1

вари

анта

X1

X2

X3

X4

X5

вари

анта

X1

X2

X3

X4

X5

1

275

361

15

2250

10

11

427

135

14

3221

15

2

413

228

14

4353

13

12

327

393

13

1929

12

3

199

328

16

3833

11

13

562

248

11

2520

17

4

355

436

13

4318

20

14

682

133

10

3563

22

5

359

537

11

5413

15

15

269

331

18

4151

14

6

227

199

19

2873

12

16

361

483

13

5621

22

7

436

327

13

3315

18

17

568

329

17

6209

21

8

521

263

12

2544

21

18

249

325

15

4683

16

9

324

391

17

4561

19

19

189

459

19

5394

19

10

614

134

17

8236

23

20

288

274

18

4815

20


Примечание 1. Загрузка в регистры заданных чисел (преобразованных вручную в шестнадцатеричную систему) должна производиться только с помощью инструкций MOV.

Примечание 2. Рекомендуется выполнить проверку результата выполнения программы путем сравнения его с результатом ручного счета. Так как при ручном счете используется десятичная система счисления, то перед сравнением результатов их необходимо записать в одной и той же системе.

Отчет по лабораторной работе должен содержать:

1. Титульный лист — форма титульного листа представлена в Приложении 4.

2. Задание на лабораторную работу. В задании должен быть указан номер варианта и представлены исходные данные из таблицы 3.

На проверку необходимо отправить каталог LAB1, в который нужно поместить:

1. Исполнимый файл программы, то есть файл с расширением .com. Имя файла может быть выбрано по Вашему усмотрению, но придерживайтесь правил именования файлов для DOS — имя должно состоять не более чем из 8 символов.

2. Отчет к лабораторной работе, выполненный с помощью редактора Word.


ЛАБОРАТОРНАЯ РАБОТА № 2 ВВОД-ВЫВОД ЧИСЕЛ, ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ

Цель работы

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

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

Для успешного выполнения лабораторной работы № 2 нужно изучить из пособия [1] темы: 6. ВЫВОД НА ЭКРАН ЧИСЕЛ В ШЕСТНАДЦАТЕРИЧНОЙ ФОРМЕ, 9. ВВОД С КЛАВИАТУРЫ ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ.

Одной из целей работы является развитие навыков алгоритмизации задач и отладки программ.

До сих пор нашим единственным помощником при написании и отладке машинных программ была системная программа Debug. Мы и далее будем широко использовать Debug при отладке своих программ. Что касается написания программы, то тут помощь Debug явно недостаточна, и процесс написания скольконибудь сложной программы скорее всего продлится очень долго. По этой причине мы переходим к написанию программ на языке ассемблера.

Целью выполнения данной работы является получение начальных навыков по разработке программ на языке ассемблера. А именно — рассматриваются псевдооператоры, позволяющие разрабатывать простые ассемблерные программы, а также производится первоначальное знакомство с системными программами (EDIT, NASM), обеспечивающими преобразование программы на языке ассемблера в машинную программу.

Для этого из пособия [1] изучите темы и выполните все задания к ним 11. ПРОСТЫЕ ПРОГРАММЫ НА АССЕМБЛЕРЕ, 12. ОСНОВНЫЕ ОПЕРАТОРЫ АССЕМБЛЕРА, 13. Пример программы на ассемблере, 14. ВЫВОД НА ЭКРАН ДЕСЯТИЧНЫХ И ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ.

Задание

Разработать на ассемблере и отладить программу, которая выполняет:

1) ввод с клавиатуры двух 4значных шестнадцатеричных чисел (для ввода с клавиатуры можно использовать любые числа), которые записываются в качестве содержимого регистров BP и DI;

2) вывод на экран содержимого регистров, заполненных на шаге 1, в виде шестнадцатеричных чисел;

3) вывод на экран содержимого регистров, заполненных на шаге 1, в виде десятичных чисел;

4) вывод на экран содержимого регистров, заполненных на шаге 1, в виде двоичных чисел.

Пример информации на экране:

ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА BP  AD56<Enter> ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА DI  7F09<Enter> ЧИСЛА В ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЕ

(BP) = AD56  (DI) = 7F09 ЧИСЛА В ДЕСЯТИЧНОЙ СИСТЕМЕ (BP) = 44374   (DI) = 32521 ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ

(BP) = 1010110101010110  (DI) = 0111111100001001

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

Примечание 2. Все процедуры должны иметь вводные и текущие комментарии.

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

Для того чтобы реализовать вывод на экран чисел в десятичной системе счисления, воспользуйтесь алгоритмом вывода десятичного числа из [1].

Примечание 4. При реализации вывода второй и третьей шестнадцатеричных цифр числа, сдвигу числа вправо должен предшествовать его сдвиг влево. Для выполнения сдвига влево используйте инструкцию SHL («Shift Left» — логический сдвиг влево). Использование этой инструкции аналогично SHR. Выполнение SHL имеет такой же эффект, как и умножение на два, четыре, восемь и так далее, в зависимости от числа (соответственно единицы, двойки или тройки), хранящегося в СL.

Примечание 5. Для получения на экране достаточно хорошей формы представления информации выполняйте вывод промежуточных пробелов. Число пробелов определяйте опытным путем.

Отчет по лабораторной работе № 2 должен содержать:

1. Титульный лист — форма титульного листа представлена в Приложении 4.

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

3. Дерево подпрограмм. Пример дерева подпрограмм приведен в приложении 3 (рис. 4).

4. Файловую структуру программы. Примеры файловой структуры программы приведены в [1] рис. 14.3 и 15.1.

На проверку необходимо отправить каталог LAB2, в который нужно поместить:

1. Исходный файл программы, то есть файл с расширением .asm. Имя файла может быть выбрано по Вашему усмотрению, но придерживайтесь правил именования файлов для DOS — имя должно состоять не более чем из 8 символов.

2. Исполнимый файл программы, то есть файл с расширением .com

3. Отчет к лабораторной работе, выполненный с помощью редактора Word.



Узнать стоимость этой работы