微机原理与接口技术(清华大学课件-全套).ppt

上传人:max****ui 文档编号:22718670 上传时间:2021-05-30 格式:PPT 页数:681 大小:13.18MB
收藏 版权申诉 举报 下载
微机原理与接口技术(清华大学课件-全套).ppt_第1页
第1页 / 共681页
微机原理与接口技术(清华大学课件-全套).ppt_第2页
第2页 / 共681页
微机原理与接口技术(清华大学课件-全套).ppt_第3页
第3页 / 共681页
资源描述:

《微机原理与接口技术(清华大学课件-全套).ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术(清华大学课件-全套).ppt(681页珍藏版)》请在装配图网上搜索。

1、1 微机原理与接口技术 大家好 ! 2 课程目标 掌握: 微型计算机的基本工作原理 汇编语言程序设计方法 微型计算机接口技术 建立微型计算机系统的整体概念,形成微机系统软 硬件开发的初步能力 3 教材及实验指导书 教材: 微机原理与接口技术(第 3版) . 冯博琴,吴宁 主编 . 清华大学出版社 实验指导书 微机原理与接口技术实验指导书 (讲义) 陈文革,吴宁,夏秦编 . 西安交通大学 微机原理与接口技术题解及实验指导(第 3版) . 吴宁,陈文革编 . 清华大学出版社 4 第 1章 微型计算机基础概论 主要内容 : 微机系统的组成 计算机中的编码、数制及其转换 无符号二进制数的运算 算术运算

2、和逻辑运算 运算中的溢出 机器数的表示及运算 基本逻辑门及译码器 5 一、微型计算机系统 微型机的工作原理 微机系统的基本组成 6 1. 计算机的工作原理 冯 诺依曼计算机的工作原理 存储程序工作原理 7 存储程序原理 将计算过程描述为由许多条指令按一定顺序组 成的程序,并放入存储器保存 指令按其在存储器中存放的顺序执行; 由控制器控制整个程序和数据的存取以及程序 的执行。 8 冯 诺依曼计算机体系结构 运算器 存储器 控制器 输入设备 输出设备 9 冯 诺依曼 机的工作过程 内存中的程序 指令 1 指令 2 指令 n 分析 获取操作数 执行 存放结果 程序计 数器 PC 地址 CPU 取出

3、操作数 10 冯 诺依曼 机的工作过程 取一条指令的工作过程: 将指令所在地址赋给程序计数器 PC; PC内容送到地址寄存器 AR, PC自动加 1; 把 AR的内容通过地址总线送至内存储器,经地址译码器译码, 选中相应单元。 CPU的控制器发出读命令。 在读命令控制下,把所选中单元的内容(即指令操作码)读到数 据总线 DB。 把读出的内容经数据总线送到数据寄存器 DR。 指令译码 因为取出的是指令的操作码,故数据寄存器 DR把它送到指令寄存器 IR,然后再送到指令译码器 ID 冯 诺依曼 机的特点和不足 特点: 程序存储,共享数据,顺序执行 属于顺序处理机,适合于确定的算法和数值数据的 处理

4、。 不足: 与存储器间有大量数据交互,对总线要求很高; 执行顺序有程序决定,对大型复杂任务较困难; 以运算器为核心,处理效率较低; 由 PC控制执行顺序,难以进行真正的并行处理。 11 典型的非 冯 诺依曼机结构 数据流驱动的计算机结构 当指令具有所需数据、且输出端没有数据时就可执 行。 12 数据流处理机 存储器 主处理机 数据通道 控制通道 高速数据总线 磁盘存储器 Dataflow Image Processing System 13 2. 系统组成 主机 硬件系统 外设 微机系统 系统软件 软件系统 应用软件 CPU 存储器 输入 /输出接口 总线 14 微处理器 微处理器简称 CPU

5、, 是计算机的核心。 主要包括: 运算器 控制器 寄存器组 15 存储器 定义: 用于存放计算机工作过程中需要操作的数据 和程序。 16 有关内存储器的几个概念 内存单元的地址和内容 内存容量 内存的操作 内存的分类 17 内存单元的地址和内容 内存按单元组织 每单元都对应一个地址,以方便对单元的寻址 10110110 38F04H 内存地址 单元内容 18 内存容量 内存容量: 所含存储单元的个数,以字节为单位 内存容量的大小依 CPU的寻址能力而定 实地址模式下为 CPU地址信号线的位数 19 内存操作 读: 将内存单元的内容取入 CPU, 原单元内容不改变; 写: CPU将信息放入内存单

6、元,单元中原来的内容被覆盖。 20 内存储器的分类 随机存取存储器( RAM) 只读存储器( ROM) 按工作方 式可分为 21 输入 /输出接口 接口是 CPU与外部设备间的桥梁 CPU I/O 接口 外 设 22 接口的分类 串行接口 并行接口 数字接口 模拟接口 输入接口 输出接口 23 接口的功能 数据缓冲寄存; 信号电平或类型的转换; 实现主机与外设间的运行匹配。 24 总线 基本概念 分类 工作原理 常用系统总线标准及其主要技术指标 (具体内容见后续课程) 25 软件系统 软件: 为运行、管理和维护计算机系统或为实现某一功能 而编写的各种程序的总和及其相关资料。 系统软件 应用软件

