Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
flatra
0 / 0 / 1
Регистрация: 03.11.2012
Сообщений: 367
1

Проверка числа на четность

07.04.2015, 12:11. Просмотров 2127. Ответов 9
Метки нет (Все метки)

почему у меня не переходит по метке четности тоесть Evenn?у меня он идет линейно. В чем может быть оишбка?
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
X dw 5429h
Y dw 7844h
Z dw 0AD43h
Q dw 5622h
L dw 0h
M dw 0h
R dw 0h
.code   *
main:   
    mov ax,@data    
    mov ds,ax   
    xor ax,ax   
;...
mov bx,0h
mov cx,4h
one:
mov ax, [bx]
add ax,1h
mov [bx],ax
add bx,2h
add L,ax
loop one
mov ax, L
mov bx,X
and ax,X
mov dx,ax
mov ax,L
and ax,Y
sub dx,ax
mov M,dx
call adddiv;вызов процедуры
jmp STe
jmp exit
adddiv:
mov AX, 921Bh
cmp M,AX
JNe MRe
jmp BRe
MRe:
mov BX, 12B9h
mov dx,0h
mov ax,M
mov cx,2h
idiv cx
sub ax,BX
mov R,ax
ret
BRe:
mov ax,Q
mov cx,2h
div cx
mov dx,ax
mov ax,M
sub ax,dx
mov R,ax
STe:
test  ax,R
jnp Odd    ;нечетное, переход на метку Odd
jp Evenn   ;четное, переход на метку Even
Odd:
mov ax, R
sub R,1
mov ax,R
Evenn:
mov ax,R
or R,009Fh
mov ax,R
ret
exit:
Добавлено через 38 секунд
считал все на калькуляторе проверял число четное
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2015, 12:11
Ответы с готовыми решениями:

Проверка на четность числа
Доброго времени суток. Нужно написать проверку числа на четность Что делаю не так? Всегда пишет,...

Проверка на четность числа
Здраствуйте. Только начал изучать асм и возник вопрос: как проверить число находящееся в регисте на...

Проверка числа на четность/нечетность
Здравствуйте. У меня возникла небольшая проблема с кодом. Задача следующая: Перемножить три...

проверка на четность и знак
если ли в асм стандартно как проверить на четность и знак ?

Проверка на четность первых 15-ти однобайтовых чисел
Добрый вечер форумчане. Я студент заочник блаблабла... задали задание по ассемблеру, познакомился с...

9
Mikl___
Автор FAQ
14544 / 6689 / 702
Регистрация: 11.11.2010
Сообщений: 12,027
07.04.2015, 12:43 2
flatra,
jp/jnp переход если числ единиц в регистре AL четное, то есть AL=011001012=10110 - число нечетное, но переход будет, на четность проверяется есть ли единица в последнем разряде, то есть так
Assembler
1
2
test X,1
jnz X_нечетное_число
0
flatra
0 / 0 / 1
Регистрация: 03.11.2012
Сообщений: 367
07.04.2015, 12:49  [ТС] 3
Мне надо проверить значение R тоесть будет так
Assembler
1
2
3
test X,1
jnz X
jz ?
0
Mikl___
Автор FAQ
14544 / 6689 / 702
Регистрация: 11.11.2010
Сообщений: 12,027
07.04.2015, 12:57 4
flatra,
Assembler
1
2
3
4
5
test X,1
jnz label
<-- если мы здесь, значит число X четное
...
label:<-- а если мы окажемся здесь, значит X нечетное
0
07.04.2015, 12:57
flatra
0 / 0 / 1
Регистрация: 03.11.2012
Сообщений: 367
07.04.2015, 13:11  [ТС] 5
Assembler
1
2
3
4
5
6
7
8
9
10
test R,1
jnz label1    
mov ax, R
sub R,1
mov ax,R
label1:
mov ax,R
or R,009Fh
mov ax,R
ret
все точно так же линейно идет
0
Mikl___
Автор FAQ
14544 / 6689 / 702
Регистрация: 11.11.2010
Сообщений: 12,027
07.04.2015, 13:22 6
flatra, перед label нужен jmp на общую часть программы иначе ты сперва обрабатываешь число как нечетное, а затем как четное, как выглядит задание для твоей программы на человеческом языке?
0
flatra
0 / 0 / 1
Регистрация: 03.11.2012
Сообщений: 367
07.04.2015, 13:33  [ТС] 7
получили значение R
Если R четное,
то переход к АДР1
(R or 009F)
иначе переход к АДР2
(R-1)

Добавлено через 4 минуты
Дано: X=5429 Y=7844 Z=AD43 Q=5622
(расположены в памяти один за другим без знака)
В цикле каждое из X, Y, Z, Q увеличить на единицу и все сложить
(результат X', Y', Z', Q' и L)
Вычислить
M=(L & X')-(L & Y')
M>=921B переход к п/п 1
(R=M/2-12B9)
M<921B переход к п/п 2
(R=M-Q'/2)
и потом на четность

Добавлено через 28 секунд
до четности все правильно написано
0
Mikl___
Автор FAQ
14544 / 6689 / 702
Регистрация: 11.11.2010
Сообщений: 12,027
07.04.2015, 13:42 8
Код
'
M=(L & X')-(L & Y')
cmp M,921B
jae label1
R=M-Q'/2
'
jmp проверка_на_четность
label1: R=M/2-12B9
проверка_на_четность:
test X,1
jnz label2
что-то делаем с четным Х
jmp exit
label2: что-то делаем с нечетным Х
exit:
0
flatra
0 / 0 / 1
Регистрация: 03.11.2012
Сообщений: 367
08.04.2015, 08:40  [ТС] 9
label1: R=M/2-12B9 я же это значение R рассчитывал на метке MRe:

Добавлено через 10 минут
проверьте правильно ли сейчас написал
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
 call adddiv;вызов процедуры
adddiv:
mov AX, 921Bh
cmp M,AX
jae label1
mov ax,Q
mov cx,2h
div cx
mov dx,ax
mov ax,M
sub ax,dx
mov R,ax
label1:
mov BX, 12B9h
mov dx,0h
mov ax,M
mov cx,2h
idiv cx
sub ax,BX
mov R,ax
STe:
test R,1
jnz label2
mov ax,R
or R,009Fh
mov ax,R
jmp exit
label2:   
mov ax, R
sub R,1
mov ax,R
exit:
Добавлено через 5 минут
21 строчку я удалил, перед 13 стрчокой дописал jmp label1

Добавлено через 18 часов 34 минуты
почему у меня циклится в строке div cx;
Assembler
1
2
3
4
5
6
7
8
jae label1; переход, если больше или равно
mov ax,Q;
mov cx,2h;
div cx;
mov dx,ax;
mov ax,M;
sub ax,dx
mov R,ax
0
Mikl___
Автор FAQ
14544 / 6689 / 702
Регистрация: 11.11.2010
Сообщений: 12,027
08.04.2015, 08:55 10
на два нужно вот так делить shr Q,1
0
08.04.2015, 08:55
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2015, 08:55

Проверка Деления на два (Четность Чисел)
Задача: &quot;Найти в массиве чисел суммы элементов, индексы которых четны и нечетны и вывести эти суммы...

Четность числа и ненормальное программирование
Мог бы кто-нибудь написать программу на ассемблере, которая выясняет, четное-ли число. Условие:...

Условные операторы: определить четность/нечетность цифр в записи произвольного двузначного числа
Помогите, пожалуйста. Определить четные или нечетные цифры в записи произвольного двузначного...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.