一般将按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。扫描码长度为一个字节,通码的第7位为0,断码的第7位为1.即:
断码=通码+80H
键盘的输入到达60H端口时,相关的芯片就会向CPU发出中断类型码为9的可屏蔽中断信息。CPU检测到该中断信息后,如果IF=1,则响应中断,引发中断过程,转去执行int 9中断例程。int 9中断例程由BIOS提供。
int 9中断例程的主要工作如下:
1.读出60H端口中的扫描码
2.如果是字符键的扫描码,将该扫描码和它所对应的字符码(即ASCII码)送入内存中的BIOS键盘缓冲区;如果是控制键(比如Ctrl)和切换键(比如CapsLock)的扫描码,则将其转变为状态字节写入内存中存储状态字节的单元
3.对键盘系统进行相关的控制,比如说,向相关芯片发出应答信息。
开机后,CPU自动进入到FFFF:0单元处执行,此处有一条转跳指令。CPU执行该指令后,转去执行BIOS中的硬件系统检测和初始化程序。
初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。
硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。
如果设为从软盘启动操作系统,则int 19h将主要完成以下工作:
1.控制0号软驱,读取软盘0道0面1扇区的内容到0:7c00
2.将CS:IP指向0:7c00
80386可以在3个模式下工作:
1.实模式:工作方式相当于一个8086
2.保护模式:提供支持多任务环境的工作方式,建立保护机制(这与VAX等小型机类似)
3.虚拟8086模式:可从保护模式切换至其中的一种8086工作方式。这种方式的提供使用户可以方便地在保护模式下运行一个或多个原8086程序。
用栈传递参数:
assume cs:code, ss:stack
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax, stack
mov ss, ax
mov ax, 1
push ax
mov ax, 4
push ax
call cube
mov ax, 4c00h
int 21h
cube:
push bp
mov bp, sp
mov ax, [bp + 4]
sub ax, [bp + 6]
mov bp, ax
mul bp
mul bp
pop bp
ret
code ends
end start
王爽15-17
最新推荐文章于 2024-07-11 15:04:54 发布
374

被折叠的 条评论
为什么被折叠?