7、 操作系统 编译系统 网络系统 工具软件 软件 26 二、计算机中的数制和编码 数制和编码的表示 各种计数制之间的相互转换 27 1. 常用计数法 十进制( D) 二进制( B) 十六进制( H) 28 例: 234.98D或( 234.98) D 1101.11B或( 1101.11) B ABCD . BFH或( ABCD . BF) H 29 2. 各种进制数间的转换 非十进制数到十进制数的转换 十进制到非十进制数的转换 二 进制与十六进制数之间的转换 30 非十进制数到十进制数的转换 按相应的权 值表达式展开 例: 1011.11B=1 23+0 22+1 21+1 20+1 2-1+

8、 1 2-2 =8+2+1+0.5+0.25 =11.75 5B.8H=5 161+11 160+8 16-1 =80+11+0.5 =91.5 31 十进制到非十进制数的转换 到二进制的转换: 对整数:除 2取余; 对小数:乘 2取整。 到十六进制的转换: 对整数:除 16取余; 对小数:乘 16取整。 32 二进制与十六进制间的转换 用 4位二进制数表示 1位十六进制数 例: 25.5 = 11001.1B = 19.8H 11001010.0110101B =CA.6AH 33 3. 计算机中的编码 BCD码 用二进制编码表示的十进制数 ASCII码 西文字符编码 34 BCD码 压缩

9、BCD码 用 4位二进制码表示一位十进制数 每 4位之间有一个空格 扩展 BCD码 用 8位二进制码表示一位十进制数,每 4位之间有一 个空格。 35 BCD码与二进制数之间的转换 先转换为十进 制数,再转换二进 制数;反之同 样。 例 : ( 0001 0001 .0010 0101) BCD =11 .25 =( 1011 .01) B 36 ASCII码 西文 字符的编码,一般用 7位二进 制码表示。 D7位为校验位,默认情况下为 0。 要求: 理解校验位的作用 熟悉 0-F的 ASCII码 37 ASCII码的奇偶校验 奇校验 加上校验位后编码中 1 的个数为奇数。 例: A的 ASC

10、II码是 41H( 1000001B) 以奇校验传送则为 C1H( 11000001B) 偶校验 加上校验位后 编码中 1 的个数为偶数。 上例若以偶校验传送,则为 41H。 38 三、无符号二进制数的运算 算术运算 逻辑运算 无符号数 有符号数 二进 制数的运算 39 主要内容 无符号二进 制数的算术运算 无符号数的表达范围 运算中的溢出问题 无符号数的逻辑运算 基本逻辑门和译码器 40 1. 无符号数的算术运算 加法运算 1+1=0(有进位) 减法运算 0-1=1(有借位) 乘法运算 除法运算 41 乘除运算例 00001011 0100 =00101100B 00001011 0100=

11、00000010B 即:商 =00000010B 余数 =11B 42 2. 无符号数的表示范围: 0 X 2 n-1 若运算结果超出这个范围,则产生溢出。 对无符号数:运算时,当最高位向更高位 有进位(或借位)时则产生 溢出。 43 例 : 最高位向前有进位,产生溢出 44 3. 逻辑运算 与、或、非、异或 掌握: 与、或、非门逻辑符号和逻辑关系(真值表); 与非门、或非门的应用。 45 “与”、“或”运算 与 运算: 任何数和 0 相 与 ,结果为 0。 或 运算: 任何数和 1 相 或 ,结果为 1。 不能单独使用,要紧跟在相应的算术运算指令 之后; 247 逻辑运算和移位指令 248

12、指令类型 逻辑运算 与,或,非,异或 移位操作 非循环移位,循环移位 249 一、 逻辑运算 逻辑运算指令对 操作数的 要求大多与 MOV 指令 相同。 非 运算指令 要求操作数 不能是立即数; 除非运算指令 外,其余指令的执行都会 使标志位 OF=CF=0 250 1.“ 与 ” 指令: 格式: AND OPRD1, OPRD2 操作: 两操作数相 与 ,结果送目标地址。 251 “ 与 ” 指令的应用 实现两操作数 按位相与的 运算 AND BL, SI 使目标操作数的 某些位不变,某些位清零 AND AL, 0FH 在操作数 不变的 情况下使 CF和 OF清零 AND AX, AX 25

