Массив: найти среди элементов массива максимальное и минимальное значения - Assembler
Формулировка задачи:
Еще раз доброго времени суток всем! Каким образом можно сделать сравнение поэлементно? Задание : С клавиатуры вводятся 5 чисел, найти среди них максимальное и минимальное и вывести результат на экран . . .
Пример программы :
Было бы классно если б были в примере нормальные комменты а так дали прогу с крякозябрами - мол "на, розбирайтесь" . . .
вроде бы как о функцие сравнения cmp слышал, да вот только не знаю толком как она роботает, и самое основное, есть ли у Вас на форуме где-то книги или что-то такое? просто в программе очень много условных переходов а не пойму толком какой куда и при каком условии . . .
.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
Решение задачи: «Массив: найти среди элементов массива максимальное и минимальное значения»
textual
Листинг программы
mov mas[si],bx
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д