|
项目要通过IO端口通讯数据,本人不会汇编,在网上看到可以嵌入汇编,我的代码如下,每次读上来数据都是0xFF,是哪里有问题吗?第一次用evc通过模拟器显示,也不知如何单步执行,比较痛苦。高手指点。
unsigned char pio_inbyte( WORD addr )
{
unsigned char data_byte;
_asm {push ax}
_asm {push dx}
_asm {mov dx,addr}
_asm {in al,dx}
_asm {mov data_byte, al}
_asm {pop dx}
_asm {pop ax}
return data_byte;
}
/*********************************************************/
void pio_outbyte(WORD addr,unsigned char data )
{
_asm {push ax}
_asm {push dx}
_asm {mov dx,addr}
_asm {mov al,data}
_asm {out dx,al}
_asm {pop dx}
_asm {pop ax}
}
/*********************************************************/
WORD pio_inword( WORD addr )
{
WORD data_word;
_asm {push ax}
_asm {push dx}
_asm {mov dx,regAddr}
_asm {in ax,dx}
_asm {mov data_word, ax}
_asm {pop dx}
_asm {pop ax}
return data_word;
}
/*********************************************************/
void pio_outword( WORD addr, WORD data )
{
WORD regAddr=pio_reg_addrs[addr];
_asm {push ax}
_asm {push dx}
_asm {mov dx,regAddr}
_asm {mov ax,data}
_asm {out dx,ax}
_asm {pop dx}
_asm {pop ax}
}
|
|