14660

Изучение арифметических команд и команд пересылки данных

Лабораторная работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

Рузанов И.В. 3922 Вариант №1 Лабораторная работа №1. Цель работы: приобрести практические навыки работы с микропроцессором Intel 80х86 изучить возможности устройства Intel 80х86 практически освоить режимы его работы. № п/п 1ое слаг

Русский

2013-06-09

68 KB

7 чел.

Рузанов И.В. 3922

Вариант №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