IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Задачка по ASM, на матрицы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Вот такая задачка...

Нужно найти сумму элементов, которые лежат под главной диагональю матрицы.
Вывести сумму на индикатор

- Размерность матрицы 4х4
- Матрица в задании не задана

Очень надеюсь на вашу помощь. Заранее спасибо за старания!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


с чем именно проблемы? что пробовал сам?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Цитата(Айра @ 4.12.2008 21:34) *

с чем именно проблемы? что пробовал сам?


Проблемы со всем...
Не знаю правильный ли препод, но показывал он нам asm только на каком-то эмуляторе со светофорами...
Матрицы и близко не рассказывал.. Вобщем поигрались и все.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(MadDavil @ 5.12.2008 19:55) *
Матрицы и близко не рассказывал..
А чего их рассказывать? Выделяешь в области данных пространство под 16 (4х4) чисел нужного размера (например, по 2 байта на число). Первые четыре числа - это первая строка твоей матрицы, следующие четыре - вторая, и т.д. Заполняешь ее, если нужно. На главной диагонали лежат перве число в первой строке, второе во второй, третье в третьей и четвертое в четвертой. Суммируешь их и выводишь.

Если тебя пугает страшное слово "матрица", замени его на "таблица" или "массив" - как нравится.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 5.12.2008 21:16) *

А чего их рассказывать? Выделяешь в области данных пространство под 16 (4х4) чисел нужного размера (например, по 2 байта на число). Первые четыре числа - это первая строка твоей матрицы, следующие четыре - вторая, и т.д. Заполняешь ее, если нужно. На главной диагонали лежат перве число в первой строке, второе во второй, третье в третьей и четвертое в четвертой. Суммируешь их и выводишь.

Если тебя пугает страшное слово "матрица", замени его на "таблица" или "массив" - как нравится.


Спасибо, попробую..
А как суммировать? перебирая каждый, или сразу можно указать номер элемента (ij)?

И еще вопрос. Реально ли это дело скомпилировать в среде Turbo Pascal? или надо MASM ? а то я в нем не шарю...


Вот кстати нашел код:


const_square_matrix_order = 4

ASSUME cs:code, ds:data, ss:stk

code SEGMENT
entry_point:
mov ax,SEG data
mov ds,ax

lea bx,square_matrix
mov cx,const_square_matrix_order*const_square_matrix_order
xor si,si
xor al,al

init_loop:
mov [bx+si],al
inc si
inc al
loop init_loop

;сложить сумму элементов по гл. диагонали
mov cx,const_square_matrix_order
xor dx,dx
xor ax,ax
xor si,si

s1_loop:
mov al,ds:[bx+si]
add dx,ax
add si,const_square_matrix_order+1
loop s1_loop
mov s1,dx

;найти сумму эл-в под главной диагональю
xor dx,dx
xor ax,ax
mov cx,1
mov si,const_square_matrix_order*1

s2_loop:
push cx

s2_loop_0:
mov al,[bx+si]
add dx,ax
inc si
loop s2_loop_0

pop cx
mov ax,const_square_matrix_order
sub ax,cx
add si,ax

inc cx
cmp cx,const_square_matrix_order
jb s2_loop
mov s2,dx



Я в нем никак не разберусь sad.gif Где в нем вывод на экран?
Да и компиляторы ругаються уже на первой строчке... Что там не так?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(MadDavil @ 5.12.2008 21:55) *
А как суммировать? перебирая каждый, или сразу можно указать номер элемента (ij)?
Зачем каждый? blink.gif Те, которые нужно. То есть 1-й, 6-й, 11-й и 16-й.

Цитата(MadDavil @ 5.12.2008 21:55) *
И еще вопрос. Реально ли это дело скомпилировать в среде Turbo Pascal? или надо MASM ? а то я в нем не шарю...
Это зависит от ваших требований. В ТР будет не совсем чистый ассемблер. Например, тебе придется выделять память паскалевскими методами.


Добавлено через 3 мин.
Цитата(MadDavil @ 5.12.2008 21:55) *
Где в нем вывод на экран?
Его там нету.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
Да и компиляторы ругаються уже на первой строчке... Что там не так?
Ну, а какие компиляторы ругаются, чего ж не сказал? На самом деле у тебя программа не оформлена как следует, это не код, а часть кода... К примеру, не описан сегмент данных, а сами данные описаны (хотя data и используется в ASSUME). Это как понимать? Ассемблер этого не понимает.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Для меня все это очень сложно...
Буду разбираться.
А как вывести на экран кстати?
Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 15:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name