ЗАДАЧА: выполнить упорядочение массива данных, содержащего 70 байт и расположенного с адреса 0150Н по убыванию.

ОТЧЕТ

по лабораторным работам по дисциплине:

«Вычислительные машины, комплексы и сети»

 

Выполнил:

студент группы 36-62

Дудалова А.М.

Принял:

к.т.н. доцент

Томус Ю. Б.

 

 

Альметьевск 2008


ЛАБОРАТОРНАЯ РАБОТА №1

ЗАДАЧА: Взять число из массива, определить четность, сформировать два массива (четный и нечетный). Размер исходного массива 70.

 

LXI H,0100H ;задаем массив с адреса 0100Н

MVI B,46H ;задаем размер исходного массива

LXI D,0200H ;задаем начальный адрес для нового массива

M2: MOV A,M ;первое число закидываем в аккумулятор

ANI 01H ;проверяем число на четность

JZ M1 ;если число четное, то идем на М1

MOV A,M ;

XCHG ;если нечетное, закидываем его в массив для

нечетных чисел

MOV M,A ;

INX H ;берем следующее число

XCHG

INX H ;берем следующее число

DCRB ;проверяем, все ли элементы массива были

рассмотрены

JNZ M2 ;если нет, то начинаем заново

M3: LXI H,0100H ;переходим к первому элементу

MVI B,46H ;задаем количество повторений

LXI D,0300H ;задаем начальный адрес для четных чисел

M5: MOV A,M ;закидываем первое число в аккумулятор

ANI 01H ;проверяем на четность

JNZ M4 ;если нечетное, то идем на М4

MOV A,M ;

XCHG ; если четное, закидываем в массив с четными

числами

MOV M,A ;

INX H ;берем следующее число

XCHG

INX H ;берем следующее число

DCR B ; проверяем, все ли элементы массива были

рассмотрены

JNZ M5 ;если нет, то повторяем

HLT ;если да, то заканчиваем

M1: INX H ;берем следующее число

DCR B ; проверяем, все ли элементы массива были

рассмотрены

JNZ M2 ;если нет, то идем на М2

JMP M3 ;

M4: INX H ;

DCR B ; проверяем, все ли элементы массива были

рассмотрены

JNZ M5 ;если нет, то идем на М5

HLT ;если да, то заканчиваем

 

ПРИЛОЖЕНИЕ:

 

 

ЛАБОРАТОРНАЯ РАБОТА №2

ЗАДАЧА: Выполнить пересылку массива данных, содержащего 70 байт и расположенного, начиная с адреса 100Н в зону памяти 200Н, при этом расставить элементы массива в убывающем порядке.

LXI D,0200H ;задаем начальный адрес для нового массива

M5: LXI H,0100H ;задаем массив с адреса 0100Н

MVI B,46H ;задаем размер исходного массива

M1: MOV A,M ;закидываем первое число в аккумулятор

DCR B ;проверяем, все ли элементы массива были

рассмотрены

JZ M2 ;если да,то идем на М2

M3: INX H ;берем следующее число

CMP M ;сравниваем его с предыдущим

JZ M1 ;если они равны, то идем на М1

JC M1 ;если больше, идем на М1

DCR B ;проверяем, все ли элементы рассмотрены

JNZ M3 ;если нет, то повторяем

M2:CMP M ;сравниваем последнее число с аккумулятором

JZ M4 ;если разница равна нулю, то идем на М4

DCX H ;берем предыдущий элемент

JMP M2 ;переходим на М2

M4:MVI C,OO ;обнуляем содержимое регистра С

MOV M,C ;обнуляем ячейку памяти первого массива

XCHG ;меняем местами содержимое H и D

MOV M,A ;содержимое аккумулятора записываем в ячейку

памяти первого массива

INX H ;берем следующее число

XCHG ;меняем местами содержимое D и Н

MOV A,E ;проверяем все ли элементы массива были

CPI 46H рассмотрены

JNZ M5 ;если нет, то идем на М5

HLT ;иначе заканчиваем

 

ПРИЛОЖЕНИЕ

 

ЛАБОРАТОРНАЯ РАБОТА №3

ЗАДАЧА: выполнить упорядочение массива данных, содержащего 70 байт и расположенного с адреса 0150Н по убыванию.

 

MVI B, 46H ;Задаём размер массива

M3:MVI D, 46H ;Задаём размер массива

LXI H, 0150H ;Задаём адрес первого элемента массива

M1:DCR D ; проверяем, все ли элементы массива были

рассмотрены

JZ M4 ;если да, то идем на М4

MOV A,M ;помещаем элемент массива в аккумулятор

INX H ;переходим к следующему элементу массива

SUB M ;сравниваем его с предыдущим элементом

JP M1 ;если предыдущий элемент больше, переходим на М1

DCX H ;берем меньшее из двух чисел

MOV A,M ;помещаем его в аккумулятор

INX H ;переходим к следующему элементу

MOV C,M ;помещаем его в регистр С

MOV M,A ;меняем местами два числа массива

DCX H ;

MOV M,C ;

INX H ;переходим к следующим элементам массива

JMP M1 ;переходим к М1

M4:DCR B ; внешний цикл повторяем 70 раз

JZ M2 ;

JMP M3 ;

M2:HLT

ПРИЛОЖЕНИЕ

ЛАБОРАТОРНАЯ РАБОТА №4