13、2 “ 与 ” 指令应用例 从地址为 3F8H 端口中读入一个字节数, 如果该数 bit1位为 1,则可从 38FH端口将 DATA为首地址的 一个字输出,否则就不 能进行数 据传送。 编写相应的 程序段。 253 “ 与 ” 指令应用例 开 始 取待输出数的 偏移地址 读入状态字 测试 bit1位状态 Bit1=1? 取输入口地址 取输出口地址 输出一个字 N Y 254 “ 与 ” 指令应用例 LEA SI, DATA MOV DX, 3F8H WATT: IN AL, DX AND AL, 02H JZ WATT ; ZF=1转移 MOV DX, 38FH MOV AX, SI OUT

14、DX, AX 255 2.“ 或 ” 运算指令 格式: OR OPRD1, OPRD2 操作: 两操作数相或,结果送目标地址 256 “ 或 ” 指令的应用 实现两操作数 相 或的 运算 OR AX, DI 使某些位不变,某些位置 1 OR CL, 0FH 在不改变操作数的 情况下使 OF=CF=0 OR AX, AX 257 “ 或 ” 指令的应用例 OR AL, AL JPE GOON OR AL, 80H GOON: . PF=1转移 258 “ 或 ” 指令的应用 将一个二进 制数 9变为字 符 9 如何实现 ? 259 3.“ 非 ” 运算指令 格式: NOT OPRD 操作: 操作

15、数按位取反再送回原地址 注: 指令中的操作数不能是立即数 指令的执行对标志位无影响 例: NOT BYTE PTRBX 260 4.“ 异或 ” 运算指令 格式: XOR OPRD1, OPRD2 操作: 两操作数相 异或 ,结果送目标地址 例: XOR BL, 80H XOR AX, AX 261 5.“ 测试 ” 指令 格式: TEST OPRD1, OPRD2 操作: 执行 与 运算,但运算的结果不送回目 标地址。 应用: 常用于测试某些位的状态 262 例: 从地址为 3F8H的 端口中读入一个字节数,当 该数的 bit1, bit3, bit5位同时为 1时 ,可 从 38FH端口将

16、 DATA为首地址的一个字输出, 否则就不能进行数 据传送。 编写相应的 程序段。 263 源程序代码: LEA SI, DATA MOV DX, 3F8H WATT: IN AL, DX MOV DX, 38FH MOV AX, SI OUT DX, AX AND AL, 2AH CMP AL, 2AH JNZ WATT TEST AL, 02H JZ WATT ; ZF=1转移 TEST AL, 08H JZ WATT TEST AL, 20H JZ WATT AND AL, 2AH XOR AL, 2AH JNZ WATT 264 二、移位指令 非循环移位指令 循环移位指令 注: 移动一

17、位时由指令直接给出; 移动两位及以上,则移位次数由 CL指定。 265 1. 非循环移位指令 逻辑左移 算术左移 逻辑右移 算术右移 266 算术左移和逻辑左移 算术左移指 令: SAL OPRD, 1 SAL OPRD, CL 逻辑左移指 令: SHL OPRD, 1 SHL OPRD, CL 有符号数 无符号数 267 逻辑右移 格式: SHR OPRD, 1 SHR OPRD, CL 0 CF 无符号数 的右移 268 逻辑右移例: MOV AL, 68H MOV CL, 2 SHR AL, CL 0 CF 0 1 1 0 1 0 AL 0 0 0 0 0 1 1 0 1 0 0 AL

18、CF 0 0 0 0 0 1 1 0 1 0 AL CF 0 0 移动 1次 移动 2次 269 算术右移 格式: SAR OPRD, 1 SAR OPRD, CL 有符号数 的右移 CF 270 非循环移位指令的应用 左移可实现乘法运算 右移可实现除法运算 教材 p121例 271 2. 循环移位指令 不带进位位的循环移位 带进位位的循环移位 左移 ROL 右移 ROR 左移 RCL 右移 RCR 指令格式、对操作数的要求与非循环移位指令相同 272 不带进位位的循环移位 CF CF 273 带进位位的循环移位 CF CF 274 循环移位指令的应用 用于对某些位状态的测试; 高位部分和低位

19、部分的交换; 与非循环移位指令一起组成 32位或更长字 长数的移位。 P124例 3- 34 P124例 3- 35 275 程序功能 将 1000H开始存放的 4个压缩 BCD码转换 为 ASCII码存放在 3000H开始的单元中 去 。 12H 34H 56H 78H 1000H 3000H 276 程序例 MOV SI,1000H MOV DI,3000H MOV CX,4 Next: MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI MOV AL,BL PUSH CX MOV CL,4 SHR AL,CL OR AL,3

20、0H MOV DI,AL INC DI INC SI POP CX DEC CX JNZ Next HLT 277 串操作指令 278 串操作指令说明 针对数据块或字符串的操作; 可实现存储器到存储器的数据传送; 待操作的数据串称为源串,目标地址称为 目标串。 279 串操作指令的特点 源串一般存放在数据段,偏移地址由 SI指定。允许段 重设; 目标串必须在附加段,偏移地址由 DI指定; 指令自动修改地址指针,修改方向由 DF决定。 DF=0 DF=1 数据块长度值由 CX指定 可增加自动重复前缀以实现自动修改 CX内容。 增地址方向; 减地址方向; 280 重复前缀 无条件重复 REP 条件

21、重复 REPE 相等重复 REPZ 为零重复 REPNE 不相等重复 REPNZ 不为零重复 CX0 ZF=1 CX0 ZF=0 CX0 重复 281 串操作指令流程 (以传送操作为例 ) 取源串地址 取目标串地址 设串长度 传送一个字节或字 修改地址指针 修改串长度值 传送完否? N Y 设操作方向 282 串操作指令 串传送 MOVS 串比较 CMPS 串扫描 SCAS 串装入 LODS 串送存 STOS 283 1. 串传送指令 格式: MOVS OPRD1, OPRD2 MOVSB MOVSW 串传送指令常与无条件重复前缀连用 284 串传送指令 对比用 MOV指令和 MOVS指令实现

22、将 200个字节数据从内存的一个区域送到 另一个区域的程序段。 285 串传送指令例 用串传送指令实现 200个字节数据的传送: LEA SI, MEM1 LEA DI, MEM2 MOV CX, 200 CLD REP MOVSB HLT 286 2. 串比较指令 格式: CMPS OPRD1, OPRD2 CMPSB CMPSW 串比较指令常与条件重复前缀连用,指令的执 行不改变操作数,仅影响标志位。 前缀的操作对标志位不影响 287 串比较指令例 测试 200个字节数据是否传送正确: LEA SI, MEM1 LEA DI, MEM2 MOV CX, 200 CLD REPE CMPSB

23、 TEST CX, 00FFH JZ STOP DEC SI MOV AL, SI MOV BX, SI STOP: HLT 288 3. 串扫描指令 格式: SCAS OPRD SCASB SCASW 执行与 CMPS指令相似的操作,只是这里的源 操作数是 AX或 AL 目 标 操作数 289 串扫描指令的应用 常用于在指定存储区域中寻找某个关键字。 290 串装入指令 格式: LODS OPRD LODSB LODSW 操作: 对字节: 对 字: 源操作数 DS:SI DS:SI AL AX 291 4. 串装入指令 用于将内存某个区域的数据串依次装入累加 器,以便显示或输出到接口。 LO

24、DS指令一般不加重复前缀。 292 5. 串存储指令 格式: STOS OPRD STOSB STOSW 操作: 对字节: AL 对 字: AX 目 标 操作数 ES:DI ES:DI 293 串存储指令的应用 常用于将内存某个区域置同样的值 此时: 将待送存的数据放入 AL(字节数)或 AX(字数据 ); 确定操作方向(增地址 /减地址)和区域大小(串 长度值); 使用串存储指令 +无条件重复前缀,实现数据传送 。 294 串存储指令例 内存某个区域清零 将内存某单元清零 设计思想: 区域首地址送 ES: DI 串长度送 CX 置方向标志 DF 0送累加器 AL 执行串送存指令 295 程序

25、控制指令 转移指令 循环控制 过程调用 中断控制 296 程序的执行方向 程序控制类指令的本质是: 控制程序的执行方向 决定程序执行方向的因素: CS, IP 控制程序执行方向的方法: 修改 CS 和 IP ,则程序转向另一个代码段执行; 仅修改 IP,则程序将改变当前的执行顺序,转向本 代码段内其它某处执行。 297 一、转移指令 无条件 转移指令 无条件转移到目标地址,执行新的指令 有条件转移指令 在具备一定条件的情况下转移到目标地址 通过修改指令的 偏移地址 或 段地址及偏移地址 实现程序的转移 298 1. 无条件转移指令 格式: JMP OPRD 目标地址 与 JMP在同 一代码段

26、与 JMP不在同 一代码段 原则上可实现在整个内存空间的转移 299 无条件段内转移 转移的 目标地址 在当前代码段内,段地址不 改 变。 即: 目标地址 是 16位偏移地址。 指令中直接给出 目标地址 由指令中的寄存器或 存储器操作数指出目 标地址 段内直接转移 段内间接转移 300 段内直接转移 转移的目标地址由指令直接给出 格式: JMP Label 近地址标号 301 段内直接转移示图 JMP Label 代 码 段 位移量 下一条要执行指令的偏移地址 =当前 IP+位移量 JMP Label 302 段内间接转移 段内间接转移 转移的目标地址存放在某个 16位寄存器或存储器 的某两个

27、单元中 例: JMP BX 若: BX=1200H 则:转移的目标地址 =1200H JMP 代 码 段 1200H MOV 303 段内间接转移例 JMP WORD PTRBX 设: BX=1200H JMP 代 码 段 数 据 段 BX=1200 XXH XXH IP 指令码 304 无条件段间转移 转移的 目标地址 不在当前代码段内。 目标地址 为 32位,包括段地址和偏移地址。 指令中直接给出 目标地址 由指令中的 32位存储器 操作数指出目标地址 段间直接转移 段间间接转移 305 段间直接转移 段内直接转移 转移的目标地址由指令直接给出 格式: JMP FAR Label 远地址标

28、号 306 段间直接转移示图 JMP Label 代 码 段 1 Label与 JMP 之间的位移量 代 码 段 2 XXH XXH XXH XXH IP CS 307 段间间接转移 段内间接寻址 转移的目标地址由指令中的 32位操作数给出 例: JMP DWORD PTRBX XXH XXH XXH XXH BX IP CS JMP 指令码 代 码 段 1 代 码 段 2 数 据 段 308 无条件转移指令例 (1) 2000:0100 MOV AX,1200H (2) 2000:0103 JMP NEXT (3) 2000:0120 NEXT: MOV BX,1200H (4) JMP B

29、X (5) 2000:1200 309 无条件转移指令例 MOV SI, 1122H MOV WORD PTRSI, 0120H ADD SI, 2 MOV WORD PTRSI, 0122H JMP DWORD PTRSI-2 WORD PTRSI JMP 1122H 代 码 段 数 据 段 01H 22H 20H 01H IP CS IP 310 2. 条件转移指令 在满足一定条件下,程序转移到目标地 址继续执行 条件转移指令均为段内短转移,即转移 范围为: -128-+127 311 条件转移指令的应用 几种条件转移指令的应用 JC/JNC 判断 CF的状态。常用于比大小 JZ/JNZ

30、判断 ZF的状态。常用于循环体的结束判断 JO/JNO 判断 OF的状态。常用于有符号数溢出的判断 JP/JPE 判断 PF的状态。用于判断运算结果低 8位中 1的个数是否为偶数 JA/JAE/JB/JBE 判断 CF或 CF+ZF的状态。常用于无符号数的大小比较 312 转移指令例 统计内存数据段中以 TABLE为首地址的 100个 8位符号数中正数、负数和零元数 的个数。 313 转移指令例(流程图) 将存放各元素个 数的单元清零 取首地址 设串长度 取一个字节数 正数个数加 1 零元素加 1 为负? 为零? 负数个数加 1 N Y N Y p13 3 314 二、循环控制指令 循环范围:

31、 以当前 IP为中心的 -128 +127范围内循环。 循环次数由 CX寄存器指定。 循环指令: LOOP *LOOPZ *LOOPNZ 无条件循环指令 条件循环指令 315 无条件循环指令 格式: LOOP LABEL 循环条件: CX 0 操作: DEC CX JNZ 符号地址 P133例 3-44 316 三、过程调用和返回 用于调用一个子过程; 子过程由程序员预先设计 并装入内存 子过程执行结束后要返回 原调用处 调用程序 断 点 入 口 地 址 子程序 317 调用指令的执行过程 保护断点; 将调用指令的下一条指令的地址(断点)压入堆栈 获取子过程的入口地址; 子过程第 1条指令的偏

32、移地址 执行子过程,含相应参数的保存及恢复; 恢复断点,返回原程序。 将断点偏移地址由堆栈弹出 318 过程调用 段内调用 段间调用 段内直接调用 段内间接调用 段间直接调用 段间间接调用 319 1. 段内调用 被调用程序与调用程序在同一代码段 调用前只需保护断点的偏移地址 格式: CALL NEAR PROC 执行过程: 近过程名 代码 段 1 调用程序 被调用程序 代 码 段 1 将断点的偏移地址压入堆栈 根据过程名找子程序入口 320 段内调用例 ( 1) CALL TIMRE ( 2) CALL WORD PTRSI 直接调用 间接调用 44H 33H CALL 代 码 段 数 据

33、段 设: SI=1200H CS=6000H 1200 H 执行第( 2)条指令后: 6000H CS = 3344H IP = 321 2. 段间调用 子过程与原调用程序不在同一代码段 断点保护时的压栈顺序: 先将断点的 CS压栈,再压入 IP。 调用前需保护断点的段基地址和偏移地址 322 段间调用例 格式: CALL FAR PROC 格式例: CALL FAR TIMRE CALL DWORD PTRSI XXH XXH CALL 代 码 段 数 据 段 S I XXH XXH CS IP 323 3. 返回指令 功能: 从堆栈中弹出断点地址,返回原程序 格式: RET RET指令一般

34、位于子程序的最后。 324 四、中断指令 中断 中断源 中断的类型 中断指令 引起 CPU产生一次中断的指令 325 中断与过程调用: 中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好 ; 响应中断请求不仅要保护断点地址,还要保护 FLAGS内容; 调用指令在指令中直接给出子程序入口地址, 中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中。 326 1. 中断指令 格式: INT n 说明: n4 中断类型码 n=0 255 n 4 XXH XXH XXH XXH 入口的段地址 入口的偏移地址 存放中断服务子程序入口 地址的单元的偏移地址 代 码 段 数 据 段 该单

