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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.05.2013, 12:13   #1
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию Лаба по ассемблеру. Условия

есть 2 функции вида y = f(a,b,c,d,e), надо по условию (a>b)and(c<>d) если условие истинно то выполняется первая функция, если ложно вторая, с функциями разберусь, но не знаю как составить двойное условие

п.с. если что пишу в студии (асм вставка), так что всяких прибамбасов от masm и т.д. не надо в коде, не пойму все равно
NewLamer&Programer вне форума
Старый 01.05.2013, 13:28   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Алгоритм:
если a > b ложно, то прыжок на 1
если c <> d ложно, то прыжок на 1
f1()
прыжок на exit
1: f2()
exit:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 01.05.2013, 15:03   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Это не двойное условие, это - логическое выражение.
Вычисляйте его последовательно в соответствии с приоритетом операций. Там может быть хоть 30 условий - на способ вычисления это никак не влияет.
s-andriano вне форума
Старый 01.05.2013, 15:24   #4
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Алгоритм:
если a > b ложно, то прыжок на 1
если c <> d ложно, то прыжок на 1
f1()
прыжок на exit
1: f2()
exit:
гениально... давай еще лучше сделаю алгоритм? бах трах и готово, во супер алгоритм !!! я думаешь вообще чтоли? я просто не очень понимаю какие jcc тут использовать, не надо мне вот так выпендриваться тут... лучше бы нормально сказал...

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Это не двойное условие, это - логическое выражение.
Вычисляйте его последовательно в соответствии с приоритетом операций. Там может быть хоть 30 условий - на способ вычисления это никак не влияет.
как это последовательно? cmp jcc а прыгать то куда... ну в смысле это одно условие а второе как

Последний раз редактировалось Stilet; 01.05.2013 в 17:06.
NewLamer&Programer вне форума
Старый 01.05.2013, 16:20   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
гениально... давай еще лучше сделаю алгоритм? бах трах и готово, во супер алгоритм !!! я думаешь вообще чтоли? я просто не очень понимаю какие jcc тут использовать, не надо мне вот так выпендриваться тут... лучше бы нормально сказал...
Хохо, так можно и по "репе" получить
"Нормально сказал" - т.е. написал за Вас?)

А если по делу, я разжевал Вам все действия, Вам осталось только правильно это записать.
http://asm-book.narod.ru/Stati_NK_IP_Jccop1.html - изучайте (советую взять jle, je и jmp).

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
ну в смысле это одно условие а второе как
Как раз так, как я Вам описал. Делать условные переходы, если рассматриваемое условие ложно (если все условия идут через and).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 01.05.2013, 17:48   #6
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

BDA, я не прошу что то писать за меня, точнее писать, на буквально пару строк черкануть сложно чтоли, если я не знаю как это условие записать, оно же не на 100 строк будет... я не прошу всю лабу за меня делать просто не знаю как записать условие -_- читал я уже подобную хрень в нете, там нет подходящего условия (>, <>)
NewLamer&Programer вне форума
Старый 01.05.2013, 17:54   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

http://www.cracklab.ru/pro/asm/15.php
Вы посмотрели, что значат jle и je?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 01.05.2013, 20:55   #8
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

je x Equal ==
jle x Less or Equal <=

я может конечно что то не знаю, но в С == это равно, а не как в моем случае НЕ равно (<>), да и так или иначе == не похоже банально на <>, просветите меня если я ошибаюсь...

что касается jle там вообще во первых <, а не >, и = а не <>, опять таки в разных языках для логических операций могут быть разные символьные обозначения, может я просто чего то не понимаю...
NewLamer&Programer вне форума
Старый 01.05.2013, 21:45   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Окей, с намеками не получилось
Вам нужно, чтобы условие a > b было ЛОЖНЫМ, но переход выполняется по истинному условию, то есть нужно взять отрицание к исходному условию "если a <= b, то выполнить переход".
Конечно же, можно разработать другую структуру, чтобы сохранить исходные условия, но это усложнит логику программы.
Например:
Если a > b, то переход на 1
переход на 3
1:Если c <> d, то переход на 2
переход на 3
2: f1()
переход на exit
3: f2()
exit:

В данном случае 2 условных перехода и 3 безусловных. В предыдущем алгоритме - 2 условных и 1 безусловный.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 01.05.2013, 22:18   #10
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

короче я себе это так представляю:

Код:
mov eax, a
mov ebx, b

cmp eax, abx ; (a > b) and (c <> d)
jg label
jmp Function2

label: 
mov eax, c
mov ebx, d
cmp eax, ebx
jnge Function1
jmp Function2

Function1:
...

Function2:
...

Последний раз редактировалось NewLamer&Programer; 01.05.2013 в 22:25.
NewLamer&Programer вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по ассемблеру добрый_фей Помощь студентам 2 01.11.2010 20:27
Поясните по ассемблеру Namolem Помощь студентам 1 10.10.2010 12:11
Лаба по Ассемблеру Rio309 Помощь студентам 13 30.10.2008 00:35
практикум по ассемблеру rpy3uH Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 13.12.2006 22:28