Массив: найти среди элементов массива максимальное и минимальное значения - Assembler

Узнай цену своей работы

Формулировка задачи:

Еще раз доброго времени суток всем! Каким образом можно сделать сравнение поэлементно? Задание : С клавиатуры вводятся 5 чисел, найти среди них максимальное и минимальное и вывести результат на экран . . . Пример программы :
   .MODEL small
   .STACK 100h
   .DATA
CodeNewLine DB  13,10,'$'
Str1    DB  53 DUP(?)     ;®Ў«*бвм ¤«п бва®ЄЁ 50 бЁ¬ў®«®ў
Str2    DB  53 DUP(?)     ;®Ў«*бвм ¤«п бва®ЄЁ 50 бЁ¬ў®«®ў
StrRes  DB  53 DUP(?)     ;®Ў«*бвм ¤«п бва®ЄЁ 50 бЁ¬ў®«®ў
Num1    DW  0
Num2    DW  0  
mas     DW      1,1,1,1,1,1 
 
    .CODE
    mov ax,@data
    mov ds,ax           ;set DS to point to the data segment
        mov     si,5
        
r1:
        dec     si
        push    si
        MOV DX,offset STR1  ;DS:DX гЄ*§лў*ов ** *¤аҐб бва®ЄЁ
    call    ReadStr
    call    NewLine
    call    AsciiToBin
        pop     si
    mov mas[si],ax
        mov     cx,si
        jcxz    endr1
        jmp     r1
endr1:
 
mov si, 5
c1:
        dec si
    cmp     mas[si], ax
        jg cng
        jmp w1   
cng: 
        mov ax, mas[si]
W1:      
        mov cx, si
        jcxz endc1
        jmp c1
endc1:
 
    mov bx, offset StrRes+50
    mov [bx], '$'
    call    BinToAscii      
    
    mov dx, bx
    call    WriteStr
    call    NewLine
 
    mov ah,4ch      ;DOS terminate program function
    int 21h     ;terminate the program
    ret
 
ReadStr PROC
        MOV BX,DX           ;Їгбвм BX ⮦Ґ гЄ*§лў*Ґв ** бва®Єг
        MOV AL,51           ;гбв**®ўЄ* ¤«Ё*л бва®ЄЁ (+1 ¤«п CR)
        MOV [BX],AL         ;Ї®бл«*Ґ¬ ў 1-© Ў*©в ¤ҐбЄаЁЇв®а*
        MOV AH,0AH          ;*®¬Ґа дг*ЄжЁЁ
        INT 21H             ;Ї®«гз*Ґ¬ бва®Єг
 
;---Їа®ўҐаЄ* ¤«Ё*л бва®ЄЁ
 
        MOV CL,[BX+1]   ;⥯Ґам ¤«Ё** ў CL
    ret
ReadStr ENDP
 
AsciiToBin PROC
    mov ax, 0
    mov si, 10
MulLoop: 
    mul si
    mov ch, [bx]+2
    sub ch, 30h
    add al, ch
    inc bx
    dec cl
    jnz MulLoop 
    ret
AsciiToBin ENDP
 
BinToAscii  PROC
    mov dx, 0
    mov si, 10
DivLoop:
    mov dx, 0
    div si
    add dl, 30h
    dec bx
    mov [bx], dl
    cmp ax, 0
    jnz DivLoop 
    ret
BinToAscii  ENDP
 
NewLine PROC    
    mov ah,9            
    mov dx,OFFSET CodeNewLine   
    int     21h         
    ret
NewLine ENDP
 
WriteStr    PROC    
    mov ah,9            
    int     21h         
    ret
WriteStr    ENDP
 
    END
Было бы классно если б были в примере нормальные комменты а так дали прогу с крякозябрами - мол "на, розбирайтесь" . . . вроде бы как о функцие сравнения cmp слышал, да вот только не знаю толком как она роботает, и самое основное, есть ли у Вас на форуме где-то книги или что-то такое? просто в программе очень много условных переходов а не пойму толком какой куда и при каком условии . . .

Решение задачи: «Массив: найти среди элементов массива максимальное и минимальное значения»

textual
Листинг программы
 mov mas[si],bx

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы