| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Подсчет количества ненулевых элементов... |
| Автор: xpamoi 20.1.2010, 15:02 |
| Добрых суток! У меня вот таков вопрос... Нужно написать подпрограмму для подсчета ненулевых элементов в сегменте стека(результат поместить в регистр CX) для процессора Intel 80x86 реальный режим работы.?! |
| Автор: iff 20.1.2010, 21:43 | ||
|
| Автор: xpamoi 21.1.2010, 04:46 |
| iff, Спасибо большое=)) вот только вспомнить не могу что такое "je" ?! |
| Автор: Mikl_ 21.1.2010, 07:00 | ||
|
| Автор: iff 21.1.2010, 16:08 | ||
Это означает, что если байт находящийся в ячейки со смещением SS:BP нулевой, то перейти к метке a20, если значение ненулевое, то продолжать выполнять инструкции далее по-порядку. В данном случае при ненулевой ячейки программа (http://forum.vingrad.ru/index.php?showtopic=288008&view=findpost&p=2077010) прибавит 1 к AX. А как вы понимаете, AX, у нас и есть счётчик ненулевых ячеек. |
| Автор: xpamoi 22.1.2010, 11:03 | ||
а вот в самом начале перед всем кодом можно обнулить непосредственно AX и BP коммандой "xor" ?!
|
| Автор: Mikl_ 22.1.2010, 12:23 |
| xpamoi, хочешь mov ax,0 хочешь sub ax,ax хочешь xor ax,ax |
| Автор: xpamoi 22.1.2010, 12:39 |
| Mikl_, спасибо большое =) учтем |
| Автор: iff 22.1.2010, 16:07 |
| я бы не советовал использовать mov ax, 0, т.к. эта инструкция генерируют 3 байта машинного кода, а остальные, предлежанные xpamoi, в 2 байта. Возможно так же различия в скорости их выполнения. Кстате, говоря возможно представленный мною код применчть несколько по иному: можнов bp загрузить смещение начальной ячейки. Например, если надо узнать сколько ненулевых ячеек с 5 по 10, то загрузите в bp 5, в cx 6 и обнулите ax. |