ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #751  
Старый 14.11.2008, 12:49
Vasiliusis
Новичок
Регистрация: 14.11.2008
Сообщений: 2
Провел на форуме:
1684

Репутация: 0
По умолчанию

Добрый день.
Скажите пожалуйста, почему различаются результаты при выполении арифметических операций на чистом С++ и при использовании АССЕМБЛЕРНОЙ ВСТАВКИ?

Код:
#include <iostream>
#include <windows.h>
#include <iomanip>
using namespace std;

BYTE ddS = 10;
BYTE ccS = 10;
BYTE aS = 6;

WORD NUM;

void main()
{
	__asm
	{
		MOV AL, ccS
		SUB AL, aS
		INC AX
		PUSH AX
		MOV AL, ccS
		MOV BL, ddS
		CBW
		DIV BL		
		PUSH AX		
		MOV AL, 3
		MOV BL, aS
		MUL BL
		MOV BL, 2
		CBW
		DIV BL
		POP BX
		ADD AL, BL
		POP BX
		CBW
		DIV BL
		MOV NUM, AX
	}
	cout<<"ASSEMBLER = "<<NUM<<endl;
	cout<<"C++ = "<<setprecision(3)<<showpoint<<(static_cast<float>(ccS)/ddS+(3*aS)/2)/(ccS-6+1)<<endl;
	system("PAUSE");
}
Сейчас все сходится.

Но можете взять отличные от этих значения - увидите результат.
Нужно для вывода по лабе.

Благодарствую.
 
Ответить с цитированием

  #752  
Старый 14.11.2008, 21:29
groupby
Познающий
Регистрация: 21.09.2008
Сообщений: 42
Провел на форуме:
127017

Репутация: 61
По умолчанию

потому что DIV и MUL работают с целыми числами. А на си, как я вижу ты работаешь с float
 
Ответить с цитированием

  #753  
Старый 15.11.2008, 08:38
Vasiliusis
Новичок
Регистрация: 14.11.2008
Сообщений: 2
Провел на форуме:
1684

Репутация: 0
По умолчанию

Цитата:
Сообщение от groupby  
потому что DIV и MUL работают с целыми числами. А на си, как я вижу ты работаешь с float
Т.е. если я уберу static_cast, то результаты сойдутся, так?
 
Ответить с цитированием

  #754  
Старый 15.11.2008, 13:38
groupby
Познающий
Регистрация: 21.09.2008
Сообщений: 42
Провел на форуме:
127017

Репутация: 61
По умолчанию

Сходится все равно не всегда будут

Потому что если у тебя в процессе вычислений появятся отрицательные числа, то на асме у тебя снова не то получится Нужно использовать команды IMUL, IDIV, SBB, ADC и т.д. Учи мат часть )
 
Ответить с цитированием

  #755  
Старый 15.11.2008, 14:19
043nKRuT0y
Участник форума
Регистрация: 31.10.2007
Сообщений: 213
Провел на форуме:
394522

Репутация: 14
По умолчанию

Народ помогите доделать/исправить :
Во общем нужно :
1 - создать список целых значений
2- каждое новое значение должно входить в список только если раньше не встречалось !
3 - вывести список на екран !

У меня список создаетса , выводитса , но вот проверка на повторяемость не получается (она в программе закоментирована ) если ее раскоментировать то программа не работает ! Подскажите как организовать проверку ...
Код:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <ctype.h>
# include <conio.h>
# include <iostream.h>

#define MAX 100


typedef struct {
		int elements[MAX];
		int count;
	       } listtype;

void list_reset(listtype *list) {
				 list->elements[0]=0;
				 list->count=0;
				}

void list_add(listtype *list,int element)
	{
	 /* for(int i=0 ; i<list->count;i++)
		{
		 if(list->elements[i] == element)
			{
			 printf("Element [%i] is consist ! Input other el !",element);
			 getch();
			}
		 else{*/
			if (list->count != MAX)
			list->elements[list->count++]=element;
		     //}
		//}
	 }

void list_print(listtype *list){
				int i;
				for(i = 0;i < list->count;i++)
				{
					printf("Element[%i] = %i\n",i+1,list->elements[i]);
				}
			       }

void main ()
{
 clrscr();
 listtype list;
 int el;
 list_reset(&list);
 char c;
 int K;
	cout <<"Input First El :";cin>>el;
	list_add(&list,el);
	cout <<"\nAdd El ? [Y/N]";cin>>c;
	while (c == 'Y' || c == 'y')
		{
		 cout <<"\nInput El:";cin>>el;
		 list_add(&list,el);
		 cout <<"\nAdd El ? [Y/N]";cin>>c;
		}
 cout <<"\nPrint List ?[Y/N]";cin>>c;
 if(c == 'Y' || c == 'y')
	{
	 list_print(&list);
	 getch();
	}
 getchar();
}
 
Ответить с цитированием

  #756  
Старый 15.11.2008, 16:46
velvetdust
Новичок
Регистрация: 08.11.2008
Сообщений: 9
Провел на форуме:
28743

Репутация: -5
По умолчанию

Помогите нарисовать блок-схему, очень надо!

1.3 Дано число. Определить, равна ли сумма двух первых цифр числа сумме двух его последних цифр

Код:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int s1, s2;
long step (int i)
{
  int g = 1, j;
  for (j = 1; j < i; g *= 10, j++);
  return g;
}

int main ()
{
  int k;
  printf ("Enter your number: ");
  scanf ("%d", &k);

  int l = k, g = 1;

  while (l / 10 > 0)
  {
    l /= 10;
    ++g;
  }

  s1 = k / step (g) + (k / step (g - 1) % 10);
  s2 = k % 10 + (k / step (2)) % 10;
  return 0;
}
 printf ("\n Summa dvuh mladshih cifr chisla ravna %d", s1);
 printf ("\n Summa dvuh starshih cifr chisla ravna %d", s2);
 if (s1 == s2)
{
  printf("\n Summy ravny");
 }
else
{
  printf("\n Summy ne ravny");
 }
 getch();

Последний раз редактировалось velvetdust; 15.11.2008 в 21:22..
 
Ответить с цитированием

  #757  
Старый 15.11.2008, 17:46
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

velvetdust, блок-схему рисуют, ну или строят
Что-то мне подсказывает, что код не дописан...
 
Ответить с цитированием

  #758  
Старый 16.11.2008, 18:20
velvetdust
Новичок
Регистрация: 08.11.2008
Сообщений: 9
Провел на форуме:
28743

Репутация: -5
По умолчанию

Нарисуйте хоть бы по этому коду))) Пожалуйста, очень надо!
 
Ответить с цитированием

  #759  
Старый 16.11.2008, 19:37
vikseriq
Участник форума
Регистрация: 31.07.2008
Сообщений: 207
Провел на форуме:
299231

Репутация: 107
Отправить сообщение для vikseriq с помощью ICQ
По умолчанию

0 Инициализация
1 Вводим числа = строка .
2 Перегоняем в int два первых и два последних символа (способов много)
3 a = a1+a2; b = b1+b2;
4 если a == b пишем Ура иначе пишем Облом
5 чистим память и выводим копирайты )
 
Ответить с цитированием

  #760  
Старый 16.11.2008, 20:21
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

velvetdust хоть почитай как строятся блок схемы, там делов на 30 минут.
http://ru.wikipedia.org/wiki/Блок-схема

Ну или же воспользуйся автосоставителем блок схем
http://www.fceditor.nm.ru/

Лучше самому разобраться.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сюда выкладываем все проги для фрикринга мобильников, которых знаем! nigger Сотовый фрикинг 5 11.04.2009 11:15
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