Структуры в ассемблере - Assembler (225740)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте . Запутался со структурами . Есть такая задача: дана матрица 4 на 6 , нужно найти сумму элементов каждого столбца . Вот я пытался делать так:
.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
Но в таком случае , я могу посчитать только 4 столбца ( на остальные 2 не хватает регистров , я все занял уже eax,ebx,ecx,edx) . Этот код всё считает правильно ,но нужно ещё как-то подсчитать и остальные столбцы. Помогите , пожалуйста . Что нужно для этого сделать?
Я использовал ещё регистры esi и edi и вроде всё получилось . Думаю , тема закрыта.

Решение задачи: «Структуры в ассемблере»

textual
Листинг программы
mov eax,str1.ob1
add eax,str2.ob1
add eax,str3.ob1
add eax,str4.ob1

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5