.model small include IO.ASM .stack 100h .data per db 10,13,"$" str_M db 0B2h,0B2h,0B2h,0B2h,0B2h,0B2h,' ',"Матрица 3*3",' ',1h,1h,1h,10,13,"Введите положительные числа от 0 до 9...:$" str_M1 db 10,13,"Матрица заполнена",' ',1h,1h,1h,10,13,"Нажмите 'Enter' для продолжения$" str_MIs db 10,13,"Исходная матрица$" str_Mpr db 10,13,"Преобразованная матрица$" str_minGK db 10,13,"Минимальный элемент в главной диаганали, кратен 4 ",10,13,"Он поменяется местами с первым элементом первой строки$" str_minGnK db 10,13,"Минимальный элемент в главной диаганали, не кратен 4 ",10,13,"Он поменяется местами с первым элементом последней строки строки$" str_minP db 10,13,"Минимальный элемент в побочной диаганали ",10,13,"Он поменяется местами с первым элементом последней строки$" err_msg db 10,13,"Ошибка ввода! Введите число от 0 до 255!",10,13,"$" array db 3 dup (3 dup (0)) min db 0 array_2 db 2 dup (3 dup (6)) ;str_ db 10,13,"$" ;str_ db 10,13,"$" .code ;//////////////////////////////////////////Макрос вывода /////////////////////////////////////// macros_vivoda macro per mov ah,9h lea dx,per int 21h endm ;//////////////////////////////////////Процедура ввода/////////////////////////////////////////////////////// vvod proc xor ax,ax xor bx,bx xor cx,cx mov cx, 3 mov bx, 0 next_line1: mov si, 0 push cx mov cx, 3 lea dx, per ; Єгаб®а ­  ­ з «® ­®ў®© бва®ЄЁ mov ah, 9 int 21h stroka1: jmp skip_error error: lea dx, err_msg ; Єгаб®а ­  ­ з «® ­®ў®© бва®ЄЁ mov ah, 9 int 21h jmp stroka1 skip_error: push si inint ax pop si cmp ax,0 jb error cmp ax,255 ja error mov array[bx][si],al inc si loop stroka1 ; ўлў®¤ бва®ЄЁ § ўҐа襭 pop cx add bx,3 loop next_line1 ret vvod endp ;///////////////////////////////////////ЊЂваЁж  2 ­  2/////////////////////////////////////////////////////////////// matr_2 proc ret matr_2 endp ;//////////////////////////////////////Процедура вывода /////////////////////////////////////////////////////// vivod proc mov cx, 3 mov bx, 0 next_line2: mov si, 0 push cx mov cx, 3 lea dx, per ; Єгаб®а ­  ­ з «® ­®ў®© бва®ЄЁ mov ah, 9 int 21h stroka2: mov dl, array[bx][si] push si outint dx pop si ;add dl, 30h mov ah, 2 ; ўлўҐ«Ё н«Ґ¬Ґ­в ;int 21h mov dl,9 int 21h inc si ; ЇҐаҐе®¤ ­  б«Ґ¤гойЁ© н«Ґ¬Ґ­в бва®ЄЁ loop stroka2 ; ўлў®¤ бва®ЄЁ § ўҐа襭 pop cx add bx,3 loop next_line2 mov ah, 1 ; § ¤Ґа¦Є  ¤«п ®Ў®§аҐ­Ёп १г«мв в  int 21h ret vivod endp ;//////////////////////////////////////Процедура вывода2/////////////////////////////////////////////////////// vivod2 proc mov cx, 2 mov bx, 0 next_line222: mov si, 0 push cx mov cx, 3 lea dx, per ; Єгаб®а ­  ­ з «® ­®ў®© бва®ЄЁ mov ah, 9 int 21h stroka222: mov dl,array_2[bx][si] push si outint dx pop si ;mov dl, array_2[bx][si] ; н«Ґ¬Ґ­в <=9 ;add dl, 30h mov ah, 2 ; ўлўҐ«Ё н«Ґ¬Ґ­в ;int 21h mov dl,9 int 21h inc si ; ЇҐаҐе®¤ ­  б«Ґ¤гойЁ© н«Ґ¬Ґ­в бва®ЄЁ loop stroka222 ; ўлў®¤ бва®ЄЁ § ўҐа襭 pop cx add bx,3 loop next_line222 mov ah, 1 ; § ¤Ґа¦Є  ¤«п ®Ў®§аҐ­Ёп १г«мв в  int 21h ret vivod2 endp ;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// obraborka1 proc mov bx, 0 mov si, 0 mov ax,3 mov di,0 mov dl, array[bx][si] mov array_2[0][0],dl ; н«Ґ¬Ґ­в <=9 inc si inc di add bx,3 mov dl, array[bx][si] mov array_2[0][1],dl inc si inc di add bx,3 mov dl, array[bx][si] mov array_2[0][2],dl mov bx, 0 mov si, 2 mov ax,0 mov di,0 mov dl, array[bx][si] mov array_2[3][2],dl ; н«Ґ¬Ґ­в <=9 sub si,1 inc di add bx,3 mov dl, array[bx][si] mov array_2[3][1],dl ; н«Ґ¬Ґ­в <=9 sub si,1 inc di add bx,3 mov dl, array[bx][si] mov array_2[3][0],dl ; н«Ґ¬Ґ­в <=9 ; ЇҐаҐе®¤ ­  б«Ґ¤гойЁ© н«Ґ¬Ґ­в бва®ЄЁ mov ah, 1 ; § ¤Ґа¦Є  ¤«п ®Ў®§аҐ­Ёп १г«мв в  int 21h ret obraborka1 endp ;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// poisk_min proc push dx xor dx,dx mov cx, 2 mov bx, 0 mov dl,array_2[bx][si] cikl_min1: mov si, 0 mov di, 0 push cx mov cx, 3 cikl_min2: cmp dl,array_2[bx][si] jna n mov dl,array_2[bx][si] mov ax,bx mov di,si n: inc si loop cikl_min2 pop cx add bx,3 loop cikl_min1 ; outint di cmp ax,0 jne ne_0 test dl,11b jnz ne_kr outint di cmp di,0 jne s_1 mov cl,array[0][0] mov array[0][0],dl mov array[0][0],cl jmp es_1 s_1: cmp di,1 jne s_2 mov cl,array[0][0] mov array[0][0],dl mov array[8][0],cl jmp es_1 s_2: cmp di,2 jne kon mov cl,array[0][0] mov array[0][0],dl mov array[8][0],cl es_1: lea dx,str_minGK mov ah,9h int 21h jmp kon ne_kr: mov cl, array[6][0] mov array[6][0],dl mov array[bx][si],cl lea dx,str_minGnK mov ah,9h int 21h jmp kon ne_0: mov cl, array[0][6] mov array[0][6],dl mov array[bx][si],cl lea dx,str_minP mov ah,9h int 21h kon: pop dx ret poisk_min endp ;//////////////////////////////////////////////////////////////////////////////////////////////// start: mov ax,@data mov ds,ax macros_vivoda str_M call vvod macros_vivoda str_M1 call obraborka1 call vivod newline call vivod2 newline newline call poisk_min call vivod xor ax, ax int 16h mov ax,4C00h int 21h end start