Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2011, 16:30   #1
rigiy
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 12
По умолчанию Небольшая задача на Ассемблере.

Выполнить анализ программы, прокомментировать каждую команду. Поставить адреса всех команд, начиная со второй. Определить сколько циклов и тактов требуется для выполнения каждой команды, время выполнения каждой команды и программы в целом, содержимое регистров и участвующих в программе ячеек памяти, после выполнения каждой команды, если тактовая частота микропроцессора – 2 Мгц. Записать программу в машинных
Цитата:
LEA BX, TITLES
MOV CX, 6
MOV SI, 0
B20 : MOV AH, [BX]
CMP AH, 61
JZ B30
B30: INC SI
INC [BX]
LOOP B20
RET
Буду очень признателен, если поможете с решением, и обьясните дураку, как это делается.
rigiy вне форума Ответить с цитированием
Старый 12.12.2011, 22:00   #2
rigiy
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 12
По умолчанию

Апну что ли...
rigiy вне форума Ответить с цитированием
Старый 12.12.2011, 22:11   #3
Defunate
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 83
По умолчанию

У нас когда был Ассемблер,в конце методичечки шла таблица-где было подробна описанна каждая команда,какой у неё адрес,сколько тактов она требует в разных контекстах)
Defunate вне форума Ответить с цитированием
Старый 13.12.2011, 00:47   #4
rigiy
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Defunate Посмотреть сообщение
У нас когда был Ассемблер,в конце методичечки шла таблица-где было подробна описанна каждая команда,какой у неё адрес,сколько тактов она требует в разных контекстах)
К огромному сожалению, никаких методичек, или даже лекций по ассемблеру у нас не было.
А времени на самостоятельное изучение критично мало.
rigiy вне форума Ответить с цитированием
Старый 13.12.2011, 09:02   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
К огромному сожалению, никаких методичек, или даже лекций по ассемблеру у нас не было.
А времени на самостоятельное изучение критично мало.
без обид - а вы думаете, что кто-то найдёт лишние полчаса времени, чтобы сделать за Вас вашу работу?!
Причём, как я понимаю, Вы самостоятельно делать ничего не собираетесь, так? (т.е. советы, как выполнить зту задачу можно и не давать?)
Тогда эта задача больше подходит для раздела платной помощи Фриланс...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2011, 11:09   #6
rigiy
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
без обид - а вы думаете, что кто-то найдёт лишние полчаса времени, чтобы сделать за Вас вашу работу?!
Причём, как я понимаю, Вы самостоятельно делать ничего не собираетесь, так? (т.е. советы, как выполнить зту задачу можно и не давать?)
Тогда эта задача больше подходит для раздела платной помощи Фриланс...
Специально ради этого написал в ОП-посте последнуюю строку.
Это не нужно решать за меня, я хочу решить сам.
Но не умею, потому помощи и прошу.
Просто обьясните как делать, и все.
rigiy вне форума Ответить с цитированием
Старый 13.12.2011, 13:28   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Просто обьясните как делать, и все.
находите в интернете таблицу с опкодами, где указано количество тактов.
(начать можете отсюда)
разбираете каждую команду на предмет адресации (в зависимости от того, где команда берёт данные - количество тактов может отличаться).
в результате для каждой команды прописываете количество тактов.
дальше "проходите" программу, выполняя каждую команду (в уме, например. или можно в дебаггере. фиксируете изменяющиеся регистры - это позволит вам получить содержимое регистров и памяти после каждой команды.
в процессе "прохождения" программы, считаете, какие команды и сколько раз выполняются в цикле - получаете ОБЩЕЕ количество тактов, которые будет выполняться данная программа (при этом всякие конвеерные фокусы, на которые способны современные процессоры, можно смело игнорировать (для простоты).
исходя из тактовой частоты высчитываете время выполнения одного такта.
умножаете на количество тактов команды/программы - получаете время выполнения команды/всей программы в целом.
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Небольшая задача.(Pascal) artugi Паскаль, Turbo Pascal, PascalABC.NET 7 16.03.2011 12:09
небольшая задача, просьба помочь) akamanax Общие вопросы C/C++ 1 15.12.2010 16:57
Небольшая задача WeRsUs Помощь студентам 1 20.11.2010 22:07