Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.1.2010
Репутация: нет Всего: нет
|
| Код | Задание такое: внести элементы матрицы 4*3(слова) таким образом чтобы существовала строка с максимальной суммой элементов и минимальной суммой элементов. вывести на экран исходную матрицу поменять местами строки с максимаотной и минимальной суммой элементов. вывести на экран преобразованную матрицу.
программа работает если вводят одно- и двух-значные числа. если ввести число больше 100, то программа его не суммирует, просто пропускает. подскажите как решить данную проблему)))
model small include io.asm ; .data message db 'Vvedite elementi matrizy (12 chisel) (chisla vvodytsya v intervale 0..99) ',10,'$' mas dw 4 dup (3 dup(?)) sum dw 0 rowmin dw 0 ; будет хранить адрес строки, сумма которой мин. rowmax dw 0 ; будет хранить адрес строки, сумма которой макс. maxs dw 0 ; будет хранить макс. сумму mins dw 0 ; будет хранить мин. сумму
.stack 100h .code main: mov ax, @data mov ds, ax
lea dx, message ; в dx адреса переменной message mov ah, 9h ; вывод строки на экран int 21h
;//////////////////// ввод элементов массива \\\\\\\\\\\\\\\\\\\\\\\\\\\\
mov cx,4 mov bx,0 in_mas: push cx mov cx, 3 mov si,0 string: inint mas[bx][si] add si,2 loop string ; конец цикла (по столбцам) pop cx add bx,6 loop in_mas ; конец цикла (по строкам)
newline ; переход на новую строку (пильщиков)
;//////////////////////// вывод матрицы на экран \\\\\\\\\\\\\\\\\\\\\\\\\\\\\
mov cx,4 mov bx,0 stroka: push cx mov sum,0 mov si,0 mov cx,3 mov mins,66000
stolbez: push bx push si outword mas[bx][si] mov ax,mas[bx][si] add sum,ax pop si pop bx add si,2 mov ah,2 mov dl,9 int 21h loop stolbez ; вывод на экран ( mov dl,'(' mov ah,2h int 21h outword sum ; выводим сумму на экран ; вывод на экран ) mov dl,')' mov ah,2h int 21h
add bx,6 ; bx=bx+6 переходим к следующей строке pop cx mov dl, 10 int 21h mov dl, 13 int 21h loop stroka ; конец внешнего цикла (по строкам)
;/////////////////////// поиск макс. и мин. сумм \\\\\\\\\\\\\\\\\\\\\\\\
mov cx,4 mov bx,0 mov mins,66000 stro: ; внешний цикл (по строкам) push cx mov sum,0 mov si,0 mov cx,3 ; stlb: ; внутренний цикл (по столбцам) push bx push si mov ax,mas[bx][si] add sum,ax pop si pop bx add si,2 loop stlb mov ax,sum cmp maxs,ax jb maksi ; > cmp mins,ax jb viho ; > mov mins,ax mov rowmin,bx jmp viho ; прыгаем на метку viho maksi: mov maxs,ax mov rowmax,bx viho: add bx,6 ; bx=bx+6 переходим к следующей строке pop cx ; восстанавливаем сх из стека loop stro
newline ; переходим на новую строку (пильщиков)
;////////////////// ОБМЕН СТРОК \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
mov si,0 ; si - счетчик элементов в строке mov cx,3 ; сх - счетчик повторений цикла
cyclec: ; mov bx,rowmax mov ax,mas[bx][si] mov bx,rowmin mov dx,mas[bx][si] mov mas[bx][si],ax mov bx,rowmax mov mas[bx][si],dx add si,2 loop cyclec ;///////////// ВЫВОД ИЗМЕНЕННОЙ МАТРИЦЫ НА ЭКРАН \\\\\\\\\\\\\\\\\\\\\\\\\ mov cx,4 mov bx,0 stroka1: push cx mov sum,0 mov si,0 mov cx,3
stolbez1: push bx push si outword mas[bx][si] mov ax,mas[bx][si] add sum,ax pop si pop bx add si,2 ; si=si+2 переходим к следующему элементу в строке mov ah,2 mov dl,9 int 21h loop stolbez1 ; вывод на экран ( mov dl,'(' mov ah,2h int 21h outint sum ; выводим сумму на экран ; вывод на экран ) mov dl,')' mov ah,2h int 21h
add bx,6 pop cx mov dl, 10 int 21h mov dl, 13 int 21h loop stroka1
;////////////////// КОНЕЦ ПРОГРАММЫ \\\\\\\\\\\\\\\\\\\\\\\\\\
mov ah,1 int 21h mov ax, 4C00h int 21h
end main
|
|