Формирование массива из 10 двухбайтных чисел, найти разницу между минимальным и максимальным значениями

Страницы работы

Содержание работы

Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования

Сибирский Федеральный Университет

Политехнический Институт

Лабораторная работа №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

Блок-схема:

Похожие материалы

Информация о работе