Консультация № 143309
07.09.2008, 21:55
0.00 руб.
11.09.2008, 09:28
0 2 1
Здравствуйте.

Помогите мне с задачей, пожалуйста, а то что то не получается.

В памяти хранится массив из 4-х двухбайтных слов.
Необходимо составить программу, которая пересылает 3-й элемент массива в регистр DX.
Использовать нужно базовую адресацию.

Заранее спасибо!!!!!!!!!!!!!

Обсуждение

давно
Старший Модератор
31795
6196
08.09.2008, 20:45
общий
Цитата: из почты
Вы бы немогли прокаментировать каждую строчку потому что я не очень понял чего вы написали у меня просто такой примерно код
model small ;модель организации памяти - малая, т.е. код в одном сегенте памяти, данные и и стек в другом
stack 256 ;стек размером в 256 байт
.data; сегмент стека
.disp db 04; зачем тут точка?
mas dw 123,234,456,576 ;массив из 4-х значений
.code; сегмент кода
main: ;точка входа
mov ax,@data ;адресуем сегмент данных, т.к. он в момент начала программы указывает на префикс, а не на данные
mov ds,ax

mov bx,offset mas ;запоминаем адрес массива
mov ax,[bx]disp ; в АХ записываем значение (по адресу ВХ+значение disp), а где само DX?
;с этого момента в АХ(DX) должно быть значение 3-го элемента массива, т.к. массив двух байтовый, т.е. на каждый элемент отводится по 2 байта,
; (3-1)*2=4 [color=red] ;адресация массива начинается с 0
[/color]
mov ax, 4c00h;завершить процесс
int 21h
end main; конец программы и точка входа в программу
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Советник
419
1011
11.09.2008, 09:23
общий
это ответ
Здравствуйте, Шептелуть Михайл Сергеевич!

mov bx, offset array
mov dx, [bx+(3-1)*2]

array DW 1, 2, 3, 4

или так можно

mov si, 3
dec si
shl si, 1

mov dx, [bx+si]

успехов.
Форма ответа