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

  • ID: 51212 
  • 9 страниц
220 рубСкачать

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

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

z1 2.asm

Z1 2.EXE

Z1 2.LST

Z1 2.MAP

Z1 2.OBJ

z2 2.asm

Z2 2.EXE

Z2 2.LST

Z2 2.MAP

Z2 2.OBJ

Содержание:


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

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

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

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

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

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

Вариант 8. Задание 9: 2В - 1 + 4 (А - 3С)

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

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

3.2. Текст программы z1_2.asm

TITLE Zadanie 1-2 ;9. 2В - 1 + 4 (А - 3С)

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

A=2,B=3,C=4:

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

Проверка: 2*3-1+4(2-3*4)=5+4*(-10)=-35.

A=0, B=0, C=0

AX = FFFF16 = 65535, но т.к. флаг SF=1, то число отрицательное

AX=-(65536-65535)=-1.

Проверка: 2*0-1+4(0-3*0)=-1.

A=-1, B=-2, C=-3

AX = 001B16 = 27. Проверка: 2*(-2)-1+4(-1-3*(-3)) = -5+32=27.

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

.

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

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

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

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

Вариант 8. Задание 2: Составьте программу для подсчета вхождений заданного целого числа в массив. Количество вхождений должно находиться в регистре DX

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

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

Просматриваем массив через регистр SI. Заносим текущий элемент в AX, сравниваем с El (1), если число равно – увеличиваем DX, иначе – переход к следующему элементу.

3.2. Текст программы z2_2.asm

MODEL small

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

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

…DX=0

A2 DW 13, 14, 16, 15, 1, 1, 7, 1, 1, 1

DX=5

A3 DW 0, -3, 1, -9, 44, 1, 5, 2, 4, 77

DX=2