Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования
Сибирский Федеральный Университет
Политехнический Институт
Лабораторная работа №2
Вариант №11
Выполнил:
Студент гр. 54-4
Александров А. В.
Проверил:
Тронин О. А.
Красноярск 2007
Задание: Сформировать массив из 10 двухбайтных чисел. Найти разницу между минимальным и максимальным значениями
Программа:
model small ; директива модели памяти model с параметром small
.data ; упрощенная директива сегмента данных
mass dw 1310h, 4411h, 0C512h, 6613h, 7714h, 06AAh, 001Ah, 84CCh, 03DDh, 02EEh
; инициализация двухбайтного 10-элементного массива mass
minimum dw ? ; выделение памяти под переменную minimum
maximum dw ? ; выделение памяти под переменную maximum
difference dw ? ; выделение памяти под переменную difference
.stack 256h ; упрощенная директива для 256-байтного сегмента стека
.code ; упрощенная директива сегмента кода
min proc ; начало процедуры min
mov minimum,ax ; запись в переменную minimum содержимого регистра ax
ret ; возврат в основную процедуру
endp min ; конец процедуры min
max proc ; начало процедуры max
mov maximum,ax ; запись в переменную maximum содержимого регистра ax
ret ; возврат в основную процедуру
endp max ; конец процедуры max
main proc ; начало процедуры main
mov ax,@data ; инициализация сегментного...
mov ds,ax ; ...регистра ds
mov si,0 ; инициализация нулем индекса массива si
mov cx,10 ; инициализация числом 10 счетчика циклов cx
mov ax,mass[0] ; запись в регистр ax первого элемента массива mass
mov minimum,ax ; запись в переменную minimum содержимого регистра ax
mov maximum,ax ; запись в переменную maximum содержимого регистра ax
cycle: ; пользовательская метка cycle
jcxz endpr ; если регистр cx=0, то переход на метку endpr
mov ax,mass[si] ; запись в регистр ax si-ого элемента массива mass
add si,2 ; увеличение индекса si массива на 2
cmp ax,minimum ; сравнение вида ax<=minim
jle minim ; если ax меньше или равно minim, то переходим на метку minim
cmp ax,maximum ; сравнение вида ax>=mamimum
jae maxim ; если ax больше или равно maximum, то переходим на метку maxim
dec cx ; уменьшение cx на 1
jmp cycle ; безусловный переход на метку cycle, т.е. к началу цикла
maxim:
call max ; вызов процедуры max
dec cx ; уменьшение cx на 1
jmp cycle ; безусловный переход на метку cycle, т.е. к началу цикла
minim:
call min ; вызов процедуры min
dec cx ; уменьшение cx на 1
jmp cycle ; безусловный переход на метку cycle, т.е. к началу цикла
endpr:
mov ax,maximum ; запись в регистр ax знаяения переменной maximum
sub ax,minimum ; вычитание вида ax:=ax-minimum
mov difference,ax ; запись в переменную difference разности ax
mov ax,4c00h ; формирование функции стандартного выхода
int 21h ; формирование прерывания типа 21h и стандартный выход
main endp ; конец процедуры main
end main ; конец программы с точкой входа main
Блок-схема:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.