Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 5 ВМС.doc
Скачиваний:
11
Добавлен:
07.11.2018
Размер:
1.42 Mб
Скачать

Лабораторная работа № 2. Программирование циклов и условий. Работа с массивами.

В этой работе необходимо применить команду сравнения данных (CMP), команды условных и безусловных переходов (Jmp и Jcc), команду организации циклов (Loop), использование индексных регистров SI и DI и регистра CX.

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

; Самая первая программа для трассировки

;

assume cs:mycode,ds:mydate,ss:mystack

mycode segment para

start: push ds

xor ax,ax

push ax

mov ax,seg mydate

mov ds,ax

xor si,si ; обнуление

mov di,si

mov sum,si

mov cx,n ; подготовка цикла

cycl: mov ax,a[2*si] ; выборка элемента массива

cmp ax,zero ; сравнение с нулём

jl ifless ; переход, если «меньше»

; а если не меньше, то:

add ax,ax ; удвоение

jmp summa ; обход ветви «меньше»

ifless: mov ax,zero

summa: mov a[2*di],ax ; запись изменённого элемента

add ax,sum ; суммирование

mov sum,ax ; и запись суммы

inc si ; увеличение индексов

inc di

loop cycl

retf

mycode ends

mydate segment para

n dw 12

a dw 4,3,8,-5,-1,-9,6,7,2,-8,1,-3

sum dw ?

zero dw 0

mydate ends

mystack segment para stack ‘stack’

dw 100 dup (?)

mystack ends

end start

Требуется ввести эту программу и покомандно выполнить её, как описано в лабораторной работе №1, после чего выполнить один из вариантов задания:

  1. По данному массиву целых чисел построить массивы частных и остатков от деления на простое число (например, на 3);

  2. По данному массиву целых чисел построить массивы квадратов и кубов;

  3. По данным двум массивам целых чисел построить массивы сумм и разностей их элементов;

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

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

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

  7. В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти среди них минимум и максимум;

  8. В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти их среднее;

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

  10. В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти число элементов, меньших их среднего арифметического;

  11. В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти их произведение;

  12. В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти количество нечётных цифр;

  13. В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти количество простых чисел.