Все Студенту - шпоры, доклады, рефераты, лабораторные, ргр

Студент, решение твоих заданий здесь!

Билет 4

10. Составить подпрограмму на Ассемблере, вычисляющую сумму отрицательных элементов массива из тысячи чисел, хранящегося в последовательных ячейках ОЗУ. Определить механизм передачи параметров в подпрограмму, привести пример вызова разработанной подпрограммы.

SummNegative1000: mov R1,#0 ; обнуление суммы

mov R3,#0 ; отрицаетельных элементов

mov R2,#10 ; загрузка счетчиков

L2: mov R3,#100 ; на 1000 элементов

L3: movx A,@DPTR ; чтение элемента массива

inc DPTR ; установка указателя на след. Элемент

rlc A

jnc L1 ; если тек. >=0 идти на L1

rrc A

add A,R1 ; вычисление

mov R1,A ; двухбайтовой

mov A,#0 ; суммы

addc A,R3 ; отрицательных

mov R3,A ; элементов

L1: djnz R3,L3 ; обработка счетчиков цикла

djnz R2,L2

ret ; возврат из подпрограммы

Пример вызова:

mov DPTR,#Massive ; загрузка в указатель адреса начала массива

acall SummNegative1000 ; вызов подпрограммы

11. Составить подпрограмму на Ассемблере, вычисляющую сумму элементов массива из тысячи байт, хранящегося в последовательных ячейках ОЗУ, равных константе, хранящейся в ячейке памяти программ (ПЗУ).

SummEq1000: mov R1,#0 ; обнуление суммы

mov R3,#0 ; равных элементов

mov R2,#10 ; загрузка счетчиков

L2: mov R3,#100 ; на 1000 элементов

L3: movx A,@DPTR ; чтение элемента массива

inc DPTR ; установка указателя на след. Элемент

cjne A,#Const,L1 ; если элемент не равен константе идти на L1

add A,R1 ; вычисление

mov R1,A ; двухбайтовой

mov A,#0 ; суммы

addc A,R3 ; равных константе

mov R3,A ; элементов

L1: djnz R3,L3 ; обработка счетчиков цикла

djnz R2,L2

ret ; возврат из подпрограммы

Пример вызова:

mov DPTR,#Massive ; загрузка в указатель адреса начала массива

acall SummEq1000 ; вызов подпрограммы


12. В последовательных ячейках ОЗУ хранится массив из тысячи целых положительных чисел. Составить подпрограмму, определяющую число элементов массива, попадающих в диапазон, границы которого заданы в двух произвольных ячейках памяти. Определить механизм передачи параметров в подпрограмму, привести пример вызова разработанной подпрограммы.

NumDiapazon1000: mov R1,#0 ; обнуление счетчиков mov R3,#0 ; элементов попадающих в диапазон

mov R2,#10 ; загрузка счетчиков

L2: mov R3,#100 ; на 1000 элементов

L3: movx A,@DPTR ; чтение элемента массива

inc DPTR ; установка указателя на след. Элемент

mov R4,A ; временное сохранение

clr c ; сравнение

subb A,R5 ; с минимумом

jc L1 ; если меньше минимума идти на L1

mov A,R6 ; временное сохранение

clr c ; сравнение

subb A,R4 ; с максимумом

jc L1 ; если больше максимума идти на L1

inc R1 ; инкремент

cjne R1,#0,L1 ; двухбайтового счетчика

inc R3 ; элементов из диапазона

L1: djnz R3,L3 ; обработка счетчиков цикла

djnz R2,L2

ret ; возврат из подпрограммы

Пример вызова:

mov DPTR,#Massive ; загрузка в указатель адреса начала массива

acall NumDiapazon1000 ; вызов подпрограммы

Комментариев нет..
[ Добавить ] комментарий
Поля с пометкой * обязательны для заполнения

*Ваше имя
  Ваш сайт  
  Ваш город
*Ваше сообщение

Код подтверждения
*Код с картинки   @
код на картинке содержит только цифры (0..9) и буквы англ. алфавита (A..Z)