Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
#1

Дан массив из 9 байт. Рассматривая его как массив из 72 бит, посчитать число переходов между нулями и единицам

31.10.2015, 13:46. Просмотров 293. Ответов 3
Метки нет (Все метки)

Дан массив из 9 байт. Рассматривая его как массив из 72 бит, посчитать число переходов между нулями и единицами.

я вот пытался сделать:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
xor ax,ax
 xor dx,dx
 xor bx,bx
 mov cx,8
 
 mov si,a
for1:
 push cx
 mov al,[si]
 mov ah,al
 shr ah,1
 xor al,ah
  cmp al,1
   jne next1
   inc bx
  next1:
 
 mov cx,7
 for:
  cmp al,1
  jz next
  inc bx
  next:
  shr al,1
 loop for
 pop cx
 inc si
loop for1
но все равно не то, можете объяснить в чем дело, ну или свой вариант предложите....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2015, 13:46
Ответы с готовыми решениями:

ХЕЛП! Дан массив из 3 байт. Рассматривая его, как массив из 24 бит, посчитать ко
"Дан массив из 3 байт. Рассматривая его, как массив из 24 бит, посчитать...

Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество единиц
кто может, напишите пожалуйста, с ассемблером беда( 2. Дан массив из 8 байт....

Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нем количество нулей.
Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нем...

Дан массив из 9 байт. Рассматривая его как массив из 72 бит, посчитать число переходов между нулями и единицами.
Ребят, помогите пожалуйста! осталось одну прогу сделать для зачета, не...

Дан массив из 9 байт. Рассматривая его как массив из 72 бит, посчитать число нулей в этом массиве
Код для задания -Дан массив из 9 байт. Рассматривая его как массив из 72 бит,...

3
Hadros
36 / 36 / 17
Регистрация: 12.04.2012
Сообщений: 160
01.11.2015, 01:37 #2
Не проверял

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
        // RDX - адрес начала массива
        // RCX - временный, хранит номер бита от 0 до 71
        // RAX - результат
        XOR     RAX,RAX
        XOR     RCX,RCX
        BT      [RDX],RCX     // проверяется нулевой бит массива
        JC      @loop1        // если установлен, то цикл поиска нуля
  @loop0:                     // цикл поиска еденички
        INC     RCX
        BT      [RDX],RCX
        JC      @change0to1
        CMP     RCX,71
        JB      @loop0
        JMP     @finish
  @loop1:                     // цикл поиска нуля
        INC     RCX
        BT      [RDX],RCX
        JNC     @change1to0
        CMP     RCX,71
        JB      @loop1
        JMP     @finish
  @change0to1:
        INC     RAX           // счётчик переходов
        JMP     @loop1
  @change1to0:
        INC     RAX           // счётчик переходов
        JMP     @loop0
  @finish:
Добавлено через 19 минут
Вот так ещё можно. На один JMP меньше.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        // RDX - адрес начала массива
        // RCX - временный, хранит номер бита от 0 до 71
        // RAX - результат
        XOR     RAX,RAX
        XOR     RCX,RCX
        BT      [RDX],RCX     // проверяется нулевой бит массива
        JC      @is1          // если установлен, то цикл поиска нуля
  @is0:
        INC     RAX           // счётчик переходов
  @is0_seek1:                 // цикл поиска еденички
        INC     RCX
        BT      [RDX],RCX
        JC      @is1
        CMP     RCX,71
        JB      @is0_seek1
        JMP     @finish
  @is1:
        INC     RAX           // счётчик переходов
  @is1_seek0:                 // цикл поиска нуля
        INC     RCX
        BT      [RDX],RCX
        JNC     @is0
        CMP     RCX,71
        JB      @is1_seek0
  @finish:
        DEC     RAX           // корректировка счётчика
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
01.11.2015, 19:31  [ТС] #3
не, не работает так( может по другому как-то?

Комментарий администратора TaatshiЗагружайте изображения и файлы на форум и прикрепляйте к сообщению.
Обновленная Памятка «Как работать в редакторе сообщений»
0
Mikl___
Автор FAQ
11736 / 6047 / 544
Регистрация: 11.11.2010
Сообщений: 11,029
02.11.2015, 03:11 #4
artem55555p,
используй кнопку "Поиск"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2015, 03:11

Дано масив из 6 байт. Рассматривая его, как масив с 48 бит, посчитать число 2х единиц, что расположены между нулями.
Ребят, помогите пожалуйста! не получается... Дано массив из 6 байт....

Дан массив из 9 байт расматривая его как массив 72 бит подсчитать число нулей в этом массиве.
Уважаемые форумчане мне очень нужна ваша помощь я обращаюсь к вам в первые по...

Рассматривая 9-ти байтовый массив, как массив из 72 бит, посчитать количество нулей в окружении единиц
Дан массив из 9 байт. Рассматривая его, как массив из 72 бит, посчитать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru