Форум «Всё о Паскале» _ Ассемблер _ МЕТОДЫ АДРЕСАЦИИ
Автор: 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
а как бы Вы написали этот ассемблерский код обычным способом адресации???
Добавлено: меня тревожит тут ещё вот это 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);
Вот как бы выглядел этот фрагмент ??? я думаю обычный это косвенно-регистровый, он более удобен, по крайней мере в этой задачке, т.к. я его практически юзаю всегда