ЗАДАНИЕ: сдвинуть массив данных, содержащий 70 байт и расположенного с адреса 0150Н на 2 байта влево, а на освободившееся место поставить число двухбайтовое, равных количеству единиц в перемещаемом массиве.

LXI H,0150H ;задаем начальный адрес массива

MVI B,46H ;задаем размер массива

MVI E,00H ;обнуляем регистр E

M3: MVI C,09H ;считаем количество единиц в массиве

MOV A,M ;закидываем элемент массива в аккумулятор

M1: RLC ;сдвигаем элемент массива на один разряд влево

DCR C ;проверяем, каждый ли разряд рассмотрен

JZ M2 ;если да, то идем на М2

JNC M1 ;если нет, проверяем, 0 или 1, если 0, то проверяем

следующий разряд

INX D ;если 1, то к количеству единиц прибавляем 1

JMP M1 ;переходим на М1

M2:MOV A,M

DCX H

DCX H ;перемещаемся на одну ячейку влево

MOV M,A ;помещаем в эту ячейку предыдущее число

INX H ;перемещаемся на три ячейки вправо

INX H

INX H ;

DCR B ; проверяем, все ли числа рассмотрены

JNZ M3 ;если нет, то повторяем

DCX H ;

MOV M,E ; если да, то помещаем в последнюю ячейку

количество единиц

DCX H

MOV M,D

HLT ;

ПРИЛОЖЕНИЕ:

ЛАБОРАТОРНАЯ РАБОТА №5

ЗАДАНИЕ: произвести обмен содержимым блоков памяти, расположенных по адресу 0100Н и 0200Н. При этом проинвертировать массивы и расставить элементы массивов в возрастающем порядке.


LXI SP,0401H ;указываем ячейку памяти, где будет находиться стек

LXI H,0100H ;задаем начальный адрес первого массива

LXI D,0200H ;задаем начальный адрес второго массива

MVI B,46H ;задаем размеры массивов

M1: MOV A,M ;помещаем первый элемент первого массива в аккумулят.

CMA ;инвертируем этот элемент

XCHG ;переходим на второй массив

MOV C,M ;помещаем элемент второго массива в регистр С

MOV M,A ;помещаем инвертированный элемент первого массива

во второй массив

MOV A,C ;помещаем этот элемент в аккумулятор

CMA ;инвертируем этот элемент

XCHG ;возвращаемся к первому массиву

MOV M,A ;помещаем туда проинвертированный элемент второго

массива

INX H ;переходим к следующим элементам массивов

INX D ;

DCR B ;проверяем, все ли элементы массивов рассмотрены

JNZ M1 ;если нет, то повторяем

MVI B,46H ;

M5: LXI H,040FH ;начинаем с последнего числа

PUSH B ;помещаем размер массива в стек

M6: MOV A,M ;помещаем это число в аккумулятор

DCR B ; проверяем, все ли элементы массивов рассмотрены

JZ M3 ;если да, то идем на М3

DCX H ;перемещаемся на одну ячейку назад

JZ M6 ;

JNC M6 ;если условие выполняется, то продолжаем

DCX H ;перемещаемся на ячейку назад

DCR B ; проверяем, все ли элементы массивов рассмотрены

JNZ M2 ;если нет, то повторяем

INX H ;берем следующее число

MOV D,M ;помещаем его во второй массив

MOV M,A ;содержимое аккумулятора помещаем в первый массив

INX H ;берем следующее число

M3: CMP M ;сравниваем это число с предыдущим

JZ M4 ;если они равны, то переходим на М4

INX H ;берем следующее число

JMP M3 ;переходим на М3

M4: MOV M,D ;элемент второго массива копируем в первый

LDA 0400H ;содержимое ячейки памяти 0400Н помещаем в регистр А

DCR A ;уменьшаем содержимое регистра А

STA 0400H ;содержимое аккумулятора перемещаем в ячейку 0400Н

POP B ;вытаскиваем из стека значение В

JNZ M5 ;если он не равен нулю, то повторяем с М5

MVI B,46H ;

M11: LXI H,060FH ;задаем адрес первой ячейки временного массива

PUSH B ;Bв стек

M8: MOV A,M ;содержимое ячейки памяти нового массива помещаем

;в аккумулятор

DCR B ;проверяем, все ли элементы массива были рассмотрены

JZ M7 ;если да, то переходим на М7

DCX H ;в противном случае переходим к предыдущему элементу

M10: CMP M ;сравниваем его с последующим

JZ M8 ;если они равны, переходим на М8

JNC M8 ;если это число больше, то переходим на М8

DCX H ;переходим на одну ячейку влево

DCR B ; проверяем, все ли элементы массива рассмотрены

JNZ M10 ;если нет, то повторяем

INX H ; переходим к следующему числу

MOV D,M ;перемещаем его во второй массив

MOV M,A ;содержимое аккумулятора помещаем в первый массив

INX H ;переходим к следующему числу

M7: CMP M ;сравниваем его с предыдущим

JZ M9 ;если они равны, переходим на М9

INX H ;смещаемся на ячейку вправо

JMP M7 ;повторяем

M9: MOV M,D ;содержимое второго массива копируем в первый

LDA 0400H ; содержимое ячейки памяти 0400Н помещаем в регистр А

DCR A ;

STA 0400H ;

POP B ;

JNZ M11 ;

HLT ;


ПРИЛОЖЕНИЕ: