Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2015, 15:32   #1
artem55555p
Пользователь
 
Регистрация: 21.08.2013
Сообщений: 21
По умолчанию Не работает цикл на ассемблере

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

Почему программа работает правильно только при просмотре первого байта? Помогите разобраться...

Код:
data segment 
tick1 dw ?
tick2 dw ?
mass db 10101010b,11111111b,010000000b
data ends
code segment 
assume cs:code,ds : data
start:       
       mov ax,data
       mov ds,ax
       mov dx,2
       mov tick1,dx
       lea bx, mass
       mov cx, 3
beg:   mov al,[bx]
      
M3:    
       test al,00000001b ; проверяем установлен ли 0-й бит
       jnz M1 ; если нет то к М1
       inc tick1  ;да увеличиваем счетчик для 0
       shr al,1 ;сдвигаем биты
       inc tick2; увеличиваем счетчик битов
       cmp tick2,8 ;если он равен 8-ми загружаем след байт
       je m4
       jmp M3
M1:    cmp tick1,1 ; 
       jne M2 ; если счетчик не подходит то к М2
       mov tick1,0 ;подходит обнуляем его
       inc si ; увеличиваем счетчик совпадений 010
M2:    mov tick1,0
       shr al,1
       inc tick2
       cmp tick2,8
       je m4
      jmp M3
M4:   mov tick2,0
add bx,1
 
loop beg 
 
     mov ax,4c00h
       int 21h
  code ends
  end start
если можно, с комментариями, чтобы разобраться потом...

Последний раз редактировалось Аватар; 07.11.2015 в 15:35.
artem55555p вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл на Ассемблере maryyfmd Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 12.06.2012 17:00
Не работает команда в программе на ассемблере sunny_alice Помощь студентам 4 11.05.2011 20:25
Задача в ассемблере. Цикл Novi_ Помощь студентам 1 07.01.2011 15:30
цикл на ассемблере Doink Помощь студентам 3 30.05.2010 13:07
Цикл на ассемблере ManU Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 02.12.2009 22:47