35、元在数据段,段地址 =DS 327 中断指令的执行过程 将 FLAGS压入堆栈; 将 INT指令的下一条指令的 CS、 IP压栈; 由 n 4得到存放 中断向量的地址; 将中断向量(中断服务程序入口地址)送 CS 和 IP寄存器; 转入中断服务程序。 328 中断指令的执行过程 n 4 22H 11H 00H 67H IP CS 68122H MOV 代 码 段 数 据 段 堆 栈 段 SP FLAGSH FLAGSL IPH CSL CSH IPL SP SP SP 329 中断指令例 执行程序段: CS IP 6200H:0110H INT 21H 6200H:0112H MOV AX,

36、BX 12H 01H 00H 62H SP=1200 FLAGSL FLAGSH SP=11FA 执行 INT 指令后 堆 栈 段 330 中断指令例 执行 INT 21H指令后 IP=21H4 CS=( 21H4) +2 0084H 23H 11H 00H 20H IP CS 数 据 段 代 码 段 XX 21123H 中断服务子程序 331 2. 溢出中断指令 格式: INTO 若 OF=1,则启动一个类型为 4的中断过程 ,给出 一个出错标志 ,如果 OF=0,不做任何操作。 INTO指令通常安排在有符号数加减运算指令之 后。 相当于 INT 4 332 3. 中断返回指令 格式: IR

37、ET 中断服务程序的最后一条指令,负责 恢复断点 恢复标志寄存器内容 333 六、处理器控制指令 对标志位的操作 与外部设备的同步 说明见 p139表 334 结束语: 掌握: 指令的格式及意义; 指令对操作数的要求及对标志位的影响; 指令的应用。 335 第 4章 汇编语言程序设计 336 主要内容 汇编语言源程序的结构 汇编语言语句格式 伪指令 功能调用 汇编语言程序设计 337 4.1 汇编语言源程序 了解: 汇编语言源程序的结构 汇编语言语句类型及格式 338 一、汇编语言源程序结构 339 1. 汇编语言源程序与汇编程 序 汇编语言源程序 汇编程序 用助记符编写 汇编程序 汇编语言源

38、程序 机器语言目标程序 源程序的编译程序 340 2. 汇编语言程序设计与执行过 程 输入汇编语言源程序( EDIT) 汇编( MASM) 链接( LINK) 调试( TD) 源文件 . ASM 目标文件 .OBJ 可执行文件 .EXE 最终程序 341 二、汇编语言语句类型及格式 342 1. 汇编语言语句类型 指令性语句 指示性语句 CPU执行的语句,能 够生成目标代码 CPU不执行,而由汇编 程序执行的语句,不生 成目标代码 343 2. 汇编语言语句格式 指令性语句: 标号: 前缀 助记符 操作数 , 操作数 ;注释 指令的符号地址 标号后要有冒号 操作码 注释前加分号 344 指示性

39、语句格式 名字 伪指令助记符 操作数 ,操作数, ;注释 变量的符号地址 其后不加冒号 指示性语句中至 少有一个操作数 345 3. 标号、名字 标号后有冒号,在指令性语句前;名字后不加 冒号,在指示性语句前。 英文字母、数字及专用字符组成 ,最大长度不 能超过 31个 ,且不能由数字打头 ,不能用保留字 (如寄存器名 ,指令助记符 ,伪指令 )。 346 4. 操作数 寄存器 存储器单元 常量 变量或标号 表达式 347 常 量 数字常量 字符串常量 例: A MOV AL, A 例: ABCD 汇编时被译成对应的 ASCII 码 41H, 42H, 43H, 44H 用单引号引起的字符或字

40、符串 348 变 量 代表内存中的数据区,程序中视为存储器 操作数 变量的属性: 变量所在段的段地址 变量单元地址与段首地址之 间的位移量 。 字节型 、 字型和双字型 段 值 偏移量 类 型 349 表达式 算术运算 逻辑运算 *关系运算 取值运算和属性运算 其它运算 350 算术运算和逻辑运算符 算术运算符 +, -, *, /, MOD 逻辑运算符 AND, OR, NOT, XOR 例: MOV AL, 8 AND 4 MOV AL, 8+4-1 351 取值运算符 取得其后变量或标号的偏移地址 取得其后变量或标号的段地址 TYPE 取 变量的类型 LENGTH 取所定义存储区的长度

41、SIZE 取所定义存储区的字节数 用于分析存储器操作数的属性 获取变量的属性值 OFFSET SEG 352 取值运算符例 MOV AX, SEG DATA MOV DS, AX MOV BX, OFFSET DATA LEA BX, DATA 等价于 353 取值运算符例 若 BUFFER存储区用如下伪指令定义: BUFFER DW 200 DUP(0) 则: TYPE BUFFER 等于 2 LENGTH BUFFER 等于 200 SIZE BUFFER 等于 400 354 属性运算符 用于指定其后存储器操作数的类型 运算符: PTR 例: MOV BYTR PTRBX, 12H 35

