Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчет количества ненулевых элементов... 
:(
    Опции темы
xpamoi
Дата 20.1.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 8.6.2009
Где: Vladivostok city

Репутация: нет
Всего: нет



Добрых суток! 
У меня вот таков вопрос... Нужно написать подпрограмму для подсчета ненулевых элементов в сегменте стека(результат поместить в регистр CX) для процессора Intel 80x86 реальный режим работы.?!
PM MAIL Skype   Вверх
iff
Дата 20.1.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 5
Всего: 16



Код

;Используются cx, bp, ax
;При передачи управления коду, написанноме ниже требуется, что бы bp и ax содержали 00
        mov     cx, {колличество однобайтных ячеек в стеке}
a10:    cmp     byte ptr [bp], 00
        je      a20
        inc     ax
a20:    inc     bp
        loop    a10
        mov     cx, ax



--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
xpamoi
Дата 21.1.2010, 04:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 8.6.2009
Где: Vladivostok city

Репутация: нет
Всего: нет



iff
Спасибо большое=)) вот только вспомнить не могу что такое "je" ?!
PM MAIL Skype   Вверх
Mikl_
Дата 21.1.2010, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Цитата(xpamoi)
вот только вспомнить не могу что такое "je" ?
Студенческая наивность, не может он вспомнить то, что и не знал никогда smile je сокращение от jump if equal синоним jz по-русски "перейти если флаг НУЛЯ равен 1" smile 
PM MAIL   Вверх
iff
Дата 21.1.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 5
Всего: 16



Код

cmp     byte ptr [bp], 00
je      a20

Это означает, что если байт находящийся в ячейки со смещением SS:BP нулевой, то перейти к метке a20, если значение ненулевое, то продолжать выполнять инструкции далее по-порядку. В данном случае при ненулевой ячейки программа (см. сообщение выше) прибавит 1 к AX. А как вы понимаете, AX, у нас и есть счётчик ненулевых ячеек.

Это сообщение отредактировал(а) iff - 21.1.2010, 16:14


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
xpamoi
Дата 22.1.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 8.6.2009
Где: Vladivostok city

Репутация: нет
Всего: нет



а вот в самом начале перед всем кодом можно обнулить непосредственно AX и BP коммандой "xor" ?!

Код

xor ax, ax
xor bp, bp

PM MAIL Skype   Вверх
Mikl_
Дата 22.1.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



xpamoi
хочешь mov ax,0 хочешь sub ax,ax хочешь xor ax,ax  smile это вопрос личного вкуса, а на вкус и цвет товарищей нет
PM MAIL   Вверх
xpamoi
Дата 22.1.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 8.6.2009
Где: Vladivostok city

Репутация: нет
Всего: нет



Mikl_
спасибо большое =) учтем  smile 
PM MAIL Skype   Вверх
iff
Дата 22.1.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 5
Всего: 16



я бы не советовал использовать mov ax, 0, т.к. эта инструкция генерируют 3 байта машинного кода, а остальные, предлежанные xpamoi, в 2 байта. Возможно так же различия в скорости их выполнения.

Кстате, говоря возможно представленный мною код применчть несколько по иному: можнов bp загрузить смещение начальной ячейки. Например, если надо узнать сколько ненулевых ячеек с 5 по 10, то загрузите в bp 5, в cx 6 и обнулите ax.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1258 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.