Скачиваний:
48
Добавлен:
10.12.2013
Размер:
26.11 Кб
Скачать

ПЕРМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ВТАУ

Отчёт по лабораторной работе № 1

Выполнил: ст. гр. АСУ 99-1 Пеунов Николай

Проверил: Климов Д.Л.

Пермь, 2001

Цель работы: Создание простейшей программы на языке ассемблера. Знакомство с отладчиком Turbo Debugger.

Задание: Определить три массива в памяти. Первые два содержат по семь элементов, а третий
резервирует память. Сравнить два массива, если элемент первого массива больше элемента второго то из элемента первого массива вычесть элемент второго, если элемент второго массива больше чем первого то сделать логическое “И”, если равны тогда сложить элементы, результат переписать в третий массив.

Текст программы:

.model small ;модель памяти

.stack 256 ;стек

.data ;сегмент данных

mas1 DB 2,3,1,3,8,4,7, ;первый массив

mas2 DB 1,2,4,5,8,4,5, ;второй массив

mas3 DB 7 DUP (0) ; результирующий массив

.code ;сегмент кода

start:

mov ax,@data ;заносим в ax адрес сегмента данных

mov ds,ax ;ax в ds

mov cx,7 ;устанавливаем счетчик 10

mov si,0

cycle:

sub al,al ;обнуляем al

mov al,mas1[si] ;заносим элемент массива 1 в аккумулятор

cmp al,mas2[si] ;сравниваем значение аккум. с элементом мас. 2

jb Bcpy ;если меньше то m2

ja Acpy ;если больше то m1

je Ecpy ;переход по равентсву

Acpy:

mov al,mas1[si] ;заносим в al элемент мас.1

sub al,mas2[si] ;Вычитаем из 1-го массива элемент 2-го

mov mas3[si],al ;копируем элемент из al в мас.3

jmp endcycle ; Выходим

Bcpy:

mov al,mas2[si] ;заносим в al элемент мас.2

and al,mas2[si] ; операция "И"

mov mas3[si],al ;копируем элемент из al в мас.3

jmp endcycle ; Выходим

Ecpy:

mov al,mas1[si] ;заносим в al элемент мас.1

add al,mas2[si] ;Складываем 1-й массива с элементами 2-го

mov mas3[si],al ;копируем элемент из al в мас.3

endcycle:

add si,1

loop cycle

mov ax,4c00h ;выход из программы

int 21h

end start