Подсчитать количество единиц в двоичной записи числа - Assembler
Формулировка задачи:
здравствуйте. подскажите пожалуйста, в чем ошибка?
вот программа, которая подсчитывает количество единиц в двоичной записи числа
но на выходе всегда 0 . Что не так?
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
Решение задачи: «Подсчитать количество единиц в двоичной записи числа»
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 ;***************************************************************************;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д