用VC写的汇编程序在WIN98下能用可在WIN2000下却不能用,大家帮忙看看是怎么回事!
别人提供给我用VC写的读取IC卡读卡器的DLL(有原代码),其中有几段汇编程序,在WIN2000下调试到该汇编代码时报地址错,可在WIN98下没错!我对汇编一无所知,这几段代码具体什么功能我也不知道,特将该代码贴出以求救!
void _outp(int output,unsigned char al_data)
{
__asm
{
push dx;
push ax;
mov dx,word ptr output;
mov al,byte ptr al_data;
out dx,al;
pop ax;
pop dx;
}
return;
}
unsigned char _inp(int input)
{
unsigned char inp;
__asm
{
push dx;
push ax;
mov dx,word ptr input;
in al,dx;
mov byte ptr inp,al
pop ax;
pop dx;
}
return inp;
}
int _read_port(void)
{
int port_r;
__asm
{
push es;
push ax;
mov ax,40h;
mov es,ax;
mov ax,es:word ptr [0ah];
cmp ax,0;
jne end_asm;
mov ax,es:word ptr [08h];
end_asm:
mov word ptr port_r,ax;
pop ax;
pop es;
}
return port_r;
}
void _outp(int output,unsigned char al_data)
{
__asm
{
push dx;
push ax;
mov dx,word ptr output;
mov al,byte ptr al_data;
out dx,al;
pop ax;
pop dx;
}
return;
}
unsigned char _inp(int input)
{
unsigned char inp;
__asm
{
push dx;
push ax;
mov dx,word ptr input;
in al,dx;
mov byte ptr inp,al
pop ax;
pop dx;
}
return inp;
}
int _read_port(void)
{
int port_r;
__asm
{
push es;
push ax;
mov ax,40h;
mov es,ax;
mov ax,es:word ptr [0ah];
cmp ax,0;
jne end_asm;
mov ax,es:word ptr [08h];
end_asm:
mov word ptr port_r,ax;
pop ax;
pop es;
}
return port_r;
}
...全文
相关推荐
在VC6.0中使用MSLU编写WIN98/2K下的UNICODE程序
在VC6.0环境下开发WIN98/2K操作系统的UNICODE程序,可以借助MSLU(Microsoft Layer for Unicode)库。
如何解决VC6.0在win7中不能有效打开文件的方法
**启用兼容模式**:右键点击VC6.0的可执行文件(例如vc98.exe),选择“属性”,然后在“兼容性”选项卡中勾选“以兼容模式运行这个程序”。
VC6.0及win10兼容补丁
**替换关键文件**:安装完成后,找到安装目录(通常是`C:\Program Files (x86)\Microsoft Visual Studio\VC98`),然后使用压缩包内的`MSDEV`文件替换安装目录中的同名文件
PSDK vc6 下载地址
一、下载PSDK for VC6微软官方在2010年12月3日发布了适用于Windows 98/ME/2000/XP的PSDK版本,该版本编号为3790.0。
VC win 10 绿色版
【VC Win 10 绿色版】是一个针对Windows 10操作系统的精简版本的Visual C++开发环境。


