Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
1

проверка на четность и знак

23.04.2012, 20:39. Просмотров 7009. Ответов 39
Метки нет (Все метки)

если ли в асм стандартно как проверить на четность и знак ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2012, 20:39
Ответы с готовыми решениями:

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

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

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

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

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

39
Искандар
Заблокирован
23.04.2012, 20:56 2
На знак:
Assembler
1
 js metka ;если флаг знака установлен, то переход
На четность:
Assembler
1
2
test eax, 1 
Jz metka ;если число четное, то переход
0
Asper1
4 / 4 / 0
Регистрация: 23.04.2012
Сообщений: 18
23.04.2012, 21:05 3
Assembler
1
2
3
4
5
6
7
8
9
10
test eax, eax
jp .l1
js .l2
  ;some code
  jmp .end_test
.l1:
  ;some code
.l2:
  ;some code
.end_test:
Если надо одновременно, то
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
; In 32-bit mode
pushfd
pop eax
test eax, 0x84
jz   .no_sp
 
;some code
jmp .end_test
 
.no_sp:
;some code
 
.end_test:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
; In 16-bit mode
pushf
pop ax
test ax, 0x84
jz   .no_sp
 
;some code
jmp .end_test
 
.no_sp:
;some code
 
.end_test:
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 21:15  [ТС] 4
а с каким регистром работает примерчик можно небольшой например а ax храниться число как сделать это все

Добавлено через 38 секунд
мне через debug надо
0
23.04.2012, 21:15
Asper1
4 / 4 / 0
Регистрация: 23.04.2012
Сообщений: 18
23.04.2012, 21:20 5
Собственно этот код и проверяет значение в регистре eax на четность/знак.
Assembler
1
2
3
4
5
6
7
8
9
10
test eax, eax
jp .l1
js .l2
  ;some code
  jmp .end_test
.l1:
  ;some code
.l2:
  ;some code
.end_test:
Если работаете в 16-битном режиме, то меняете eax на ax и все.
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 21:26  [ТС] 6
а можно пояснения к коду
0
Asper1
4 / 4 / 0
Регистрация: 23.04.2012
Сообщений: 18
23.04.2012, 21:35 7
А что не понятно?

Assembler
1
2
3
4
5
6
test eax, eax ;выставляем флаги
jp .l1 ; Если число четное переход на l1
js .l2 ; Если число нечетное, но со знаком переход на l2
 ;some code
 ;Если обе проверки = false, выполняем код здесь
  jmp .end_test ; и переходим к окончанию теста
Если нужны другие значения условий, то соответствующим образом меняем jp -> jnp, js -> jns.
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 21:38  [ТС] 8
а если число четно и со знаком?
0
Asper1
4 / 4 / 0
Регистрация: 23.04.2012
Сообщений: 18
23.04.2012, 21:43 9
Тогда дописываем соответственно:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
test eax, eax ;выставляем флаги
jp .l1 ; Если число четное переход на l1
js .l2 ; Если число нечетное, но со знаком переход на l2
 ;some code
 ;Если обе проверки = false, выполняем код здесь
  jmp .end_test ; и переходим к окончанию теста
 
.l1:
  jns .end_test ; No sign, fail...
 
  ;Ok, that's what we need! Gonna do it...
  ;some code
  jmp .end_test
.l2:
  ;some code
.end_test:
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 21:46  [ТС] 10
все разобрался вот а как в debug сделать тоесть там нужно переход на адрес а не метку тоесть вперед на адрес который я еще не написал
0
Asper1
4 / 4 / 0
Регистрация: 23.04.2012
Сообщений: 18
23.04.2012, 21:58 11
Не понял вопроса. Можно тоже самое по русски, ну или in English? )
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 22:08  [ТС] 12
Asper1, тут в задании у меня написано Проверка на четность либо нечетность и знак (если числа со знаком) числа осуществлять с помощью логических побитовых команд.
0
vital792
2005 / 1277 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
23.04.2012, 22:11 13
sergeu90, проверяй первый(четность) и последний(знак) биты регистра
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 22:14  [ТС] 14
можно пример как это сделать в debug на примере регистра аx
0
Asper1
4 / 4 / 0
Регистрация: 23.04.2012
Сообщений: 18
23.04.2012, 22:19 15
Ну для начала давайте определимся что такое debug?
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 22:22  [ТС] 16
стандартный через сmd-debug
0
vital792
2005 / 1277 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
23.04.2012, 22:22 17
Assembler
1
2
3
4
5
mov ax, f122 ; некое число
test ax, 8000 ; проверка старшего бита
jz адрес1; не выставлен - число без знака
test ax, 1 ; проверка младшего бита
jz адрес2 ; не выставлен - число четное
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 22:26  [ТС] 18
vital792, так в задании написано роверка на четность либо нечетность и знак (если числа со знаком) числа осуществлять с помощью логических побитовых команд. а вы сделали не с помощью их

Добавлено через 1 минуту
если не ошибаюсь то как то через SET надо
0
vital792
2005 / 1277 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
23.04.2012, 22:29 19
Цитата Сообщение от sergeu90 Посмотреть сообщение
числа осуществлять с помощью логических побитовых команд. а вы сделали не с помощью их
ну почему же, команда test - логическое побитовое сравнение - вполне по заданию
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
23.04.2012, 22:30  [ТС] 20
vital792, тоесть думаете можно использовать?

Добавлено через 32 секунды
а как еще можно проверить с помощью логических побитовых команд
0
23.04.2012, 22:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2012, 22:30

Проверка числа на четность
почему у меня не переходит по метке четности тоесть Evenn?у меня он идет линейно. В чем может быть...

Проверка на знак числа (and, test)
and bx, 8000h js znakect jns znakanet znakect: mov ah,09h mov dx, offset int3 int...

Проверка на четность
Значит задача следующая вывести на экран только четные значения функции. Функцию я задал...


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

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

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