Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > в цикле подстановка значений


Автор: Klio 16.5.2008, 13:47
Приветствую.
Проблема с уменьшением количества кода
Eсть N переменных вроде >>>
a1 db ' dsdsfsdfs$'
a2 db ' efwefwef$'
a3 db ' thtrhtrhtr$'
и так далее
как видите переменные отличаются только порядковым номером

Код

mov V,1
mov cx,N
a: mov ah,09h
  lea dx, a+N   ; !!!!! - набрал про так
  int 21h
  inc V
loop a


что нужно ввести вместо "a+N" чтобы при каждом проходе тела цикла происходила подстановка определённого значения >>> 1 проход - lea dx,a1  /  2 проход - lea dx,a2 / lea dx,a3 и так далее

Автор: sgi1981 18.5.2008, 22:40
Тебе нужно использовать массив указателей на строки.
Перед циклом в этом массиве должны храниться адреса на строки, а в цикле в регистр dx заносится значение очередного элемента массива.

Автор: BeKToP 19.5.2008, 18:12
Самый простой вариант, сделать строки одинаковой длины (После '$' добавить пробелов), тогда всё элементарно:

Код

      lea dx,a1
        mov cx,N
        mov ah,09h
a:     int 21h
        add dx,L   ;L - Длина строки
loop a
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)