IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> МЕТОДЫ АДРЕСАЦИИ
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


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


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


кто нибудь может показать любой из этих хотя бы методов адресации на этом задании? буду очень признателен
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость







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]
относительно базова индексная

 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


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

Добавлено:
меня тревожит тут ещё вот это k[n]:=$AFA , так дано по заданию, а я могу заменить на обычное число?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


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

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

Нет, т.к. k-массив of byte. Т.е. максимальное число $FF.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


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

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

а как бы Вы написали этот ассемблерский код обычным способом адресации???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Чё то непонятно если массив байт как в него 0AFA влезет???????????????
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Что значит "обычным" способом адресации?????????что ты понимаешь под словом обычный?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


Цитата(Гость @ 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);

Вот как бы выглядел этот фрагмент ??? я думаю обычный это косвенно-регистровый, он более удобен, по крайней мере в этой задачке, т.к. я его практически юзаю всегда
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


Цитата(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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.10.2020 9:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name