王爽15-17

一般将按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。扫描码长度为一个字节,通码的第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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值