Работа с массивами Assembler
Нужна помощь. Пишу в emu8086.
- Сформировать массив данных объемом в 10 байт.
- Сформировать пустой массив объемом в 10 байт.
- Выполнить перенос данных из первого массива в другой, используя методы косвенной адресации (базовой, индексной и базово-индексной).
- С помощью команды XLAT определить 6(если считать от нуля) элемент второго массива. Вот начал код:
dat segment
array db 1,2,3,4,5,6,17,8,9,10
array1 db 10 dup(?)
elem db 1 dup(?)
dat ends
C первыми двумя пунктами справился, с остальными не получается. Помогите пожалуйста с остальными
Ответы (1 шт):
Автор решения: PRODIGY
→ Ссылка
Вот пример на fasm'e:
3. Выполнить перенос данных из первого массива в другой, используя методы косвенной адресации (базовой, индексной и базово-индексной).
cld ;// Clear Direction (шаг слева на право)
xor ebx,ebx ;// EBX = индекс = нуль
mov esi,array ;// адрес источника
mov edi,array1 ;// адрес приёмника
mov ecx,10 ;// длина массива
@@: mov al,byte[esi+ebx] ;// AL = байт из ESI (индексная адресация)
stosb ;// записать AL в EDI (edi +1)
inc ebx ;// сл.индекс..
loop @b ;// промотать цикл ECX-раз
;//******* Обычное копирование **********
mov esi,array ;// источник
mov edi,array1 ;// приёмник
mov ecx,10 ;// длина
rep movsb ;// скопировать из ESI в EDI
4. С помощью команды XLAT определить 6 (если считать от нуля) элемент второго массива.
mov ebx,array1 ;// адрес массива
mov al,6 ;// индекс в нём
xlatb ;// AL = 17