成都创新互联网站制作重庆分公司

c语言int86函数 c语言 int8

用C调用BIOS中断,读键函数帮忙解释一下

int key()

创新互联专注于沙县企业网站建设,响应式网站建设,商城网站建设。沙县网站建设公司,为沙县等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

{

union REGS rg;\\定义联合体-〉寄存器=rg

rg.h.ah=0;\\等同于汇编 mov ah 00h,赋值是为了初始化)

int86(0x16,rg,rg);\\等同于c语言int 16h)

return rg.h.ah;\\返回AX高字节的值

}

1. REGS是CPU的一个寄存器的集合,也就是寄存器集合(Registers)的缩写

2. 这句话的作用是进行寄存器的初始化(所有的I/O指令都使用AHAL寄存器与外界设备传送数据),等同于mov ah 00h

数据寄存器分为:

AHAL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.

BHBL=BX(base):基址寄存器,常用于地址索引;

CHCL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.

DHDL=DX(data):数据寄存器,常用于数据传递。

他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用

3.同上,AH寄存器置0,就是为了初始化寄存器

4.

0x16这个是标明进行键盘中断int 16h的调用,记住就行了。

第1个参数:intno=0x16; //调用键盘中断int 16h

第2个参数:inregs为调用时个寄存器的值;

第3个参数:oregs为调用后返回时各寄存器的状态值,

5.

int86() 函数的功能是提供通用的 8086 软中断接口(关于中断信息,请自行参考相关文档或书籍)。

其原型是: int86(int intno, union REGS* inregs, union REGS* outregs);

intno 参数指定中断号,inregs 与 outregs 分别是入口参数寄存器和出口参数寄存器。

入口参数提供信息,结果则从出口参数中获取——可能入口与出口是同一组寄存器,这是允许的。

c语言如何获取鼠标键盘信息

我估计你分数给的在高也没人回答。来个这样的代码太麻烦了。而且百度金币用处也不大。

不过,我可以写几个鼠标函数给你参考一下。

首先了解一下鼠标的中断。

_ax=0x01

表示显示光标

_ax=0x02

停止显示光标

_ax=0x03

读取光标位置与案件

_ax=0x04

设置光标位置

所以啊。根据这四个中断,有以下几个函数

----------------------------------------------------

void

mouseon(void)//鼠标光标显示

{

_ax

=

0x01;

geninterrupt(0x33);

}

----------------------------------------------------

void

mouseoff(void)//鼠标光标隐藏

{

_ax

=

0x02;

geninterrupt(0x33);

}

---------------------------------------------------

void

mousesetxy(int

x,int

y)//设置当前位置

{

_cx

=

x,

_cd

=

y;

_ax

=

0x04;

geninterrupt(0x33);

}

---------------------------------------------------

int

leftpress(void)//鼠标左键按下

{

_ax

=

0x33;

geninterrupt(0x33);

return(_bx1);

}

-----------------------------------------------------

鼠标右键的应该也会了吧。不过要return(_bx2);

-----------------------------------------------------

void

mousegetxy(void)//得到当前位置

{

_ax

=

0x33;

geninterrupt(0x33);

mousex

=

_cx;

mousey

=

_dx;

}

---------------------------------------------------------------

最好要复制粘贴,打字打得手疼。

c语言int86(0x10,&r,&r)是什么意思

调用int86库函数。调用时向它传递的第1个参数是16,第2、第3变量都是联合体r的入口地址。

C语言中int86()函数的用法

函数名: int86

功 能: 通用8086软中断接口

用 法: int int86(int intr_num, union REGS *inregs, union REGS *outregs);

程序例:

#include stdio.h

#include conio.h

#include dos.h

#define VIDEO 0x10

void movetoxy(int x, int y)

{

union REGS regs;

regs.h.ah = 2; /* set cursor postion */

regs.h.dh = y;

regs.h.dl = x;

regs.h.bh = 0; /* video page 0 */

int86(VIDEO, regs, regs);

}

int main(void)

{

clrscr();

movetoxy(35, 10);

printf("Hello/n");

return 0;

}

C语言中DOS与BIOS调用函数int86()问题

他们是80X86寄存器组

1:通用寄存器

数据寄存器:AX,BX,CX,DX

AX(accumulator)用于累加器,所以它是算术运算的主要寄存器。在乘,除等指令中用来存放操作数。

BX(base)可以作为通用寄存器使用。它经常用作基址寄存器。

CX(count)可以作为通用寄存器使用。此外常用来保存计数值,如在移位指令,循环(LOOP)和串处理指令中用作隐含的计数器。

DX(data)可以作为通用寄存器使用。一般在作双字长运算时把DX和AX组合在一起存放一个双字长数,DX用来存放高位字。此外,DX可用来存放I|O的端口地址。

SP,BP,SI,DI可以像数据寄存器一样在去处过程中存放操作数。

SP:stack pointer;堆栈指针寄存器

SI:source index;源变址寄存器

BP:base pointer;基址指针寄存器

DI:destination index;目的变址寄存器

2:专用寄存器

IP:instruction pointer;指令指针寄存器.用于存放代码段的偏移地址,它与段寄存器SC联用确定下一条指令的物理地址.

SP:用来存放栈顶的偏移地址.

FLAGS:program status word,PSW).这是一个存放条件标志,控制标志和系统标志的寄存器.

标志寄存器:

条件码标志:溢出标志(overflow flag,OF).符号标志(sign flag.SF).零标志(zero flag,ZF).进位标志(carry flag,CF).

int86( ) 熟悉 C 语言库函数的高手和感兴趣的都来看看

系统内核程序啊。?

偶看不懂。抱歉。不过我是来消灭零回复。


名称栏目:c语言int86函数 c语言 int8
网站地址:http://cxhlcq.com/article/hpedgp.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部