| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Помогите написать программу |
| Автор: Vinchenso 28.1.2010, 11:13 |
| Здравствуйте. Помогите мне пожалуйста написать программу для процессора Intel80х86 для определения количества двоичных разрядов (битов), имеющих значение "0" в массиве ячеек с адресами 0F0H-0FFH сегмента данных. |
| Автор: airyashov 28.1.2010, 15:53 |
| в чем конкретно трудности перебирать биты или байты (слова, двойные слова) |
| Автор: MOKACO 28.1.2010, 18:40 |
| хм |
| Автор: Vinchenso 28.1.2010, 18:56 |
| Ну если можно, то весь код программы. считать биты |
| Автор: iff 28.1.2010, 21:46 | ||
Не знаю, может быть я сделал через ****, но:
Проверил в debug. Работает. |
| Автор: Vinchenso 29.1.2010, 04:16 |
| iff, Спасибо тебе большое! |
| Автор: Mikl_ 29.1.2010, 04:58 | ||||
| iff, это скорее для вас, так как Vinchenso, скорее всего, сюда уже не заглянет
|
| Автор: Vinchenso 29.1.2010, 05:02 |
| Mikl_, почему же? Я здесь |
| Автор: iff 29.1.2010, 15:08 |
| Я понял. Вы в таблице ищите номер байта, совпадающего со значением проверяемого байта и по этой таблице узнаёте ко-во нулей. Но ведь эта "матрица" будет весит аж 256 байт! Более того нам ещё придётся вычислять эту таблицу, скорее всего нужно будет написать быстренько маленькую программу для вычисления значений таблицы, сделать это например можно на Бейсике (Я часто использую QB, но не для написания программ, а как "интерпретатор командной строки", когда к примеру, нужно выполнить рутинную работу). Возможно вы выиграете в скорости, но поскольку нам нужно проверить всего лишь 16 байт, то не на много. Я проверял, мой код исполняется мгновенно! |
| Автор: kjrjgsnjd 15.10.2012, 14:50 |
| Помогите откомпликтовать чтобы программа работала в winAsm Studuo |
| Автор: Maarriiaa 21.3.2014, 22:42 |
| здравствуйте. подскажите пожалуйста, в чем ошибка? вот программа, которая подсчитывает количество единиц в двоичной записи числа mov ax,1101 start: mov dx,1 mov cx,2 mrp: push ax and ax,1 cmp ax,1 ;сравниваем с 1 jne msk ;переходим к мск если два числа не равны inc dx ;увеличиваем содержимое памяти на 1 msk: pop ax shr ax,1 ; сдвигаем на 1 вправо loop mrp mov ax,1 int 0x80 но на выходе всегда 0 . Что не так? |