摘要: 使用BIOS进行键盘输入和磁盘读写 我们通过讨论键盘输入和磁盘读写来理解CPU对I/O的控制。 BIOS键盘缓冲区 键盘输入会引发9号中断,CPU会执行中断例程,从60h端口读出扫描码,然后将其转换为对应的ascii码信息,将扫描码和对应的ascii码存入内存中的指定空间中,这个空间一般是键盘缓冲区 阅读全文
posted @ 2020-04-30 22:51 勇闯8 阅读(820) 评论(0) 推荐(0) 编辑
摘要: 直接定址表 数据标号 之前我们使用的标号形式: 这个标号仅仅代表内存单元的地址。 我们还可以使用同时描述内存地址和单元长度的标号,即数据标号(没有冒号),如: 它代表a之后的单元都是字节单元,b之后的单元都是字单元。当指令中出现标号a或b的时候,会同时代表地址和单元长度信息,如果出现字节匹配字的情况 阅读全文
posted @ 2020-04-30 22:47 勇闯8 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 外中断 可屏蔽中断与不可屏蔽中断 CPU除了能执行指令运算以外,还需要对外部设备进行控制,接受它们的输入,或者向它们输出,也就是I/O能力。CPU通过端口与外部设备进行联系,无论是发送和接受数据,还是输出控制命令,都是先将数据和指令送入相关芯片的端口中,然后再通过芯片对外设进行控制,或者传输到CPU 阅读全文
posted @ 2020-04-30 22:45 勇闯8 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 端口 在PC系统中,和CPU通过总线相连的芯片除了各种存储器外,还有以下三种芯片: 1、各种接口卡(如显卡、网卡)上的接口芯片,它们控制接口卡进行工作 2、主板上的接口芯片,CPU通过它们对部分外设进行访问 3、其他芯片,用来存储相关的系统信息,或进行相关的输入输出处理 这些芯片中都有一组可以由CP 阅读全文
posted @ 2020-04-30 22:40 勇闯8 阅读(337) 评论(0) 推荐(0) 编辑
摘要: int指令 int指令也可以引发内中断。 int指令的格式是: 其中n为中断类型码。 相当于执行以下步骤: 1、取到中断类型码n 2、标志寄存器入栈,IF=0,TF=0 3、CS、IP入栈 4、根据中断向量表修改CS和IP:(IP)=(n 4),(CS)=(n\ 4+2) 可见int指令的最终功能就 阅读全文
posted @ 2020-04-30 22:39 勇闯8 阅读(1874) 评论(0) 推荐(0) 编辑
摘要: 内中断 CPU可以在执行完当前正在执行的指令之后,检测到从CPU外部或内部产生的一种特殊信息,并且可以立即对所接受到的信息进行处理。这种特殊信息一般称其为中断信息。中断就是CPU不再接着刚执行完的指令向下执行,而是转而去处理这个特殊信息。 内中断的产生 从CPU内部产生的中断信息被称为内中断。当下列 阅读全文
posted @ 2020-04-30 22:36 勇闯8 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 标志寄存器 CPU内部有一种特殊的寄存器名为标志寄存器,它有以下几种作用: 1、存储相关指令的某些执行结果 2、为CPU执行相关指令提供行为依据 3、控制CPU的相关工作方式 8080CPU中的标志寄存器是flag,它有16位,其中存储的信息通常被称为程序状态字PSW,这种寄存器的每一位都有含义,它 阅读全文
posted @ 2020-04-30 22:33 勇闯8 阅读(857) 评论(0) 推荐(0) 编辑
摘要: CALL和RET指令 call和ret指令都是转移指令,它们经常被共同用来实现子程序的设计。 ret和retf ret指令用栈中的数据实现修改IP的内容,从而完成近转移,执行ret指令时相当于执行: retf指令用栈中的数据实现修改CS和IP的内容,从而完成远转移,执行retf指令相当于执行: 在程 阅读全文
posted @ 2020-04-30 22:31 勇闯8 阅读(799) 评论(0) 推荐(0) 编辑
摘要: 转移指令的原理 可以修改IP,或同时修改CS和IP的指令统称为转移指令。 转移行为有很多种不同的分类方法: 根据只修改IP和同时修改CS和IP,可以分为段内转移(jmp ax)和段间转移(jmp 1000:0) 根据指令对IP的修改范围不同,段内转移又分为短转移(IP的修改范围为 128 127)和 阅读全文
posted @ 2020-04-30 22:28 勇闯8 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 数据处理的两个基本问题 数据处理时所有CPU都要面临两个基本问题: 1、要处理的数据在什么地方? 2、要处理的数据有多长? 我们可以定义两个描述性符号reg和sreg,reg代表一个寄存器,sreg代表一个段寄存器。 reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh 阅读全文
posted @ 2020-04-30 22:27 勇闯8 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 定位内存地址的方法 and和or指令 and指令是按位与运算: 代表al中的值和数值00111011B进行按位与运算,然后将结果赋值给寄存器al。and指令可将操作对象的相应位设置为0,其他位不变,如将al的第6位设置为0: or指令是按位或运算,同样的它能将操作对象的对应位设置为1,如将al的第6 阅读全文
posted @ 2020-04-30 22:26 勇闯8 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 包含多个段的程序 在执行汇编程序的时候,不要随便向某个寄存器中赋值,这可能会导致系统错误,虽然现在的操作系统已经完全把硬件保护起来了,但是在安全模式下还是可以执行导致系统崩溃的命令。所以我们在编写汇编程序的时候,要找到一段安全的空间供我们使用,在一般的PC机中,DOS方式下,DOS和其他合法的程序一 阅读全文
posted @ 2020-04-30 22:20 勇闯8 阅读(263) 评论(0) 推荐(0) 编辑
摘要: [BX]和loop指令 [bx] 下列命令可以用寄存器代表偏移地址: 之所以要采用这种方式,而不是直接将偏移地址写在括号中,是因为下列指令编译器是无法成功解释的: 上面这条语句会被编译器理解为: 这种将常量放在括号中的方式只有在debug模式下输入才能成功解释。为了让编译器成功执行赋值操作,需要借助 阅读全文
posted @ 2020-04-30 22:17 勇闯8 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 第一个程序 一个汇编语言程序要执行要进行以下几步: 1、编写汇编源程序,这个过程可以用记事本来完成 2、对源程序进行编译产生目标文件,然后用连接程序对目标文件进行连接,最终生成可执行文件 可执行文件包含两部分: 1、程序(机器指令)和数据(源程序中定义的程序) 2、相关的描述信息(程序大小、占用的内 阅读全文
posted @ 2020-04-30 22:16 勇闯8 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 寄存器 一个CPU由以下几个部分组成: 1、运算器:负责信息处理 2、寄存器:进行信息储存 3、控制器:控制各种器件进行工作 4、内部总线:连接各种器件(外部总线实现CPU和主板其他部件的联系) 通用寄存器 8086CPU的所有寄存器都是16位的,可以存放两个字节,AX、BX、CX、DX这4个寄存器 阅读全文
posted @ 2020-04-30 22:15 勇闯8 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 基础知识 机器语言和汇编语言 机器语言是机器指令的集合,是一列二进制数字,每一种微处理器都有自己的机器指令集。因为机器语言难以记忆,容易出错,故诞生了汇编语言。汇编语言由汇编指令组成,汇编指令是机器指令便于记忆的格式。汇编语言可以由编译器将其编译为机器码,由计算机最终执行。 汇编语言有以下3类指令组 阅读全文
posted @ 2020-04-30 22:12 勇闯8 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 补码 从补数标记方式讨论补码起源 平时我们表示数字时,用正负号来指明到底是正号还是负号,如 500到500我们写成: 这种表示方法是以0为原点展开的。如果从一开始就知道要表示的数字范围,因为这些数字的绝对值不会大于500,我们可以采取一种映射的方式,用000 999来表示这些数字: 这些数字与上述1 阅读全文
posted @ 2020-04-30 22:08 勇闯8 阅读(820) 评论(0) 推荐(0) 编辑