Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

задача с побитовой обработкой

22K
14 октября 2009 года
FloyDos
81 / / 14.08.2009
Дан массив из 9 байт. Рассматривая его как массив из 72 бит, посчитать число переходов между нулями и единицами

вот массив например:

mass db 1h,2h,3h,4h,5h,6h,7h,8h,9h

КОД:
Код:
code segment
.386
assume cs:code,ds:data
begin:
    mov ax, data
    mov ds, ax
    ;mov cx,4
    xor ax,ax
    xor si,si
    xor bh,bh
    xor bl,bl
    mov cx, 9
    P:
    mov fff, cx
        mov al, mass[si] ;take 8 bit
        mov cx,8
        mov dl,8
        O:
        push ax
            push cx        
                    dec dl
                    mov cl, dl
                    shr al, cl
                    and al, 00000001B
                    xor bl, al
                    add bh,bl
                    mov bl, al
            pop cx
        pop ax
        loop O
        inc si     
    mov cx, word ptr fff
    loop P

    ; перевод в 16 систему - можете не обращать внимания,работает 100%, это проверено

    mov cx,4
    mov bl,12
    mov si,0
    xor ax,ax
    mov ax,bh
    k1:
        push ax
        push cx
            mov cl,bl
            shr ax,cl
        pop cx
        and ax,000fh
   
        cmp al,9
        ja m4
            add al,30h
        jmp a3
        m4: add al,37h
        a3:mov byte ptr digit+[si],al  
        sub bl,4
        inc si
        pop ax
    loop k1
   
    mov ax, data
    mov ds, ax
    mov dx, offset digit
    mov ah, 09h
    int 21h
   
    mov ah, 4ch
    mov al,0
    int 21h
code ends
data segment use16
    mass db 1h,2h,3h,4h,5h,6h,7h,8h,9h
    digit  db 0,0,0,0,'h$'
    ggg db '1$'
        fff db 0
data ends
stk segment stack
db 256 dup(0)
stk ends
end begin


Судя по всему, идет ошибка в подсчете. Может кто свежим взглядом найдет? :)
297
14 октября 2009 года
koodeer
1.2K / / 02.05.2009
Возможно, проблема в этом:
Код:
...
        inc si     
    mov cx, [color=red]word[/color] ptr fff
    loop P
    ...


data segment use16
    ...
        fff [color=red]db[/color] 0
data ends
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог