现在的位置: 首页 > 综合 > 正文

汇编在C\C++中的简单嵌套

2013年06月30日 ⁄ 综合 ⁄ 共 728字 ⁄ 字号 评论关闭
/*===========================================
*编译器: VC6.0
*
*函数: float fabsolute (float num);
*用汇编求绝对值
=============================================*/

#include <iostream>
float fabsolute (float num);

int main()
{
using namespace std;

float n;

while (true)
{
cout << "请输入一个数字:";
cin >> n;
n = fabsolute(n);
cout << n << endl;
}
return 0;
}

float fabsolute (float num)
{
float mantissa;// 尾数部分
int integer;// 整数部分

integer = int(num);// 取的整数部分

_asm
{
mov eax, integer
add eax, 0
jns loc_end// 正数跳转
neg eax
mov integer, eax
}

mantissa = int(num) - num;
return (integer+mantissa);

loc_end:
return num;
}

例二:

#include <iostream>

int main()
{
using namespace std;

int num = 0;

int x = 1;
int y = 9;
int z = 0;

_asm
{
MOV EAX, x
SUB EAX, y
JNS ENDIF_1//;正数跳转
THEN_1:
NEG EAX//;求补码 (各位取反加1),存入AX;相当于乘以-1
ENDIF_1:
MOV z, EAX
}

cout << "vc 6.0 中嵌套汇编\n";
cout << z << endl;
return 0;
}

抱歉!评论已关闭.