С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 19.11.2016
Сообщений: 9
1

Условные операторы: определить четность/нечетность цифр в записи произвольного двузначного числа

19.11.2016, 15:13. Показов 3247. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста.
Определить четные или нечетные цифры в записи произвольного двузначного числа. Ответ сообщение: цифра числа и его квалификация на четность.
Число заданно в программе, без ввода.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2016, 15:13
Ответы с готовыми решениями:

Определить четность/нечетность каждой цифры 3-значного числа
Пример: 246 (2-четная, 4-четная, 6-четная); 26 ( не трехзначное число )

Если цифры двузначного числа различны - то проверить их на чётность, иначе найти удвоенную сумму цифр
Дано двузначное число. Выяснить,различны ли его цифры. Если да,то проверить их на чётность, иначе...

Условные операторы: определить произведение цифр двух заданных чисел
Даны двa числа a, b. Определить произведение их цифр и вывести сообщение. 1. a=46, b=78 2....

Определить сумму и произведение цифр, число, образованное перестановкой цифр для двузначного числа
записать программу,которая для произвольного двузначного числа определяет 1) сумму и произведение...

13
197 / 89 / 15
Регистрация: 10.07.2016
Сообщений: 146
19.11.2016, 16:22 2
Проверяй нулевой бит или сдвигай вправо на 1 и по флагу С понятно четное или нет.
1
1 / 1 / 0
Регистрация: 19.11.2016
Сообщений: 9
19.11.2016, 18:39  [ТС] 3
А можешь написать, как это сделать. А то я ассемблер только начинаю учить.
0
Asm/C++/Delphi/Py/PHP/VBA
6750 / 1997 / 231
Регистрация: 14.12.2014
Сообщений: 4,200
Записей в блоге: 12
20.11.2016, 00:04 4
Assembler
1
2
3
4
mov al,Число
test al,1  ; значение al сохраняется
jz Чётное
jnz Нечётное
Assembler
1
2
3
4
mov al,Число
shr al,1  ; значение al портится (делится на 2)
jnc Чётное
jc Нечётное
1
1 / 1 / 0
Регистрация: 19.11.2016
Сообщений: 9
20.11.2016, 20:49  [ТС] 5
Спасибо, но в задании имелось в ввиду, определить четная или не четная цифра двухзначного числа, то есть получить каким то образом первую или вторую цифру числа и определить является ли она четной
0
197 / 89 / 15
Регистрация: 10.07.2016
Сообщений: 146
20.11.2016, 21:19 6
Значит если в al двузначное число, делаем AAM, а далее проверяем нулевой бит shr al,1 результат во флаге C.
1
1 / 1 / 0
Регистрация: 19.11.2016
Сообщений: 9
20.11.2016, 22:24  [ТС] 7
А можно пример, а то это пока мне сложно понять
0
Asm/C++/Delphi/Py/PHP/VBA
6750 / 1997 / 231
Регистрация: 14.12.2014
Сообщений: 4,200
Записей в блоге: 12
20.11.2016, 22:27 8
Лучший ответ Сообщение было отмечено Vitakik как решение

Решение

То, что написал Ol44, но на примере:
Assembler
1
2
3
4
5
mov al,56
aam  ; ah=первая цифра (десятки, т.е. 5), al=вторая цифра (единицы, т.е. 6)
test al,1  ; проверяем вторую цифру (6)... если нужна первая цифра, меняем al на ah: test ah,1
jz Чётное
jnz Нечётное
Добавлено через 1 минуту
Или через shr, как описано выше.
1
1 / 1 / 0
Регистрация: 19.11.2016
Сообщений: 9
20.11.2016, 22:30  [ТС] 9
У меня все время выдает, что цифра четная
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
.model small
.8086
 
.data
yes db 'yes',13,10,'$'
no db 'no$',13,10,'$'
num db 5 
.stack 256
 
.code 
start:  
mov al,56
aam
mov al,num
shr  al,1  ; значение al сохраняется
jnz NoChet
jz isChet
 
NoChet:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset no 
int 21h
jmp exit
 
isChet:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset yes 
int 21h
 
 
exit: 
mov ah,4Ch
mov al,00h
int 21h   
end start
0
Asm/C++/Delphi/Py/PHP/VBA
6750 / 1997 / 231
Регистрация: 14.12.2014
Сообщений: 4,200
Записей в блоге: 12
20.11.2016, 22:34 10
Конечно, потому что в 14-й строке затирается al, который через aam вычислился!!!

Добавлено через 51 секунду
В 12-й напишите mov al,num, а 14-ю в утиль.
1
1 / 1 / 0
Регистрация: 19.11.2016
Сообщений: 9
20.11.2016, 22:37  [ТС] 11
все равно тоже самое
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
.model small
.8086
 
.data
yes db 'yes',13,10,'$'
no db 'no$',13,10,'$'
num db 8 
.stack 256
 
.code 
start:  
mov al,num
aam
shr  al,1  
jnz NoChet
jz isChet
 
NoChet:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset no 
int 21h
jmp exit
 
isChet:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset yes 
int 21h
 
 
exit: 
mov ah,4Ch
mov al,00h
int 21h   
end start
1
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
20.11.2016, 22:55 12
Цитата Сообщение от Vitakik Посмотреть сообщение
shr al,1 ; значение al сохраняется
как такое может быть? может тебе это приснилось, что значение al сохраняется!? скажу тебе по секрету, что должно быть
Assembler
1
test al,1
Добавлено через 4 минуты
Цитата Сообщение от Vitakik Посмотреть сообщение
NoChet:
mov ax,@data
mov ds,ax
Цитата Сообщение от Vitakik Посмотреть сообщение
isChet:
mov ax,@data
mov ds,ax
инициализировать сегмент данных достаточно один раз в начале
Assembler
1
2
3
start: 
mov ax,@data
mov ds,ax
1
Asm/C++/Delphi/Py/PHP/VBA
6750 / 1997 / 231
Регистрация: 14.12.2014
Сообщений: 4,200
Записей в блоге: 12
20.11.2016, 22:59 13
Ага
А если делаешь shr, тогда jnc isChet, jc NeChet.
1
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
20.11.2016, 23:02 14
ну и в целом как-то так
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
.model small
.8086
 
.data
yes db 13,10,'yes',13,10,'$'
no db 13,10,'no',13,10,'$'
num db 8
 
.stack 256
 
.code 
start: 
mov ax,@data
mov ds,ax
 
mov al,num
 
aam
 
test al,1  
jnz NoChet
jz IsChet
 
NoChet:
mov ah,9
mov dx,offset no 
int 21h
 
jmp exit
 
IsChet:
mov ah,9
mov dx,offset yes 
int 21h
 
exit: 
mov ah,4Ch
mov al,00h
int 21h   
end start
Добавлено через 1 минуту
Цитата Сообщение от Jin X Посмотреть сообщение
А если делаешь shr, тогда jnc isChet, jc NeChet
тоже верно как ни крути
0
20.11.2016, 23:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2016, 23:02
Помогаю со студенческими работами здесь

Определить для целого числа его четность и нечетность, для дробного - целую часть
Написать программу, которая для введенного числа определяет для целого числа его четность и...

Массив: Создать массив при помощи цикла, а затем определить четность и нечетность каждого числа.
Всем привет. Как реализовать такое - надо создать массив при помощи цикла, а затем определить...

Проверка числа на чётность/нечётность
Подскажите пожалуйста молодому-неопытному как проверить в С++ чётное число или нечётное? Есть...

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


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

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