C
Cool J
Доброго времени суток!
На данный момент работаю с Ассемблером
TURBO ASSEMBLER 5.0
Есть некое задание... нужно выполнить в течении сегодняшнего - завтрашнего дня.
Открывал много книг, примеров... написал приблезительный шаблон програмы...
Но вот не удается достичь необходимой цели. Програма практически написаная... верней уже написана - работает но выводит совсем не то что нужно... Очень нужна помощь... Советом либо подсказкой... буду очень рад.
Итак перейду к делу:
Условие задачи таково...
Дано число k (0 < k < 11) и матрица размером 4 x 10. Найти сумы элементов всех ее рядов и столбцов. Найти суму и произведение элементов k-го столбца данной матрицы.
(Коментарии к строком на Русско-Украинском, сам с Украины... за это прошу прощния)
После компеляции и линковки... запуска exe-шки:
вывело на екран такое
Но увидив масив вы поймете что полученый результат не соответсвует действительности...
Ех... очень нужно отладить эту програму...
Ответы давайте здесь, либо в ICQ 304719012
Попробую отблагодарить того кто поможет.
С уважением Виталий.
На данный момент работаю с Ассемблером
TURBO ASSEMBLER 5.0
Есть некое задание... нужно выполнить в течении сегодняшнего - завтрашнего дня.
Открывал много книг, примеров... написал приблезительный шаблон програмы...
Но вот не удается достичь необходимой цели. Програма практически написаная... верней уже написана - работает но выводит совсем не то что нужно... Очень нужна помощь... Советом либо подсказкой... буду очень рад.
Итак перейду к делу:
Условие задачи таково...
Дано число k (0 < k < 11) и матрица размером 4 x 10. Найти сумы элементов всех ее рядов и столбцов. Найти суму и произведение элементов k-го столбца данной матрицы.
Код:
SEGM segment
assume CS:SEGM, DS:SEGM, ES:SEGM, SS:SEGM
org 100h
Begin:
;************************************** поиск сумм строчек*********************************************
mov si,0 ;si=столбцы в матрице
mov bx,0 ;bx=строки в матрице
mov cx,4 ;число для внешнего цикла (по строчкам)
external: ;внешний цикл по строчкам
mov al,array[bx][si] ;в ax первый элемент матрицы
push cx ;сохранение в стеке счётчика внешнего цикла
mov cx,10 ;число для внутреннего цикла
mov si,0
iternal: ;внутренний цикл по строке
inc si ;передвижение на следующий элемент в строке
add al,tmp ;подсчет суммы строки
mov tmp,al ;запомнили сумму
loop iternal;цикл по строке cx раз
pop cx ;восстанавливаем CX из стека
;вывод на экран суммы н-ой строки
mov ah,02h ;вывод сообщения на экран
mov dl,tmp
add dl,30h ;додаємо до нашої цифри у масві 30h, оскільки, з саме з цього числа в таблиці ASCII кодів, починаютсья цифри
int 21h
mov dl,13 ;перехід на наступну строку, і встановлення курсора на початок строки
mov ah,02h
int 21h
mov dl,10
mov ah,02h
int 21h
;конец вывода на экран
mov tmp,0
add bx,1 ;передвигаемся на следующую строку
loop external ;цикл (внешний)
;***********************************теперь поиск сумм столбцов (и К-ой произведение)*********************************************
mov tmp,0 ;обнулиние
mov si,0 ;si=столбцы в матрице
mov bx,0 ;bx=строки в матрице
mov cx,10 ;число для внешнего цикла (по столбцам)
external1: ;внешний цикл по столбцам
mov al,array[bx][si] ;в ax первый элемент матрицы
push cx ;сохранение в стеке счётчика внешнего цикла
mov cx,4 ;число для внутреннего цикла (по стобцу)
mov bx,0
iternal1: ;внутренний цикл по столбцу
add bx,1 ;передвижение на следующий элемент в столбце
add al,tmp ;подсчет суммы столбца
mov tmp,al ;запомнили сумму
mov ax,bx
cmp al,k ;сравниваем номер столбца с заданным К
jne here ;если не совпал с искомым, то переход на here
mov ax,0
mov al,array[bx][si]
mul tmp1 ;перемножаем
mov tmp1,ax;сохраняем
here:
loop iternal1;цикл по столбцу cx раз
pop cx ;восстанавливаем CX из стека
;вывод на экран суммы н-го столбца
mov ah,02h ;вывод сообщения на экран
mov dl,tmp
add dl,30h ;додаємо до нашої цифри у масві 30h, оскільки, з саме з цього числа в таблиці ASCII кодів, починаютсья цифри
int 21h
mov dl,13 ;перехід на наступну строку, і встановлення курсора на початок строки
mov ah,02h
int 21h
mov dl,10
mov ah,02h
int 21h
;конец вывода на экран
mov tmp,0
inc si ;передвигаемся на следующий столбец
loop external1 ;цикл (внешний)
;*******************************************************************************
*****************************************
;вывод умножения к-того столбца
mov ah,02h ;вывод сообщения на экран
mov dx,tmp1
add dl,30h ;додаємо до нашої цифри у масві 30h, оскільки, з саме з цього числа в таблиці ASCII кодів, починаютсья цифри
int 21h
;конец выода на экран
mov ax,4c00h; ф-ця для коректного виходу, і для коректноого завершення роботи
int 21h
;data
array db 1,2,3,4,5,6,7,8,9,1,1,2,3,4,5,6,7,8,9,1,1,2,3,4,5,6,7,8,9,1,1,2,3,4,5,6,7,8,9,1;это массив 10 на 4, заполнял цыфрами что бы не было переполнения
k db 3 ;номер заданного столбца
tmp db 0 ;temp переменная для суммы
tmp1 dw 1 ;temp переменная для произведения
SEGM ends
end Begin
После компеляции и линковки... запуска exe-шки:
вывело на екран такое
Код:
0
0
0
0
6
6
6
6
6
6
6
6
6
6
0
Ех... очень нужно отладить эту програму...
Ответы давайте здесь, либо в ICQ 304719012
Попробую отблагодарить того кто поможет.
С уважением Виталий.