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

            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 бита

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

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

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

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

            JB M7                                   ;... переход к метке М7

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

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

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

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

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

            MOV [DI],DX                       ;пересылка из DX в DI

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

            LOOP M0                             ;повторить цикл с М0        

            mov     ax,@data                   ;инициализация сегмента данных

            mov     ds,ax

            mov     si,2                             ;цикл по si начиная со второго элемента

            mov     cx,n-1                         ;от 2 до 2*n-2 шаг 2 (т.к. 1число=2байта)

            mov     dx,MAS2                   ;1ый элемент в dx, с ним будем сравнивать

            mov     bl,1                             ;счетчик номера текущего элемента

            mov     bh,1                            ;номер минимального элемента до текущего

cycl:    inc       bl                                ;начало цикла

            cmp     dx,MAS2[si]             ;сравниваем

            jb         nless                           ;если dx меньше

            mov     bh,bl                           ;если dx не меньше, запоминаем номер

            mov     dx,MAS2[si]               ;этого элемента и его значение

nless:   add      si,2

            loop     cycl                             ;конец цикла

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

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

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

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

            JB M21                                   ;... переход к метке М21

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

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

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

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

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

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

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

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

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

            JB M23                                   ;... переход к метке М23

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

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

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

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

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

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

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

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

            JB M26                                     ;... переход к метке М26

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