汇编语言 第十七章 使用 BIOS 进行键盘输入和磁盘读写

17.1 int 9 中断例程对键盘输入的处理

一般的键盘输入,在 CPU 执行完 int 9 终端例程后,都放到了键盘缓冲区。键盘缓冲区中有 16 个子单元,可以存储 15 个按键的扫描码和对应的 ASCII 码。其实键盘缓冲区是环形队列结构管理的内存区。

通过按下 A、B、C、D、E、Shift_A、A 的输入过程来看 int 9 中断例程对键盘输入的处理方法。

汇编语言 第十六章 直接定址表

16.1 描述了单元长度的标号

在代码段中使用标号 code、a、b、start、s 等来标记指令、数据、段的起始地址。

汇编语言 第十五章 外中断

以键盘输入为例,讨论①外设的输入随时可能发生,CPU 如何得知?②CPU 从何处得到外设的输入?

15.1 接口芯片和端口

外设的输入送入相关接口芯片的端口中,CPU 向外设的输出也是先送入端口中,再由相关芯片送到外设。

15.2 外中断信息

终端信息,来自于 CPU 外部,CPU 检测到发送过来的中断信息,引发中断过程,处理外设的输入。

汇编语言 第十四章 端口的读写

CPU 可以直接读写 3 个地方的数据:CPU 内部的寄存器、内存单元、端口。

14.1 端口的读写

CPU 通过端口地址来定位端口。因为端口所在的芯片和 CPU 通过总线相连,所以端口地址和内存地址一样,通过地址总线来传送。PC 系统中,CPU 最多可以定位 64KB 个不同的端口。则端口地址的范围为 0~65535。

端口的读写指令只有两条:in 和 out。分别从端口读取和写入数据。

比较 CPU 执行内存访问指令和端口访问指令时,总线上的信息:

汇编语言 第十三章 int 指令

重要的内中断:由 int 指令引发的中断。

13.1 int 指令

int 指令的格式为:int n,n 为中断类型码,功能是引发中断过程。

CPU 执行 int n 命令,相当于引发一个 n 号中断过程,执行过程如下:

汇编语言 第十二章 内中断

中断信息: CPU 在执行完当前正在执行的指令后,检测到从 CPU 外部发送过来的或内部产生的一种特殊信息,并立即处理。

12.1 内中断的产生

当 8086CPU 内部有下面的情况发生的时候,将会产生相应的中断信息。

  • 除法错误,比如,执行 div 指令产生的除法溢出;
  • 单步执行;
  • 执行 into 指令;
  • 执行 int 指令。

汇编语言 第十一章 标志寄存器

有这样 3 种作用的特殊的寄存器,在 8086CPU 种被称为标志寄存器:

  • 用来存储相关指令的某些执行结果;
  • 用来为 CPU 执行相关指令提供行为依据;
  • 用来控制 CPU 的相关工作方式。

8086CPU 的标志寄存器有 16 位,其中存储的信息通常被称为程序状态字(PSW)。

汇编语言 第十章 CALL和RET指令

cell 和 ret 都是转移指令,都修改 IP。或同时修改 CS 和 IP。

10.1 ret 和 retf

ret 指令用栈中的数据,修改 IP 的内容,实现近转移;retf 指令用栈中的数据,修改 CS 和 IP 的内容,实现远转移。

CPU 执行 ret 指令时,进行下面两部操作:

汇编语言 第九章 转移指令的原理

可以修改 IP,或同时修改 CS 和 IP 的指令统称为转移指令。概括地讲,转移指令就是可以控制 CPU 执行内存中某处代码的指令。

8086CPU 的转移行为有以下几类。

  • 只修改 IP,称为段内转移,比如 jmp ax。
  • 同时修改 CS 和 IP,称为段间转移,比如 jmp 1000:0。

由于转移指令对 IP 修改范围不同,段内转移又分为:

  • 短转移,IP 修改范围 -128~127。
  • 近转移,IP 修改范围 -32768~32767。

汇编语言 第八章 数据处理的两个基本问题

  1. 处理的数据在什么地方?
  2. 要处理的数据有多长?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×