42、5 其它运算符 方括号: 段重设符 段寄存器名: 方括号中内容为操作数的偏移地址 用于修改默认的段基地址 356 4.2 伪指令 掌握: 伪指令的格式及实现的操作 伪指令的应用 357 伪指令 由汇编程序执行的 指令系统 作用: 定义变量; 分配存储区 定义逻辑段; 指示程序开始和结束; 定义过程等。 358 常用伪指令 数据定义伪指令 符号定义伪指令 段定义伪指令 结束伪指令 过程定义伪指令 宏命令伪指令 359 一、数据定义伪指令 用于定义数据区中变量的类型及大小 格式: 变量名 伪指令助记符 操作数, ; 注释 符号地址 定义变量类型 定义变量值 及区域大小 360 1. 数据定义伪指令

43、助记 符 DB 定义的变量为字节型 DW 定义的变量为字类型(双字节) DD 定义的变量为双字型( 4字节) DQ 定义的变量为 4字型( 8字节 ) DT 定义的变量为 10字节型 361 数据定义伪指令例 DATA1 DB 11H, 22H, 33H, 44H DATA2 DW 11H, 22H, 3344H DATA3 DD 11H*2, 22H, 33445566H 以上变量在内存 中的存放形式 362 数据定义伪指令例 _变量在内存中的分 布 DATA1 11 22 33 44 DATA2 22 44 11 00 00 33 DATA3 22 0 0 22 0 0 0 0 XX 66

44、 55 44 33 363 数据定义伪指令的几点说 明 伪指令的性质决定所定义变量的类型; 定义字符串必须用 DB伪指令 例: DATA1 DB ABCD, 66H A B C D 41H 42H 43H 44H 66H 364 2. 重复操作符 作用: 为一个数据区的各单元设置相同的初值 目的: 常用于声明一个数据区 格式: 变量名 伪指令助记符 n DUP( 初值, ) 例: BW 20 DUP( 0) M1 DB 10 DUP( 0) 365 3. “ ? ” 的作用 表示随机值,用于预留存储空间 MEM1 DB 34H, A,? DW 20 DUP(?) 预留 40个字节单元,每单元为

45、随机值 随机数 占 1个字节单元 366 数据定义伪指令例 M1 DB How are you? M2 DW 3 DUP(11H), 3344H DB 4 DUP(?) M3 DB 3 DUP( 22H, 11H,?) 变量在内存中的分区 367 数据定义伪指令例 M1 H o w a M2 11H 11H 00H 44H 33H r e y o u ? 11H 00H 00H 随机数 M3 11H 22H 11H 22H 11H 22H XX XX XX XX XX XX XX 368 二、符号定义伪指令 格式: 符号名 EQU 表达式 操作: 用符号名取代后边的表达式,不可重新定义 例:

46、CONSTANT EQU 100 VAR EQU 30H+99H EQU说明的表达式不占用内存空间 369 三、段定义伪指令 说明逻辑段的起始和结束; 说明不同程序模块中同类逻辑段之间的联系形 态 370 段定义伪指令格式 段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS 说明逻辑 段的起点 说明不同模块中同名 段的组和连接方式 371 定位类型 PARA: 段的起点从节边界开始 ( 16个字节为 1节) BYTE: 段的起点从存储器任何地址开始 WORD: 段的起点从偶地址开始 PAGE: 段的起点从页边界开始 ( 256个字节为 1页) 372 组合类型 与其它模块中的同名段

47、在满足定位类型的前提 下具有的组合方式: NONE: 不组合 PUBLIC: 依次连接(顺序由 LINK程序确定) COMMON: 覆盖连接 STACK: 堆栈段的依次连接 AT 表达式:段定义在表达式值为段基的节边界 MEMORY: 相应段在同名段的最高地址处。 373 类别 不同模块连接时将相同类别的段放在连 续的内存区域中 374 段定义伪指令例 DATA SEGMENT MEM1 DB 11H, 22H MEM2 DB Hello! MEM3 DW 2 DUP(?) DATA ENDS 变量在逻辑段 中的位置就代 表了它的偏移 地址 表示变量所在 逻辑段的段地 址 表 示 变量 的 类

48、型 375 四、设定段寄存器伪指令 说明所定义逻辑段的性质 格式: ASSUME 段寄存器名 :段名 ,段寄存器名 :段名, 376 五、结束伪指令 表示源程序结束 格式: END 标号 377 汇编语言源程序结构 数据段名 SEGMENT 数据段名 ENDS 附加段名 SEGMENT 附加段名 ENDS 堆栈段名 SEGMENT 堆栈段名 ENDS 代码段名 SEGMENT 代码段名 ENDS END 378 一个完整源程序结构例 DSEG SEGMENT DATA1 DB 1, 2, 3 DUP(?) DATA2 DW 1234H DSEG ENDS ESEG SEGMENT DB 20

