Ассемблерная вставка: копирование содержимого массива типа char в n-раз больший массив - Turbo Pascal

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

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

Собственно задание: Написать программу, осуществляющую копирование содержимого массива типа char в n-раз больший массив, при этом каждый элемент массива должен повторяться n-раз, т. е., например, из массива 'a', 'b', 'c', при n=3, должен быть сформирован массив 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c' Ввод-вывод массивов осуществлять в виде строк. Основную часть программы заменить ассемблерной вставкой. Вот код на паскале:
Собственно вопрос как в ассемблерной вставке обратиться к элементам массива?

Решение задачи: «Ассемблерная вставка: копирование содержимого массива типа char в n-раз больший массив»

textual
Листинг программы
var
  a, b: String;
  d: Byte;
begin
  Write('enter string: '); ReadLn(a);
  Write('enter count: '); ReadLn(d);
  b:='error :(';
  asm
    mov  dx,ds
    mov  es,dx
    lea  si,a
    lea  di,b
    xor  ax,ax
    lodsb
    mov  cl,d
    mul  cl
    or   ah,ah
    jnz  @2
    mov  cx,ax
    stosb
    xor  bx,bx
@1:
    lodsb
    xchg cx,bx
    mov  cl,d
    rep  stosb
    xchg cx,bx
    loop @1
@2:
  end;
  Write('result: ',b); ReadLn;
end.

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

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