Структуры в ассемблере - Assembler (225740)
Формулировка задачи:
Здравствуйте . Запутался со структурами . Есть такая задача: дана матрица 4 на 6 , нужно найти сумму элементов каждого столбца .
Вот я пытался делать так:
Но в таком случае , я могу посчитать только 4 столбца ( на остальные 2 не хватает регистров , я все занял уже eax,ebx,ecx,edx) . Этот код всё считает правильно ,но нужно ещё как-то подсчитать и остальные столбцы.
Помогите , пожалуйста . Что нужно для этого сделать?
.386 ;4*6 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\fpu.inc include \masm32\include\user32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data DATA STRUCT ob1 dd ? ob2 dd ? ob3 dd ? ob4 dd ? ob5 dd ? ob6 dd ? DATA ENDS .data ;str- строка str1 DATA <1,2,3,4,5,6> str2 DATA <7,8,9,10,11,12> str3 DATA <13,14,15,16,17,18> str4 DATA <19,20,21,22,23,24> ifmt db "Исходная матрица:",0dh,0ah,\ " 01 02 03 04 05 06 ",0dh,0ah,\ " 07 08 09 10 11 12 ",0dh,0ah,\ " 13 14 15 16 17 18 ",0dh,0ah,\ " 19 20 21 22 23 24 ",0dh,0ah,\ ;"Сумма элементов:=%d,%d,%d,%d,%d,%d",0 "Сумма элементов 1-го столбца=%d",0dh,0ah,\ "Сумма элементов 2-го столбца=%d",0dh,0ah,\ "Сумма элементов 3-го столбца=%d",0dh,0ah,\ "Сумма элементов 4-го столбца=%d",0dh,0ah,\ "Сумма элементов 5-го столбца=%d",0dh,0ah,\ "Сумма элементов 6-го столбца=%d",0dh,0ah,0 titl db "Сумма элементов каждого столбца",0 st2 db 10 dup(?),0 .code _Start: mov eax,str1.ob1 add eax,str2.ob1 add eax,str3.ob1 add eax,str4.ob1 mov ebx,str1.ob2 add ebx,str2.ob2 add ebx,str3.ob2 add ebx,str4.ob2 mov ecx,str1.ob3 add ecx,str2.ob3 add ecx,str3.ob3 add ecx,str4.ob3 mov edx,str1.ob4 add edx,str2.ob4 add edx,str3.ob4 add edx,str4.ob4 ;mov eax,str1.ob5 ;add eax,str2.ob5 ;add eax,str3.ob5 ;add eax,str4.ob5 ;mov ebx,str1.ob6 ;add ebx,str2.ob6 ;add ebx,str3.ob6 ;add ebx,str4.ob6 .data res1 dd ? res2 dd ? res3 dd ? res4 dd ? res5 dd ? res6 dd ? .code mov res1,eax mov res2,ebx mov res3,ecx mov res4,edx mov res5,eax invoke wsprintf,ADDR st2,ADDR ifmt,res1,res2,res3,res4 invoke MessageBox,0,ADDR st2,ADDR titl,MB_OK invoke ExitProcess,0 end _Start
Я использовал ещё регистры esi и edi и вроде всё получилось . Думаю , тема закрыта.
Решение задачи: «Структуры в ассемблере»
textual
Листинг программы
mov eax,str1.ob1 add eax,str2.ob1 add eax,str3.ob1 add eax,str4.ob1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д