Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ МЕТОДЫ АДРЕСАЦИИ

Автор: forum4uxa 24.01.2007 20:52

Реализовать фрагмент программы на ассемблере каждым из четырех косвенных методов адресации: косвенно-регистровой, базовой (индексной), базовой индексной и базовой индексной со смещением, эквивалентный ука-занной программе на языке 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 24.01.2007 23:56

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

Автор: Гость 25.01.2007 1:50


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 25.01.2007 2:42

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

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

Автор: Malice 25.01.2007 3:19

Цитата(forum4uxa @ 24.01.2007 22:42) *

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

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

Автор: forum4uxa 25.01.2007 3:38

Цитата(Malice @ 24.01.2007 23:19) *

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

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

Автор: Гость 25.01.2007 3:39

Чё то непонятно если массив байт как в него 0AFA влезет???????????????

Автор: Гость 25.01.2007 3:42

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

Автор: forum4uxa 25.01.2007 4:12

Цитата(Гость @ 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 27.01.2007 23:28

Цитата(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