Массив: произведение элементов главной диагонали в матрице - Assembler
Формулировка задачи:
Помогите пожалуйста!!!!!очень сросно нужно!!!!! найти на ассемблеровской вставке в с++ произведение элементоа главной диагонали в статичнской матрице квадратной!!!! помогите пожалуйста!!!!!!
Решение задачи: «Массив: произведение элементов главной диагонали в матрице»
textual
Листинг программы
void main()
{
static int matrix[QLM][QLM]=
{
{1,2,3,4},
{5,6,7,8},
{1,2,3,4},
{1,2,3,4}
};
int qlm=QLM;
int nproduct;
_asm
{
mov eax,1
mov ecx,[qlm]
lea edi,matrix
mProduct:
mov ebx,[edi]
imul ebx
add edi,[qlm]
add edi,[qlm]
add edi,[qlm]
add edi,[qlm]
add edi,4
loop mProduct
mov [nproduct],eax
}
}
Объяснение кода листинга программы
- Объявлен массив
matrixразмеромQLMпоQLMс элементами1,2,3,4. - Объявлена переменная
qlmсо значениемQLM. - Объявлена переменная
nproductдля хранения произведения. - В блоке ассемблера происходит вычисление произведения элементов главной диагонали матрицы:
- Переменная
eaxинициализируется значением1. - Переменная
ecxинициализируется значениемqlm. - Переменная
ediинициализируется адресом первого элемента матрицыmatrix. - Затем происходит циклическое умножение элементов главной диагонали матрицы, начиная с первого элемента и заканчивая последним.
- Значение произведения сохраняется в переменной
eax, которая затем сохраняется в переменнойnproduct.
- Переменная
- В конце функции возвращается значение переменной
nproduct.