Ассемблерная вставка, двумерные массивы - Turbo Pascal

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

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

Подскажите, как обращаться к конкретному элементу двумерного массива? Нужна точная формула адреса и пример использования.

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

textual
Листинг программы
const n = 5;
var   a, b, c : array[1..n,1..n] of integer;
      i, j, k : integer;
Begin
  {Инициализируем перемножаемые матрицы a и b}
  k:=0;
  for i:=1 to n do
    for j:=1 to n do
      begin
        inc(k);
        a[i,j]:=k;
      end;
  for i:=1 to n do
    for j:=1 to n do
      begin
        b[i,j]:=k;
        dec(k);
      end;
 
  asm
    xor  si,si
 
    mov  cx,n
  @1:
    xor  bx,bx
    xor  di,di
    push cx
    mov  cx,n
  @2:
    push bx
    push cx
    push di
    push si
 
    xor  bx,bx
    mov  cx,n
  @3:
    mov  ax,word ptr a[si]
    xor  dx,dx
    imul word ptr b[di]
    add  bx,ax
    add  si,2
    add  di,2*n
    loop @3
 
    mov  ax,bx
    pop  si
    pop  di
    pop  cx
    pop  bx
    mov  word ptr c[bx+si],ax    {Очередной элемент результата}
    add  bx,2
    add  di,2
    loop @2
 
    pop  cx
    add  si,2*n
    loop @1
  end;
End.

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


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

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

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