Подсчитать количество единиц в двоичной записи числа - Assembler

Узнай цену своей работы

Формулировка задачи:

здравствуйте. подскажите пожалуйста, в чем ошибка? вот программа, которая подсчитывает количество единиц в двоичной записи числа
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 . Что не так?

Решение задачи: «Подсчитать количество единиц в двоичной записи числа»

textual
Листинг программы
;***************************************************************************;
;                          CountUnitsInNumber                               ;
;***************************************************************************;
;                                                                           ;
; Description:                                                              ;
;  The program, which counts the number of units in number.                 ;
;                                                                           ;
; Target OS:                                                                ;
;  MS-DOS (or in DOSBox, or else where).                                    ;
;                                                                           ;
; The code is written by XiloManX.                                          ;
; Created specially for [url]http://www.cyberforum.ru[/url].                ;
; Compile with FASM.                                                        ;
;                                                                           ;
; Rights of copying: is free.                                               ;
;                                                                           ;
;***************************************************************************;
 
;***************************************************************************;
;     *** HEAD AREA ***                                                     ;
;***************************************************************************;
 
    use16
    org  100h
 
;***************************************************************************;
;     *** CODE AREA ***                                                     ;
;***************************************************************************;
 
START:
        mov ax, 1101b
 
        xor dx, dx    
        mov cx, 16
cycle:
        rol ax, 1
        jnc zero
        inc dx
zero:
        dec cx
        jnz cycle
 
        ; Complete the program.
        mov  ah, 4ch
        int  21h
 
;***************************************************************************;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.375 из 5
Похожие ответы