Программирование / Лабораторные / АСУ-2-Простейшапрога на асме-Климов / ОТЧЕТП~1
.DOCПЕРМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ВТАУ
Отчёт по лабораторной работе № 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