Не понимаю до конца адресацию в двумерном массиве - Assembler

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

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

Задача: задать двумерный массив 4*5 целых чисел. Сложить два числа: первое – из строки 2, столбца 3; второе - из строки 3, столбца 4. Вот код программы:
include\masm32\include\masm32rt.inc
.data
  mas dd -10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10
    i=4
    j=5
    el_size=1
.code
start:
  print chr$(" -10  -9  -8  -7  -6 ",10,13)
  print chr$("  -5  -4  -3  -2  -1 ",10,13)
  print chr$("   1   2   3   4   5 ",10,13)
  print chr$("   6   7   8   9  10 ",10,13)
  print chr$(" ",10,13)
     lea ESI,mas
     ADD ESI,43
     MOV EAX,[ESI]
     ADD ESI,64
     ADD EAX,[ESI]
      fn MessageBox,0,str$(EAX),"Сумма элементов (2;3) и (3;4) первого массива: ",MB_OK
        invoke ExitProcess,0
end start
Помогите, пожалуйста, понять где ошибка в адресации. Заранее спасибо!

Решение задачи: «Не понимаю до конца адресацию в двумерном массиве»

textual
Листинг программы
     lea ESI,mas
     ADD ESI,28
     MOV EAX,[ESI]
     ADD ESI,52
     ADD EAX,[ESI]

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

  1. lea ESI,mas - в данном коде используется инструкция LEA (Load Effective Address), которая загружает в регистр ESI (Source Index) адрес массива mas.
  2. ADD ESI,28 - к адресу массива добавляется 28, и это новое значение сохраняется в регистре ESI.
  3. MOV EAX,[ESI] - в регистр EAX (Destination Register) записывается значение по адресу, который содержится в регистре ESI.
  4. ADD ESI,52 - к адресу, содержащемуся в регистре ESI, добавляется 52, и это новое значение сохраняется в регистре ESI.
  5. ADD EAX,[ESI] - к значению в регистре EAX добавляется значение по адресу, который содержится в регистре ESI.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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