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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2009, 08:52   #1
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
Вопрос Подсчет числа переходов между 0 и 1

Всем доброго дня... вот наткнулся на задачку:Дан массив из 9 байт. Рассматривая его как массив из 72 бит, посчитать число переходов между нулями и единицами. Сам массив такой:
.......
mass 1h,2h,3h,4h,5h,6h,7h,8h,9h
.......
как я понимаю что нужно использовать логические операции(test в основном) условные переходы и циклы. Понять понимаю, а сделать получается ерунда.... помогите =)))
Sonyalex90 вне форума Ответить с цитированием
Старый 14.10.2009, 13:36   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

выкладываете код посмотрим, а как с краевыми точками быть не рассматривать
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 14.10.2009, 17:07   #3
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
По умолчанию

в том то и дело что код не получается =(((

Код:
code segment
.386
assume cs: code, ds:data
begin:
mov ax, data
mov ds, ax

xor ax,ax
xor cx,cx
mov cx, 72
xor bx,bx
f:
push mass
push cx
dec cl
shr mass, cl
pop cx
and word ptr mass, 01h
xor bx, word ptr mass
add ax, bx
mov bx,word ptr mass
pop mass
loop f

;output:
mov cx,2
mov bl,8
xor si,si
push ax
k:
push ax
push cx
mov cl,bl
shr ax,cl
pop cx
and al,0fh
cmp al,9
ja m
add al,30h
jmp c
m: add al,37h
c:mov byte ptr digit+[si],al
sub bl,4
inc si
pop ax
loop k

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,'h$'
data ends
stk segment stack
db 256 dup(0)
stk ends
end begin
но не работает

Последний раз редактировалось rpy3uH; 25.10.2009 в 16:54.
Sonyalex90 вне форума Ответить с цитированием
Старый 24.10.2009, 21:20   #4
ASSEMBLER
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 27
По умолчанию

Вот набросал наскоро, это часть кода подсчитывающая количество инверсий, на входе mass-указатель на массив из байт, на выходе количество переходов в слове invers_count

Код:
mov cx,9
	mov ax,byte ptr [mass+cx-1]
	and ax,1
	mov bx,ax
next_byte:
	mov dx,cx
	push cx
	mov cx,8
	cmp word ptr sp,1
	jne not_last_byte
	dec cx
not_last_byte:
	mov ax,byte ptr [mass+dx-1]
next_bit:
	mov dx,ax
	and dx,1
	cmp dx,bx
	je no_change
	mov bx,dx
	inc word ptr invers_count
no_change:
	shr ax
	loop next_bit
	pop cx
	loop next_byte
Программы на заказ Delphi, Pascal, С++, Assembler e-mail: greatrock@mail.ru
<--Если я вам помог не забываем жать на весы
ASSEMBLER вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как числа в двоичном виде вывести в столбик по 4 числа? Equalizer Общие вопросы C/C++ 11 27.09.2009 14:15
Шашечная доска и стоимость переходов Viaceslav1987 Общие вопросы C/C++ 0 29.04.2009 10:19
Счётчик переходов по ссылке boro-da HTML и CSS 1 31.03.2009 11:14
Не могу сделать несколько переходов на своем сайте fanny Помощь студентам 4 26.09.2008 18:13
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49