Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Найти количество нулей в заданном массиве 6 байт


Автор: melie 22.2.2011, 08:50
Приветик Всем!!!
Ребята, помогите кто-нибудь решить задачку, а то сколько не пыталась - ничего не получается, а зачет нужен)))
Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нём количество нулей.
Очень признательна заранее!!! smile 

Автор: 500mhz 22.2.2011, 12:32
нулей всмысле байт или нулей в смысле бит?

Автор: iff 22.2.2011, 13:30
500mhz,
Цитата

Рассматривая его, как массив из 48 бит

------------

Готов выполнить

Автор: Игорь1024 22.2.2011, 13:31
Может как-то так...
Код

org 100h

mov cx, 6
mov si, out_r
loop count
ret
count:
      lodsb
      xchg ah, al
      mov si, 8
      loop byte_h
      mov cx, word[index]
      dec [index]
      ret

byte_h:
        bt  ax, 0
        shl ax, 1
        jnc inc_r
        ret
inc_r:
        inc [out_r]
        ret


inp   db 6 dup(0)
out_r db 0
index db 6


Добавлено через 8 минут и 4 секунды
Хотя что-то с ret'ами намудрил.

Автор: 500mhz 22.2.2011, 14:50
Код

format PE
include 'win32axp.inc'
start:

        stdcall Calc,table
        invoke ExitProcess,0

proc Calc,var
        xor ebx,ebx
        mov esi,[var]
        mov ecx,0x6
.main:
        push ecx
        mov ecx,8
        lodsb
.one:
        bt eax,0
        jnc .zero
        shr eax,1
        loop .one
        jmp .next
.zero:
        inc ebx
        shr eax,1
        loop .one
.next:
        pop ecx
        loop .main
        ret
endp



table:
        db 0x34,0x5,0xf8,0xd1,0x98,0x1


.end start                                  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)