49、DUP(?) ESEG ENDS SSEG SEGMENT STACK STACK DB 200 DUP(?) SSEG ENDS 379 一个完整源程序结构例 CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG, ES: ESEG, SS: SSEG START: MOV AX, DSEG MOV DS, AX MOV AX, ESEG MOV ES, AX MOV AX, SSEG MOV SS, AX CSEG ENDS END START 源程序 代码 段寄存器初始化 将段地址送 相应的段寄存器 380 六、过程定义伪指令 用于定义一个过程体 格式: 过程名

50、PROC NEAR / FAR RET 过程名 ENDP P157例 过程入口的 符号地址 过程定义及调用例 定义延时子程序 DELAY PROC PUSH BX PUSH CX MOV BL, 2 NEXT: MOV CX, 4167 W10M: LOOP W10M DEC BL JNZ NEXT POP CX POP BX RET DELAY ENDP 381 调用延时子程序: CALL DELAY 382 七、宏命令伪指令 源程序中由汇编程序识别的具有独 立功能的一段程序代码 格式: 宏命令名 MACRO ENDM 宏体 宏 383 八、其它伪指令 段内程序代码或变量的起始偏移地址 格式

51、: ORG 表达式 例: ORG 2000H 计算值为 非负常数 ORG 384 其它伪指令 NAME-为目标程序设定一个名字 格式: NAME 模块名 TITLE-为程序清单指定打印标题 格式: TITLE 标题名 385 4.3 功能调用 DOS 功能调用 BIOS功能调用 386 DOS 功能调用 包含多个子功能的功能包; 用软中断指令调用,中断类型码固定为 21H; 各子功能采用功能号来区分。 387 DOS 功能调用 设备 管理 目录 管理 文件管理 其它 388 DOS 功能调用 调用格式: MOV AH, 功能号 INT 21H 389 一、单字符输入 调用方法: MOV AH,

52、 01 INT 21H 输入的字符在 AL中 390 单字符输入例 GET_KEY: MOV AH,1 INT 21H CMP AL,Y JZ YES CMP AL,N JZ NO JMP GET_KEY YES: NO: 交互式应 答程序 391 二、字符串输入 注意问题: 调用格式 字符输入缓冲区的定义 392 1. 调用格式 功能号 OAH 字符串在内存中的存放地址 INT 21H AH DS: DX 393 2. 定义字符缓冲区 用户自定义缓冲区格式: 0DH N1 N2 整个缓冲区 最大可键入字符数 实际键入字符数 存放键入的字符 存放字符个数: 255 394 输入字符串程序段 D

53、AT1 DB 20,?, 20 DUP(?) LEA DX, DAT1 MOV AH, 0AH INT 21H 在数据段 中定义 395 输入缓冲区 14H ? 20个字节 定义后的输入缓冲 区初始状态: 396 三、单字符显示输出 功能号 O2H 待输出字符 INT 21H AH DL 397 单字符显示输出例 MOV AH, 02 MOV DL, 41H INT 21H 执行结果: 屏幕显示 A 398 四、字符串输出显示 功能号 O9H 待输出字符串的偏移地址 INT 21H AH DS: DX 399 字符串输出显示 被显示的字符串必须以 $ 结束 ,且所显 示的 内容不应出现非可见的

54、 ASCII码 400 字符串输出显示例 DATA SEGMENT MESS1 DB Input String:, 0DH, 0AH,$ DATA ENDS CODE SEGMENT MOV AH, 09 MOV DX, OFFSET MESS1 INT 21H 401 4.4 汇编语言程序设计 设计步骤: 根据实际问题抽象出数学模型 确定算法 画程序流程图 分配内存工作单元和寄存器 程序编码 调试 402 程序流程图符号 起始: 功能: 判断: 子过程: 403 汇编语言程序结构 顺序结构 循环结构 先判定型 后判定型 分枝结构 单分枝 多分枝 子程序结构 404 本章注意点 完整的汇编语言

55、源程序结构 定义逻辑段,说明段的含义,初始化段寄存器 伪指令 数据定义方式 字符及字符串的输入和显示输出 字符输入缓冲区的定义,输出字符串的定义 源程序的编写 几种结构(顺序、循环、分枝等) 405 第 5章 存储器 系统 406 主要内容: 存储器系统的概念 半导体存储器的分类及其特点 半导体存储芯片的外部特性及其与系统的连接 存储器接口设计(存储器扩展技术) 高速缓存 407 5.1 概 述 主要内容: 存储器系统及其主要技术指标 半导体存储器的分类及特点 两类半导体存储器的主要区别 408 一、存储器系统 409 1. 存储器系统的一般概念 将两个或两个以上速度、容量和价格各不相同 的存储器用硬件、软件或软硬件相结合的方法 连接起来 系统的存储速度接近最快的存储器,容量接近 最大的存储器。 构成存储系统。 410 2. 两种存储系统 在一般计算机中主要有两种存储系统: Cache存储系统 主存储器 高速缓冲存储器 虚拟存储系统 主存储器 磁盘存储器 411 Cache存储系统 对程序员是透明的 目标: 提高存储速

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!