Новичок
Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.1.2008
Где: Минск
Репутация: нет Всего: нет
|
Выводит совершенно неверные данные(( Код | ; Для матрицы С(M, N) найти вектор A(M) каждый i-ый элемент ; которого равен сумме элементов i-го столбца model small .stack 100h .data m equ 3 ; кол-во строк n equ 4 ; кол-во столбцов mat db 1, 2, 3, 0 db 4, 5, 6, 0 db 7, 8, 9, 0 ;cуммы в данном случае 12, 15, 18, 0 vector db n dup(0); результирующий вектор sum db 0 .code
outint proc near push cx push dx push bx push ax ; Проверяем число на знак. test ax, ax jns short @oi1 ; Если оно отрицательное, выведем минус и оставим его модуль. mov ah, 02h mov dl, '-' int 21h pop ax push ax neg ax ; Количество цифр будем держать в CX. @oi1: xor cx, cx mov bx, 10 @oi2: xor dx, dx div bx ; Делим число на десять. В остатке получается последняя цифра. ; Сразу выводить её нельзя, поэтому сохраним её в стэке. push dx inc cx ; А с частным повторяем то же самое, отделяя от него очередную ; цифру справа, пока не останется ноль, что значит, что дальше ; слева только нули. test ax, ax jnz short @oi2 ; Теперь приступим к выводу. mov ah, 02h @oi3: pop dx ; Извлекаем очередную цифру, переводим её в символ и выводим. add dl, 30h int 21h ; Повторим ровно столько раз, сколько цифр насчитали. loop @oi3 pop ax pop bx pop dx pop cx ret outint endp
main: mov si,0 ;si - столбцы в матрице mov bx,0 ;bx - строки в матрице mov cx,m ;число для внешнего цикла (по строчкам) external: ;внешний цикл по строчкам push cx ;сохранение в стеке счётчика внешнего цикла mov cx,n ;число для внутреннего цикла mov si,0 mov sum,0
iternal: ;внутренний цикл по строке mov al,mat[bx][si] inc si ;передвижение на следующий элемент в столбце add sum,al ;запомнили сумму loop iternal;цикл по строке cx раз pop cx ;восстанавливаем CX из стека mov ah, sum mov vector[si],ah ;записываем результат в вектор add bx,1 ;передвигаемся на следующую строку loop external ;цикл (внешний)
mov cx,n ;отобразим результат mov si,0 ;si - столбцы в матрице
output: inc si mov al,vector[si] call outint mov ah, 02h mov dl, ' ' int 21h loop output
mov ax,4c00h int 21h
end main
|
|