
14.11.2008, 12:49
|
|
Новичок
Регистрация: 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");
}
Сейчас все сходится.
Но можете взять отличные от этих значения - увидите результат.
Нужно для вывода по лабе.
Благодарствую.
|
|
|