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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.05.2013, 22:38   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Почти согласен:
Код:
mov eax, a
mov ebx, b
cmp eax, abx ; (a V b)
jg label ; (a > b)
jmp Function2 ; else

label: 
mov eax, c
mov ebx, d
cmp eax, ebx ; (c V d)
jne Function1 ; (c <> d)
jmp Function2 ; else

Function1:
...
jmp exit

Function2:
...

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

сяп, токо вот тут все таки jnge, а не jne, во всяком случае судя по знакам...
NewLamer&Programer вне форума
Старый 01.05.2013, 23:09   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А Вы не на тот знак смо ́трите. Вы смотри ́те на описание - "если не больше или равно". А знак слева, это как нужно сравнить флаги (точнее, как они должны быть установлены, чтобы произошел переход по условию), а не числа.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 02.05.2013 в 01:13.
BDA вне форума
Старый 03.05.2013, 12:43   #14
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

помогите разобраться с самими функциями еще пожалуста, вроде все правильно, но работать не хочет

Код:
#define _CRT_NONSTDC_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>

void main()
{
	int a, b, c, d, e, Result;
	printf("(a > b) and (c <> d)\n\n");
	printf("y = a + b - c * d / e\n\n");
	printf("y = a * b + c - d / e\n\n");
	printf("a = ");
	scanf("%d",&a);
	printf("b = ");
	scanf("%d",&b);
	printf("c = ");
	scanf("%d",&c);
	printf("d = ");
	scanf("%d",&d);
	printf("e = ");
	scanf("%d",&e);
	__asm
	{
		push eax
		push ebx
		push edz

		mov eax, a
		mov ebx, b

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

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

		Function1: ; y = a + b - c * d / e
		
		mov eax, c
		mov ebx, d

		imul ebx
		
		mov ebx, e
		idiv ebx

		mov ebx, eax
		mov eax, b
		sub eax, ebx

		mov ebx, a
		add eax, ebx

		mov Result, eax
		jmp exit

		Function2: ; y = a * b + c - d / e

	        mov eax, d
		mov ebx, e

		idiv ebx

		mov eax, c
		sub eax, ebx

		mov edx, ebx

		mov eax, a
		mov ebx, b
		add eax, ebx

		add ebx, edx

		mov Result, edx

		exit:
		pop edx
		pop ebx
		pop eax
	}

	printf("%s",Result);

	getch();
}

Последний раз редактировалось NewLamer&Programer; 03.05.2013 в 12:50.
NewLamer&Programer вне форума
Старый 03.05.2013, 12:59   #15
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
jnge Function1
1) jne, наверное. Не заметил вторую страницу темы, извиняюсь.
2) Если не изменяет склероз, все условные переходы - short jump, они ограничены в дальности. Не наколитесь в будущем.

3)
Код:
	printf("%s",Result);
%s - вывод строки (char*). Result что, имеет тип char*?

Последний раз редактировалось Abstraction; 03.05.2013 в 13:01.
Abstraction вне форума
Старый 03.05.2013, 13:25   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#define _CRT_NONSTDC_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>

void main()
{
	int a, b, c, d, e, Result;
	printf("(a > b) and (c <> d)\n\n");
	printf("y = a + b - c * d / e\n\n");
	printf("y = a * b + c - d / e\n\n");
	printf("a = ");
	scanf("%d",&a);
	printf("b = ");
	scanf("%d",&b);
	printf("c = ");
	scanf("%d",&c);
	printf("d = ");
	scanf("%d",&d);
	printf("e = ");
	scanf("%d",&e);
	__asm
	{
		push eax
		push ebx
		push edx
		push ecx

		mov eax, a
		mov ebx, b

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

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

		Function1: ; y = a + b - c * d / e
		
		mov eax, c
		mov ebx, d

		imul ebx
		
		mov ebx, e
		idiv ebx

		mov ebx, eax
		mov eax, b
		sub eax, ebx

		mov ebx, a
		add eax, ebx

		mov Result, eax
		jmp exit

		Function2: ; y = a * b + c - d / e

	        mov eax, d
		mov ebx, e
		xor edx, edx

		idiv ebx

		mov ebx, eax
		mov eax, c
		sub eax, ebx

		mov ecx, eax

		mov eax, a
		mov ebx, b
		imul ebx

		add eax, ecx

		mov Result, eax

		exit:
		pop ecx
		pop edx
		pop ebx
		pop eax
	}

	printf("%d",Result);

	getch();
}
2 функция была неправильно реализована.
Неплохо бы проверять e на 0.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.05.2013 в 13:27.
BDA вне форума
Старый 03.05.2013, 13:45   #17
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

BDA, ну вот ввожу я допустим: 1, 2, 3, 4, 5. 1>2 and 3<>4 все вроде истина, значит смотрим первую функцию 1+2-3*4/5 = 1, а выводит 5, почему?
NewLamer&Programer вне форума
Старый 03.05.2013, 14:03   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

1>2
Не знал...
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 03.05.2013, 15:38   #19
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1>2
Не знал...
ой... протупил :D ладно все робит спасибо
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