В качестве домашнего задания мне нужно инициализировать два одномерных массива, каждый из которых состоит из 10 членов по 2 байта, чтобы умножить каждый четный член на 2. Я нашел несколько кодов, но не понимаю части инициализации массивов в памяти.
В следующей части примера, после этого вопроса, что означает MOV AX,PODACI
?
- перемещает ли он только адрес первого члена в массиве
TABELA
иTABELA1
вAX
- или он перемещает первый элемент в массиве
TABELA
иTABELA1
вAX
(возможно ли это в моем случае, из-за размераAX
у меня есть данные типа dw?)
Нужно ли определять только массивы в DATA SEGMENT
, если адрес используется, как указано выше (мне нужно найти максимальный и минимальный элементы и в соответствии с этим планом определить также min_niz1 dw ?
и max_niz1 dw ?
в сегменте данных, возможно ли это, если я использую MOV AX,PODACI
) ?
Что означают MOV SI, OFFSET TABELA
и MOV DI, OFFSET TABELA1
, будет ли это сдвигать адрес смещения в SI
и DI
и что будет позже в AL
и BL
?
:
PODACI SEGMENT 'DATA'
TABELA DB 3Fh, 06h, 5Bh, 4Fh, 66h, 6Dh, 7Dh, 27h, 7Fh, 6Fh
TABELA1 DB 3Fh, 05h, 5Bh, 04h, 03h, 6Dh, 7Dh, 27h, 01h, 6Fh
PODACI ENDS
PROGRAM SEGMENT 'CODE'
ASSUME CS:PROGRAM,DS:PODACI
START: MOV AX,PODACI
MOV DS,AX
MOV SI,0
MOV DI, 0
MOV CX, 10
MOV SI, OFFSET TABELA
MOV DI, OFFSET TABELA1
petlja: MOV AL, [SI]
MOV BL, [DI]
CMP AL, BL
JNZ nije
INC DX
nije: INC SI
INC DI
loop petlja
PROGRAM ENDS
END START
Во второй части мне нужно умножить четные члены в массивах на 2, возможно ли это с этой частью кода, которая ниже?
mov ax,niz1[di]
add ax,ax
mov niz1[di],ax
Я не знаю, правильный ли это способ использовать только четные члены массива и возвращать новое значение в мой массив? Я пытался выполнить это с помощью emu 8086, но решение для меня не очевидно.
even:
MOV DI, 0
mov ax,niz1[di]
add ax
mov niz1[di],ax
inc di
inc di
cmp di,11
jle even:
di
) внутри цикла, а не раньше. Кроме того, ваше условие цикла неверно: оно снова войдет в цикл сdi=10
, но ваш массив состоит всего из 5 элементовword
, верно? - person Peter Cordes   schedule 04.02.2018shl niz1[di], 1
будет более эффективным, чем отдельная загрузка/сдвиг/сохранение. - person Peter Cordes   schedule 04.02.2018