CPU可以读取3个地方的数据
1CPU内部寄存器
2内存单元
3端口
端口读写指令:in 读取 out 写入,注意:在in ,out 指令中,只能通过ax和al来存放端口的数据和把数据写入端口,访问8位端口用al,16位用ax
8086对应的是外设端口,外设提供端口给CPU访问,通过访问端口来操作外设
例子:in al,60h 从60h端口中读取一个字节数据到al中
out 60h,al 向60h端口写入一个字节数据al
COMS RAM芯片
其中包含一个实时钟和一个有128存储单元的RAM存储器,在128字节的RAM中,内部实时钟占0-0dh单元保存时间信息,其余大部分分单元用于保存系统配置信息,供系统启动BIOS程序读取
BIOS提供了相关程序,使我们开机时配置COSRAM中的系统信息
RAM芯片内部有2个端口,端口地址为70h和71h通过这两个端口读写CMOSRAM,
70H为地址端口,存放CMOS RAM的单元地址
71H为数据端口,存放从选定的CMOS RAM单元中读取的数据或者要写入的数据
CPU对CMOS RAM读写分两步 例如:读取CMOS RAM2号单元的数据
1 将2送入单元70h地址端口
2 从71h数据端口读出2号单元的内容
shl指令
shl指令:逻辑左移指令,功能:
1将一个寄存器或内存单元中的数据向左移位
2 将最后移出的一位写入CF中
3将最低位用0补充
如果移动的位数大于1,把移动的位数放入cl中
例子 :mov al,10010001
shl al,1将al左移1位
mov cl,3
shl al,cl将al左移3位
shr指令:逻辑右移指令和左移动指令shl相反
外中断
内中断由CPU内部引发的中断信息
外中断由CPU外部设备引发的中断信息,例如键盘
外中断源有两类:1 可屏蔽中断,2 不可屏蔽中断
1 可屏蔽中断:可屏蔽中断CPU可以屏蔽,CPU通过IF标志位是判断是否响应中断,IF=1,CPU响应中断,IF=0,不响应可屏蔽中断所引发的中断过程,出来和在第一步实现方式上和内中断不同,其他基本和内中断中断过程相同,因为外中断的中断类型码是由数据总线送入CPU的,而内中断的中断类型码是由CPU内部产生的
2 不可屏蔽中断:不可屏蔽中断是CPU不可屏蔽,必须执行,固定的中断类型码是2,所以不需要取中断类型码,其他步骤和内中断一样
设置IF的指令:sti(把IF设置为1)cli(把IF设置为0)
键盘外中断过程:由键盘产生的外中断(可屏蔽中断)
1键盘芯片产生扫描码
2扫描码送入60h端口
3一旦侦测到60h端口有动静,引发9号中断
4CPU执行9号中断例程,处理键盘输入
注意:前三步是硬件系统自动完成的,能修改只有第4步,修改中断程序