подсчет количества значащих нулей и единиц в двоичной записи числа |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
подсчет количества значащих нулей и единиц в двоичной записи числа |
marwell |
22.05.2012 16:37
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
доброго дня
необходимо подсчитать количество нулей и единиц в двоичной записи числа .model small ; Модель памяти считает неправильно, хотя вроде логически правильно понимаю задачу. Буду рад помощи P.S. с ассемблером еще только знакомлюсь |
IUnknown |
22.05.2012 18:04
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Очень сложно ты это все делаешь. Смотри:
.model small ; Модель памяти |
marwell |
22.05.2012 18:16
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Очень сложно ты это все делаешь. Смотри: .model small ; Модель памяти спасибо большое! а вообще сама идея того как я пытался сделать, она верная? |
IUnknown |
22.05.2012 20:06
Сообщение
#4
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата а вообще сама идея того как я пытался сделать, она верная? Не совсем.Цитата mov ax, result |
TarasBer |
23.05.2012 11:59
Сообщение
#5
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
А разве нет готовой команды для определения кол-ва битов? Что-то из серии bsf, bsr
-------------------- |
IUnknown |
23.05.2012 12:26
Сообщение
#6
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
BSF/BSR просто находят первый установленный бит (слева или справа, соответственно). Можно, конечно, заморочиться с этими командами, и сдвигать AX не на 1 бит каждый раз, а если есть несколько подряд идущих нулей - пропускать их сразу. Если у тебя число типа 1000011 - выиграешь несколько тактов (может быть. А может и проиграешь).
|
marwell |
23.05.2012 17:41
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Не совсем. Сравниваешь AX с 1? А почему там должна быть 1-ца, если, скажем, BX = 00010000b. Сравнивать надо с 0, и если AX != 0 - значит, тот бит AX, в котором сейчас в BX находится 1-ца, тоже выставлен в 1. А если AX = 0 - значит, соответствующий бит сброшен. Понимаешь логику? теперь да, понимаю. Спасибо Примерно то же и я имел ввиду |
Текстовая версия | 1.11.2024 7:32 |