wince关于内嵌汇编操作IO口的有关问题

wince关于内嵌汇编操作IO口的问题
本人在WINCE下开发IO口的驱动,为了简化开发过程,直接用汇编进行读写IO口的地址进行操作。
现在写地址是没问题。比如,我的设备的地址是0x123,那么我对它写相应的值能是想我想要的功能。但是读寄存器有点问题,因为我是C中内嵌的汇编。我是不是可以这样表示
C/C++ code

unsigned char i;
__asm
{
    mov i,0x123
}
printf("%d\n",i);



我用vc试了一下,打出来的是0x123,而不是该寄存器内的值。

还有,我想问下,我想用MessageBox输出我的变量i,请问如何操作?

CString str;
str.Format("%d",i);
MessageBox(NULL,str,"title",MB_OK);


这样有什么问题?


------解决方案--------------------
知道了。应该是

__asm
{
mov DX,0x123
in AL,DX
mov i,AL

}