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

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

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

Помогите, пожалуйста.
Определить четные или нечетные цифры в записи произвольного двузначного числа. Ответ сообщение: цифра числа и его квалификация на четность.
Число заданно в программе, без ввода.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2016, 15:13
Ответы с готовыми решениями:

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

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

Ввести четырехзначное число и проверить четность/нечетность
Ребят, помогите как можно скорее, умоляю! 3 лекции по этому чУдному языку провели нам, никто и...

Вывести число полученное при перестановке цифр исходного двузначного числа
дано двузначное число вывести число полученное при перестановке цифр исходного числа assembler

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

13
Ol44
704 / 85 / 15
Регистрация: 10.07.2016
Сообщений: 146
19.11.2016, 16:22 2
Проверяй нулевой бит или сдвигай вправо на 1 и по флагу С понятно четное или нет.
1
Vitakik
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 9
19.11.2016, 18:39  [ТС] 3
А можешь написать, как это сделать. А то я ассемблер только начинаю учить.
0
Jin X
5286 / 1454 / 168
Регистрация: 14.12.2014
Сообщений: 2,807
Записей в блоге: 11
Завершенные тесты: 3
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
20.11.2016, 00:04
Vitakik
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 9
20.11.2016, 20:49  [ТС] 5
Спасибо, но в задании имелось в ввиду, определить четная или не четная цифра двухзначного числа, то есть получить каким то образом первую или вторую цифру числа и определить является ли она четной
0
Ol44
704 / 85 / 15
Регистрация: 10.07.2016
Сообщений: 146
20.11.2016, 21:19 6
Значит если в al двузначное число, делаем AAM, а далее проверяем нулевой бит shr al,1 результат во флаге C.
1
Vitakik
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 9
20.11.2016, 22:24  [ТС] 7
А можно пример, а то это пока мне сложно понять
0
Jin X
5286 / 1454 / 168
Регистрация: 14.12.2014
Сообщений: 2,807
Записей в блоге: 11
Завершенные тесты: 3
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
Vitakik
0 / 0 / 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
Jin X
5286 / 1454 / 168
Регистрация: 14.12.2014
Сообщений: 2,807
Записей в блоге: 11
Завершенные тесты: 3
20.11.2016, 22:34 10
Конечно, потому что в 14-й строке затирается al, который через aam вычислился!!!

Добавлено через 51 секунду
В 12-й напишите mov al,num, а 14-ю в утиль.
1
Vitakik
0 / 0 / 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
0
proc3nt
волшебник
952 / 523 / 158
Регистрация: 26.05.2012
Сообщений: 1,477
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
Jin X
5286 / 1454 / 168
Регистрация: 14.12.2014
Сообщений: 2,807
Записей в блоге: 11
Завершенные тесты: 3
20.11.2016, 22:59 13
Ага
А если делаешь shr, тогда jnc isChet, jc NeChet.
1
proc3nt
волшебник
952 / 523 / 158
Регистрация: 26.05.2012
Сообщений: 1,477
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2016, 23:02

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

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

Два числа. Четность, нечетность
Даны два целых числа X, Y. Если каждое из этих чисел нечетное, то напечатать "Да", в противном...


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

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

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