Шифр 75. Наберите и оттранслируйте следующую программу

  • ID: 51084 
  • 11 страниц
200 рубСкачать

как получить скидку

51084.docx [посмотреть задание]

task12.asm

TASK12.EXE

TASK12.LST

TASK12.MAP

TASK12.OBJ

task22.asm

TASK22.EXE

TASK22.LST

TASK22.MAP

TASK22.OBJ

Содержание:


Шифр 75. Наберите и оттранслируйте следующую программу

Задание 1: Вычисление арифметических выражений

1. Наберите и оттранслируйте следующую программу. Программа вычисляет выражение 5*(3+8*9) и результат заносит в регистр АХ. Вычисления проводятся в такой последовательности: 8*9, 3+8*9, 5*(3+8*9)

2. Выполните отладку программу с использованием отладчика TurboDebugger. В ходе отладки посмотрите как изменяются регистры в процессе выполнения программы. Чему равно значение регистра АХ перед выходом из программы? Совпадает ли результат вычислений с реальным значением выражения?

Совпадает. Т.к. AX=17716=37510

3. Используя предложенную выше программу, разработайте программу, которая вычисляет заданное выражение. Исполнить программу с несколькими (три - четыре) наборами исходных данных, проверить правильность результатов. Числа в наборе данных должны быть различными, т.е. положительными, отрицательными, нулевыми.

Вариант 0(75). Задание 1: А - 5 (В - 2С) + 2

3.1. Описание алгоритма программы

Вычисления проводятся по частям, промежуточные результаты заносятся в переменную TEMP, результат в регистре AX.

3.2. Листинг программы

task12.asm

3.3. Результат работы программы

A=-1,B=2,C=0:

AX = FFF716 = 65527, но т.к. флаг SF=1, то число отрицательное, следовательно, результат -1*(65536-65527)=-9.

Проверка: -1-5(2-2*0)+2 = -1-10+2=-9.

A=0, B=0, C=0

AX = 000216 = 2. Проверка: 0-5(0-2*0)+2 = 2.

A=-10, B=-20, C=-30

AX = FF3016 = 65328, но т.к. флаг SF=1, то число отрицательное, следовательно, результат -1*(65536-65328)=-208.

Проверка: -10-5(-20-2*(-30))+2=-10-200+2=-208.

Задание 2. Работа с одномерными массивами

.

1.Изучите приведенную ниже программу на языке ассемблера. Программа вычисляет максимальный элемент массива и результат заносит в переменную Max.

2. Выполните отладку программу с использованием отладчика TurboDebugger. Посмотрите как изменяются регистры в процессе выполнения программы. Чему равно значение переменной Max перед выходом из программы? Совпадает ли результат вычислений с реальным значением максимального элемента массива?

AX=5, что соответствует максимуму массива.

3.1. Описание алгоритма программы

До входа в цикл перебора элементов массива в СХ заносим количество итераций, т.е. количество элементов массива (6). DX обнуляем.

Просматриваем массив через регистр SI. Заносим текущий элемент в AX, сравниваем с 12h, если число больше, то сравниваем с 0AFh. Если меньше – увеличиваем DX, иначе – переход к следующему элементу.

3.2. Листинг программы task22.asm

3.3. Результат работы программы

A1 DW 0, 0, 0, 0, 0, 0

…DX=0

2. A2 DW 13h, 1, 1, 15h, 1, 1, 0AAh, 1, 1, 1

DX=3

A3 DW 0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h,0B8h,0B9h

DX=0