0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 14
1
TASM

Подсчитать количество нулей и единиц в двоичной записи элементов массива

24.03.2012, 19:07. Показов 1514. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста объединить две программы, в одну. Точнее заменить какую-то часть программы. Сам сделать не могу т.к. не понимаю.

Вот первая. Тут программа считает единицы.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
data segment 
mass db 11111111b,00101111b,00101111b,00101111b,00101111b
data ends
code segment                                     ; кодовый семент
assume cs:code,ds:data                         
start:                                         
mov ax,data                                      ; загрузка данных в ax
mov ds,ax                                        ; ax в сегмент данных
xor dx,dx                                        ; обнуление dx
mov cx,5                                         ; количество байтов в массиве
lea bx,mass                                      ; андресация первого элемента
Cicl1: push cx                                   ; перемещение в стек
mov cx,8                                         ; количество битов в байте
Cicl2: ror byte ptr [bx],1                       ; сдвиг на 1 бит вправо
adc dx,0                                         ; если был перенос увеличим bX на 1
loop Cicl2                                       ; Возвращение на метку c2, счетчик
inc bx                                           ; перешли к следующему байту
pop cx                                           ; извлечение байта из стека
loop Cicl1                                       ; Возвращение на метку c1, счетчик
mov ax,dx                                        ; dx переносим в ax
mov dl,10
div dl
mov dx,ax                                        ; ax переносим в dx
or dx,3030h                                      ; ввод по координатам
mov ah,2
int 21h                                          ; прерывание
mov dl,dh                                        ; dh в dl
int 21h                                          ; прерывание
mov ah,10h                                       ; считывает символ из  
int 16h                                          ; буфера
mov ax,4c00h                                     ; выход из программы
int 21h                                          ; прерывание
code ends
end start
А вот вторая. Она посчитывает количество нулей, в двойном слове.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
org     100h
        mov     ebx,[dat]
        mov     cx,32
        xor     ax,ax
@@1:    rcl     ebx,1
        sbb     al,0
        loop    @@1
        add     ax,32   ; в ax - кол-во нулевых битов.
;       ....
        int     20h
 
dat     dd      11111111h
Мне нужно чтобы вторая программа заработала. И подсчитывала количество нулей в двойном слове. А не единицы. Короче чтобы 2 программа работала. И желательно чтобы не выводила ответ в отдельном экране.

P.S. Буду очень благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2012, 19:07
Ответы с готовыми решениями:

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

В двоичной записи десятичного числа подсчитать количество единиц
В двоичной записи десятичного числа подсчитать количество единиц. Входной файл содержит одно...

Подсчитать количество единиц в записи данного числа в двоичной системе
дано натуральное число n. подсчитать количество единиц в записи данного числа в двоичной системе

Определить чего больше в двоичной записи произвольного числа: единиц или нулей?
Друзья, помогите пожалуйста. Есть код программки, которая считает количество нулей в двоичной...

3
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
26.03.2012, 03:39 2
DoubleDan, а подумать никак? Программа определяет единицы в массиве из пяти байт, в одном байте 8 битов, итого 5*8=40 битов, если мы обнаружили в этом массиве 30 единиц, то в массиве, соответственно, 40-30=10 нулей
0
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 14
27.03.2012, 15:26  [ТС] 3
Никак, я же написал что не понимаю. А если не понимаешь, то и думать нечего.

Добавлено через 19 секунд
Ты бы не мог мне помочь?
0
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 14
28.03.2012, 15:21  [ТС] 4
Спасибо.
0
28.03.2012, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2012, 15:21
Помогаю со студенческими работами здесь

В строке, состоящей из групп нулей и единиц, подсчитать количество единиц в группах с нечетным количеством
В строке состоящей из групп нулей и единиц ,подсчитать количество единиц в группах с нечетным...

Дана строка, состоящая из групп нулей и единиц. Подсчитать количество единиц в группах с нечетным количеством
Дана строка, состоящая из групп нулей и единиц. Подсчитать количество единиц в группах с нечетным...

В строке, состоящей из групп нулей и единиц, подсчитать количество единиц в группах с нечетным количеством символов
Я сделал эту задач,ну попросили теперь сделать заменить все cout через puts,я попытался но у меня...

В строке, состоящей из групп нулей и единиц, подсчитать количество единиц в группах с нечетным количеством символов.
В строке, состоящей из групп нулей и единиц, подсчитать количество единиц в группах с нечетным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru