лаб раб / МПС(1)01
.docХайбуллов Р.Р. 3104
Вариант №1
Лабораторная работа №1.
Цель работы: приобрести практические навыки работы с микропроцессором Intel 80х86, изучить возможности устройства Intel 80х86, практически освоить режимы его работы.
№ п/п |
1-ое слагаемое |
2-ое слагаемое |
3-ое слагаемое |
1 |
0009 |
2A4D |
631E |
cdseg segment 'code'
org 100h
start:
mov ax,0009h
mov cx,2A4Dh
mov dx,631Eh
add ax,cx
add ax,dx
int 20h
cdseg ends
end start
Ответ:
AX= 8D7416.
Лабораторная работа 2
Изучение арифметических команд и
команд пересылки данных
Например, необходимо найти сумму ряда чисел. При этом задача состоит в том, чтобы осуществить суммирование нескольких чисел сразу. Эти числа могут представлять собой совокупности входных сигналов, находящихся под управлением системы, число изделий (или число сообщений), изготовленных (или принятых) за определенный промежуток времени.
Программа сложения ряда чисел
№ п/п |
Исходный ряд чисел |
1 |
046E,05E7,240F,3031,0820,1AF9,1F32 |
cdseg segment 'code'
assume cs:cdseg
org 100h
start:
mov si,offset array
lodsw
mov cx,ax ; count of digits
mov bx,si ; addr of array
sub ax,ax
m1: add ax,[bx]
dec cx
je fin
add bx,0002
jmp m1
fin:
int 20h
array dw 7, 046Eh,05E7h,240Fh,3031h,0820h,1AF9h,1F32h
cdseg ends
end start
Ответ:
A0E0 16.
Рассмотрим арифметику для чисел, занимающих несколько ячеек. Задача состоит в том, чтобы сложить два числа длиной более 16 бит каждое. Исходные числа располагаются в области памяти таким образом, что сначала идут младшие разряды, а затем более старшие. Полученную сумму необходимо поместить в те ячейки памяти, где хранилось первое число.
№ п/п |
1-ое слагаемое |
2-ое слагаемое |
1 |
D4241C879DAB |
DB893E0731C5 |
cdseg segment 'code'
assume cs:cdseg
org 100h
start:
mov cx,(offset data2 -offset data1)/2
mov di,offset data1
mov si,offset data2
m:
mov ax,[di]
adc ax,[si]
stosw
inc si
inc si
dec cx
jne m
int 20h
data1 dw D424h,1C87h,9DABh
data2 dw DB89h,3E07h,31C5h
cdseg ends
end start
Ответ:
Сумма равна 1AFA D5A8 ECF70.
2.3 Лабораторная работа 3
Обработка массивов информации и
организация циклов
Рассмотрим следующую задачу. Массив чисел расположен в области памяти, начиная с адреса NNNN, и состоит из N элементов. Необходимо переслать массив в другую область памяти, начиная с адреса DDDD. В программе для МП Intel 80x86 в качестве адресного регистра используются регистры si и di. Необходимо учитывать, что при каждом проходе программа должна изменять содержимое обоих адресных регистров.
№ п/п |
Исходный массив |
1 |
D424,1C87,9DAB,DB89,3E07,31C5,14B2,4F87,8A00 |
Программа:
cdseg segment 'code'
org 100h
start:
mov cx,(offset data2 - offset data1)/2
mov si,offset data1
mov di,offset data2
repne movsw
int 20h
data1 dw D424h,1C87h,9DABh,DB89h,3E07h,31C5h,14B2h,4F87h,8A00h
data2 dw 0AAAAh,0AAAAh,0AAAAh,0AAAAh,0AAAAh,0AAAAh,0AAAAh,0AAAAh,0AAAAh
cdseg ends
end start
Массив данных был перемещен в область памяти под названием data2.
В ряде случаев возникает необходимость выбрать из массива информации данные, представляющие собой ряд максимальных, либо минимальных величин. Предположим, что необходимо написать программу для решения следующей задачи. Дан массив А1, состоящий из N однобайтовых чисел. Необходимо переписать из массива А1 в массив В1 все числа в диапазоне от Н1 до Н2.
№ п/п |
Исходный массив |
Нижний Предел |
Верхний предел |
1 |
D424,1C87,9DAB,DB89,3E07,31C5,14B2 |
24C3 |
4433 |
cdseg segment 'code'
assume cs:cdseg
org 100h
start:
mov cx,(offset dest - offset source)/2
mov si,offset source
mov di,offset dest
m1:
lodsw
cmp ax, 24C3h ; min
jb m2
cmp ax, 4433h ; max
ja m2
stosw
m2:
loop m1
int 20h
source dw 0D424h,1C87h,9DABh,0DB89h,3E07h,31C5h,14B2h
dest dw (offset dest - offset source)/2 dup (0)
cdseg ends
end start
Ответ: 3E07,31C5