Сумма элементов главной диагонали матрицы - Assembler

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

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

Введите с клавиатуры 25 символов одноразрядных чисел в диапазоне 0 … 9. Представляя массив как матрицу 5 х 5, суммируйте элементы её главной диагонали. Исходную матрицу и результат суммирования отобразите на экране. ПОМОГИТЕ ПОЖАЛЙСТА СЕГОДНЯ ЗДАВАТЬ

Решение задачи: «Сумма элементов главной диагонали матрицы»

textual
Листинг программы
…
DATE1 STRUCT        ; визначення даних СТРУКТУРА з іменем DATE1
CarName db ?              ; ім’я першого поля структури  
Number  dw  ?             ; ім’я другого поля структури  
 Name1   dw  ?            ; ім’я третього поля структури  
     Viol    dd  ?            ; ім’я четвертого поля структури  
DATE1 ENDS    ; закінчення даних СТРУКТУРА з іменем DATE1
.data                       ; директива визначення даних
  Car1  DATE1 <1,10,2,3>        ; структура з іменем Car1
  Car2  DATE1 <2,-11,6,7>       ; структура з іменем Car2
  Car3  DATE1 <3,12,10,11>      ; структура з іменем Car3
  Car4  DATE1 <4,13,14,15>      ; структура з іменем Car4
 ifmt db "Исходный массив - ввиде матрицы:",0dh,0ah,\
"01   10   02   03",0dh,0ah,\
"02  -11   06   07",0dh,0ah,\
"03   12   10   11",0dh,0ah,\
"01   13   14   15",0dh,0ah,0ah,\
"Результат  сложения значений ",0dh,0ah,\
"элементов главной диагонали: = %d",0dh,0ah,0ah,\
"Автор программы:  Рысованый А.Н., НТУ ХПИ",0
titl1 db "Сумма элементов главной диагонали",0 ; назва віконця
st2 db 10 dup(?),0 ; 
.code               ; директива початку сегмента даних
start:                  ; мітка початку програми з ім’ям start
xor ebx,ebx
  movzx bx,Car1.CarName     ; заповнювання нулями старшої частини 
 add bx,Car2.Number         ; bx := Car1.CarName  +  Car2.Number
 add bx,Car3.Name1      ; 
 add  ebx,Car4.Viol         ; 
.data       ; директива визначення даних (спрощена сегментація)
res dd ?    ; резервування 32-розрядної комірки пам’яті з ім’ям res
.code               ; директива початку сегмента-даних
mov res,ebx ; 
invoke wsprintf,ADDR st2,ADDR ifmt,res                  ; функція перетворення res
invoke MessageBox,              ; функцiя виведення спрощеного вікна консолі
0, ADDR st2, ADDR titl1, MB_ICONINFORMATION+180000h
invoke ExitProcess, 0     ; повернення керування ОС Windows  та вивільнення ресурсів
end start

Объяснение кода листинга программы

Код выполняет сложение элементов главной диагонали матрицы, представленной в виде структур данных DATE1, и выводит результат в консоль. Список действий:

  1. xor ebx,ebx - инициализация регистра ebx нулем.
  2. movzx bx,Car1.CarName - заполнение старшей части регистра bx нулями, младшая часть регистра bx получает значение Car1.CarName.
  3. add bx,Car2.Number - сложение bx и Car2.Number, результат сохраняется в bx.
  4. add bx,Car3.Name1 - сложение bx и Car3.Name1, результат сохраняется в bx.
  5. add ebx,Car4.Viol - сложение bx и Car4.Viol, результат сохраняется в ebx.
  6. mov res,ebx - значение ebx (результат сложения) сохраняется в переменной res.
  7. invoke wsprintf,ADDR st2,ADDR ifmt,res - функция wsprintf выводит в st2 строку, формат которой задан в ifmt, а данные берутся из res.
  8. invoke MessageBox,0, ADDR st2, ADDR titl1, MB_ICONINFORMATION+180000h - вывод диалогового окна с сообщением, заголовок которого указан в st2, а текст сообщения - в titl1.
  9. invoke ExitProcess, 0 - завершение работы программы. Пояснение к коду:
    • Структура данных DATE1 используется для представления матрицы. Каждый элемент матрицы представлен в виде отдельной структуры DATE1.
    • Переменные Car1, Car2, Car3 и Car4 представляют собой структуры DATE1, которые содержат данные из матрицы.
    • Переменная res используется для хранения суммы элементов главной диагонали матрицы.
    • Функция wsprintf используется для форматирования строки, которая затем выводится в диалоговое окно с помощью функции MessageBox.

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы