Помощь - Поиск - Пользователи - Календарь
Полная версия: МЕТОДЫ АДРЕСАЦИИ
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Assembler
forum4uxa
Реализовать фрагмент программы на ассемблере каждым из четырех косвенных методов адресации: косвенно-регистровой, базовой (индексной), базовой индексной и базовой индексной со смещением, эквивалентный ука-занной программе на языке Pascal задания:

n:=23;
j[n]:=2;
for k[n]:=$AFA downto 9 do
if ((k[n] div 4)=3) or (k[n] mod 100=0) then j[n]:=j[n]*k[n]+k[n]*k[n] else j[n]:=j[n]+k[n]


(объявле-ния: var n:word; k,i,j:array[1..1000] of byte);

*** Для реализации метода адресации «базовый индексный со смеще-нием» вместо j[n],k[n],i[n] считать в задании j[n+2],k[n+2],i[n+2] соответст-венно.


forum4uxa
кто нибудь может показать любой из этих хотя бы методов адресации на этом задании? буду очень признателен
Гость

K DB 1000 DUP(?)

LEA BX,K
ADD BX,23
MOV AL,[BX]
загрузка в AL 23его байта из массива К с помощью базовой(она же наверное косвено регистровая)
MOV SI,23
MOV AL,K[SI]
индексная
LEA BX,K
MOV SI,23
MOV AL,[BX+SI]
БАЗОВО ИНДЕКСНАЯ
LEA BX,K
MOV SI,20
MOV AL,[BX+SI+3]
относительно базова индексная

forum4uxa
а как бы Вы написали этот ассемблерский код обычным способом адресации??? unsure.gif

Добавлено:
меня тревожит тут ещё вот это k[n]:=$AFA , так дано по заданию, а я могу заменить на обычное число?
Malice
Цитата(forum4uxa @ 24.01.2007 22:42) *

меня тревожит тут ещё вот это k[n]:=$AFA , так дано по заданию, а я могу заменить на обычное число?

Нет, т.к. k-массив of byte. Т.е. максимальное число $FF.
forum4uxa
Цитата(Malice @ 24.01.2007 23:19) *

Нет, т.к. k-массив of byte. Т.е. максимальное число $FF.

а как бы Вы написали этот ассемблерский код обычным способом адресации???
Гость
Чё то непонятно если массив байт как в него 0AFA влезет???????????????
Гость
Что значит "обычным" способом адресации?????????что ты понимаешь под словом обычный?
forum4uxa
Цитата(Гость @ 24.01.2007 23:42) *

Что значит "обычным" способом адресации?????????что ты понимаешь под словом обычный?


Реализовать фрагмент программы на ассемблере :

n:=23;
j[n]:=2;
for k[n]:=$AFA downto 9 do
if ((k[n] div 4)=3) or (k[n] mod 100=0) then j[n]:=j[n]*k[n]+k[n]*k[n] else j[n]:=j[n]+k[n]

(объявле-ния: var n:word; k,i,j:array[1..1000] of byte);

Вот как бы выглядел этот фрагмент ??? я думаю обычный это косвенно-регистровый, он более удобен, по крайней мере в этой задачке, т.к. я его практически юзаю всегда
forum4uxa
Цитата(forum4uxa @ 25.01.2007 0:12) *

Реализовать фрагмент программы на ассемблере :

n:=23;
j[n]:=2;
for k[n]:=$AFA downto 9 do
if ((k[n] div 4)=3) or (k[n] mod 100=0) then j[n]:=j[n]*k[n]+k[n]*k[n] else j[n]:=j[n]+k[n]

(объявле-ния: var n:word; k,i,j:array[1..1000] of byte);

Вот как бы выглядел этот фрагмент ??? я думаю обычный это косвенно-регистровый, он более удобен, по крайней мере в этой задачке, т.к. я его практически юзаю всегда

кто нибудь может подсказать? good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.