上古卷轴5阿兹达尔护腕:c语言如何同汇编结合?

来源:百度文库 编辑:神马品牌网 时间:2024/05/06 00:17:48
c中怎没加入汇编的?
加入的规则是什莫以及相关的语法说明?
请用例子加以说明。谢谢!!

越详细越好!!!

有没有相关的网页或教程,有的化帮忙帖出来!

多谢!!!!!
还有人会吗?
有高手吗?!!!!!!!!!!

#define VERTICAL 639
#define HORIZONTAL 479

#ifdef __cplusplus
extern "C"
{
#endif
char vmode, pixel = 0x0F;

/*
* 用一个小数值缩放一个值,使用一个32位的中间值,并把最后的结果四舍五入渠道最详尽的整数值
*/

short scale( short nValue_, unsigned uMul_, short nDiv_)
{
_asm
{
mov ax,nValue_
mul uMul_
mov bx,nDiv_
div bx
shr bx,1
jz scale1
inc dx
sub bx,dx
adc ax,0
scale1:
}
}

/*
* 初始化显示器
*/

short init_video()
{
_asm
{
mov ah,0Fh
int 10h
mov vmode,AL

mov ax,1A00h
int 10h
cmp al,1Ah
mov al,-1
jz initv1
xor ax,ax
initv1:
}
}

/*
* 设置显示方式并清屏
*/

void video_mode( char mode )
{
_asm
{
mov AL,mode
xor AH,AH
int 10h
}
}

/*
* 用放在属性pixel的值设置图像象素
*/

void set_pixel( short x, short y)
{
_asm
{
mov dx,y
cmp dx,VERTICAL
jae noset
mov cx,y
cmp cx,HORIZONTAL
jae noset
mov ah,0Ch
mov al,pixel
xor bh,bh
int 10h
noset:
}
}

/*
* 文本光标的位置
*/

void gotoxy(char x, char y)
{
_asm
{
mov dh,y
mov dl,x
xor bh,bh
mov ah,02h
int 10h
}
}

/*
* 检查控制台是否有输入
*/

int test_key()
{
_asm
{
mov AH,01h
int 16h
jnz getk1
xor AX,AX
jmp endp
getk1:
xor ah,ah
int 16h
xor ah,ah
endp:
}

//_asm _get_key
}

/*
* 得到一个字符,并且不回显
*/

int get_key()
{
_asm
{
xor ah,ah
int 16h
xor ah,ah
}
}

#ifdef __cplusplus
};
#endif