Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .stack 100h
- .data
- array dw 57, 54, 12
- dw 13, 51, 25
- dw 16, 52, 53
- cols equ 3
- rows equ 3
- MAX dw ?
- IndexMaxCol dw ?
- IndexMaxRow dw ?
- strMax DB 13,10,"Max value: ","$"
- strIndexMaxRow DB 13,10,"Index of Row Max value: ","$"
- strIndexMaxCol DB 13,10,"Index of Col Max value: ","$"
- .code
- org 100h
- Start:
- mov ax,@data
- mov ds,ax ; настройка DS на начало сегмента данных
- xor ax,ax ; обнуление ax
- lea si,array ; si указывает на первый элемент матрицы
- mov cx,rows ; в cx количество строк
- xor bx,bx ; обнуление bx
- mov ax,array[bx][si] ; в ax первое значение матрицы
- mov MAX,ax ; за максимум принимаем первый элемент
- ;цикл по строкам
- RowLoop:
- xor si,si ; обнуление si
- push cx ; сохраняем счетчик по строкам в стеке
- mov cx,cols ; cx = количество столбцов
- ;цикл по столбцам
- ColLoop:
- mov ax,array[bx][si] ; ax = элементу матрицы
- cmp MAX,ax ; сравниваем MAX с элементов матрицы
- ;если MAX больше ax, то увеличиваем si на 2 и идем дальше
- JG NOCHANGE
- ;иначе заменяем MAX на ax, запоминаем индексы строки и столбца
- ;увеличиваем si и идем дальше по всем столбцам
- mov MAX,ax ; MAX = элементу матрицы
- mov IndexMaxRow,bx ; IndexMaxRow = индексу строки
- mov IndexMaxCol,si ; IndexMaxCol = индексу столбца
- add si,2 ; si + 2 -> переход на следующий столбец
- loop ColLoop ; пока cx не нуль -> зацикливание ColLoop
- xor ax,ax
- mov ax,cols*2 ; ax = количество столбцов * 2
- add bx,ax ; bx указывает на следующую строку
- pop cx ; извлекаем из стека счетчик по строкам
- loop RowLoop ; пока cx не нуль -> зацикливание RowLoop
- jmp OutputExit ; переходим на метку OutputExit, если прошли все строки
- NOCHANGE:
- add si,2 ; si + 2 -> переход на следующий столбец
- loop ColLoop ; пока cx не нуль -> зацикливание ColLoop
- mov ax,cols*2 ; ax = количество столбцов * 2
- add bx,ax ; bx указывает на следующую строку
- pop cx ; извлекаем из стека счетчик по строкам
- loop RowLoop ; пока cx не нуль -> зацикливание RowLoop
- OutputExit:
- ;вывод строки strIndexMaxRow
- xor ax,ax ; обнуление ax
- mov ah,09h
- lea dx,strIndexMaxRow
- int 21h
- ;вывод IndexMaxRow
- xor ax,ax ; обнуление ax
- mov ah,02h ; DOS функция вывода строки на экран
- mov dx,IndexMaxRow
- int 21h
- ;вывод строки strIndexMaxCol
- xor ax,ax ; обнуление ax
- mov ah,09h ; DOS функция вывода строки на экран
- lea dx,strIndexMaxCol
- int 21h
- ;вывод IndexMaxRow
- xor ax,ax ; обнуление ax
- mov ah,02h
- mov dx,IndexMaxCol
- int 21h
- ;вывод строки strMax
- xor ax,ax ; обнуление ax
- mov ah,09h ; DOS функция вывода строки на экран
- lea dx,strMax
- int 21h
- ;вывод MAX
- xor ax,ax ; обнуление ax
- mov ah,02h
- mov dx,MAX
- int 21h
- ;exit
- mov ax,4C00h
- int 21h
- End Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement