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

            JMP M27                                  ;безусловный переход на метку M27

M26:   ADD AL,30H                           ;увеличение AL на 30Н

M27:   MOV [SI],AL                           ;пересылка из AL в SI

            ADD SI,1H                               ;индекс SI увеличивается на 1

            MOV AL,DL                            ;пересылка в регистр AL содержимого DL

            SHL AL,4H                               ;логический сдвиг влево на 4 бита

            SHR AL,4H                               ;логический сдвиг вправо на 4 бита

            CMP AL,0AH                           ;сравнение вида AL<0АН и если условие верно...                    

            JB M28                                      ;... переход к метке М28

            ADD AL,37H                           ;увеличение AL на 37Н

            JMP M29                                  ;безусловный переход на метку M29

M28:   ADD AL,30H                           ;увеличение AL на 30Н

M29:   MOV [SI],AL                           ;пересылка из AL в SI

            MOV AH,3CH                          ;открытие файла для записи

            LEA DX,FOUT                        ;загрузка эффективного адреса файла  FOUT в DX    

            MOV AL,01H                          ;режим открытия"только для записи"

            INT 21H                                   ;формирование прерывания типа 21h

            MOV BX,AX                            ;запись в файл

            MOV AH,40H

            MOV CX,4H                             ;число записываемых байт

            LEA DX,MAS3                         ;загрузка эффективного адреса MAS3 в DX

            INT 21H                                    ;формирование прерывания типа 21h

            MOV AH,3EH                          ;закрытие файла для записи

            INT 21H                                    ; формирование прерывания типа 21h

            MOV AX,4C00H                      ; формирование функции стандартного выхода

            INT 21H                                    ; формирование прерывания типа 21h и стандартный выход

main    endp                                          ; конец процедуры main

end      main                                          ; конец программы с точкой входа main

Задание: Найти разность между максимальным и минимальным значением в массиве 10 двухбайтных чисел.

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

model small                                     ;директива модели памяти model с параметром small

.data                                                ; упрощенная директива сегмента данных

n          equ      10                            ;длина массива

MAS1 DW     20 DUP(0)              ; выделение памяти под  20-элементный массив

MAS2 DW     10 DUP(0)              ; выделение памяти под  10-элементный массив

MAS3 DB      5 DUP(0)                ; выделение памяти под  5-элементный массив

ENTS DB      4 DUP(0)                ; выделение памяти под  4-элементный массив

FIN      DB      'in.txt',00H              ;определение файла источника

FOUT  DB      'OUT.TXT',00H      ;определение файла приемника

.code                                               ; упрощенная директива сегмента кода

main    proc                                    ; начало процедуры main

            mov ax,@data                     ; инициализация сегментного...       

            mov ds,ax                            ; ...регистра ds

            MOV AH,3DH                   ;открытие файла

            MOV AL,00H                    ;режим открытия"только для чтения"

            LEA DX,FIN                      ;загрузка эффективного адреса файла FIN в DX       

            INT 21H                             ; формирование прерывания типа 21h

            MOV BX,AX                     ;чтение из файла

            MOV AH,3FH                          

            MOV CX,28H                   ;число байтов для чтения

            LEA DX,MAS1                 ;загрузка эффективного адреса файла MAS1 в DX

            INT 21H                             ; формирование прерывания типа 21h            

            MOV AH,3EH                   ;закрытие файла для чтения

            INT 21H                             ; формирование прерывания типа 21h

            MOV CX,0AH                   ;преобразование  из ASCII кода

            LEA SI,MAS1                    ;загрузка эффективного адреса MAS1 в регистр SI

            LEA DI,MAS2                    ;загрузка эффективного адреса MAS2 в регистр DI

M0:     MOV AL,[SI]                      ;пересылка в регистр AL SI-го элемента массива

            CMP AL,40H                      ;сравнение вида AL<40H и если условие верно...

            JB M1                                  ;... переход к метке М1

            SUB AL,37H                       ;в противном случае уменьшение AL на 37Н

            JMP M2                               ;безусловный переход на метку M2

M1:     SUB AL,30H                       ; уменьшение AL на 30Н

M2:     SHL AL,4H                          ;логический сдвиг влево на 4 бита

            MOV DH,AL                       ;пересылка содежмого AL в DH

            ADD SI,1H                          ;индекс SI увеличивается на 1

            MOV AL,[SI]                       ;пересылка в регистр AL SI-го элемента массива

            CMP AL,40H                       ;сравнение вида AL<40H и если условие верно...

            JB M3                                   ;... переход к метке М3

            SUB AL,37H                        ;в противном случае уменьшение AL на 37Н

            JMP M4                                ;безусловный переход на метку M4

M3:     SUB AL,30H                        ; уменьшение AL на 30Н

M4:     ADD DH,AL                         ;сложение содержимого DH и AL

            ADD SI,1H                            ;индекс SI увеличивается на 1

            MOV AL,[SI]                        ;пересылка в регистр AL SI-го элемента массива

            CMP AL,40H                        ;сравнение вида AL<40H и если условие верно...

            JB M5                                    ;... переход к метке М5

            SUB AL,37H                         ; уменьшение AL на 30Н

            JMP M6                                 ;безусловный переход на метку M6

M5:     SUB AL,30H                         ; уменьшение AL на 30Н

M6:     SHL AL,4H                           ;логический сдвиг влево на 4 бита