1. Заголовок или название темы должно быть информативным 2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора. 5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM! 6. Проверяйте программы перед тем, как выложить их на форум!!
Проблемы со всем... Не знаю правильный ли препод, но показывал он нам asm только на каком-то эмуляторе со светофорами... Матрицы и близко не рассказывал.. Вобщем поигрались и все.
А чего их рассказывать? Выделяешь в области данных пространство под 16 (4х4) чисел нужного размера (например, по 2 байта на число). Первые четыре числа - это первая строка твоей матрицы, следующие четыре - вторая, и т.д. Заполняешь ее, если нужно. На главной диагонали лежат перве число в первой строке, второе во второй, третье в третьей и четвертое в четвертой. Суммируешь их и выводишь.
Если тебя пугает страшное слово "матрица", замени его на "таблица" или "массив" - как нравится.
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой
А чего их рассказывать? Выделяешь в области данных пространство под 16 (4х4) чисел нужного размера (например, по 2 байта на число). Первые четыре числа - это первая строка твоей матрицы, следующие четыре - вторая, и т.д. Заполняешь ее, если нужно. На главной диагонали лежат перве число в первой строке, второе во второй, третье в третьей и четвертое в четвертой. Суммируешь их и выводишь.
Если тебя пугает страшное слово "матрица", замени его на "таблица" или "массив" - как нравится.
Спасибо, попробую.. А как суммировать? перебирая каждый, или сразу можно указать номер элемента (ij)?
И еще вопрос. Реально ли это дело скомпилировать в среде Turbo Pascal? или надо MASM ? а то я в нем не шарю...
Вот кстати нашел код:
const_square_matrix_order = 4
ASSUMEcs:code, ds:data, ss:stk
codeSEGMENT
entry_point:
mov ax,SEGdata
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 alloop 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 siloop 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
Я в нем никак не разберусь Где в нем вывод на экран? Да и компиляторы ругаються уже на первой строчке... Что там не так?
Да и компиляторы ругаються уже на первой строчке... Что там не так?
Ну, а какие компиляторы ругаются, чего ж не сказал? На самом деле у тебя программа не оформлена как следует, это не код, а часть кода... К примеру, не описан сегмент данных, а сами данные описаны (хотя data и используется в ASSUME). Это как понимать? Ассемблер этого не понимает.