1 / 56

微机原理、汇编与接口技术

微机原理、汇编与接口技术. 2007. 6. 13. 朱定华. 2008.8. 第一章 微型计算机基础知识. 1.1. 计算机的数和编码. 1.2. 逻辑单元与逻辑部件. 1.3. 微型计算机的结构和工作原理. 1.4. 8086/8088 微处理器. 1.5. 8086/8088 的存储器结构与堆栈. 1.1.1 计算机中的数制. 常用数制 ---- 二 , 十 , 十六进制. 为了区别 3 种不同数制,约定. 目前在计算机中,数几乎全部用二进制表示 为书写方便 , 微机中的二进制数用十六进制数缩写

Download Presentation

微机原理、汇编与接口技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 微机原理、汇编与接口技术 2007. 6. 13 朱定华 2008.8

  2. 第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈

  3. 1.1.1 计算机中的数制 常用数制----二,十,十六进制 为了区别3种不同数制,约定 • 目前在计算机中,数几乎全部用二进制表示 • 为书写方便,微机中的二进制数用十六进制数缩写 • 人们最熟悉、最常用的是十进制数 • 数后加B表示二进制数 • 带D或不带字母符号表示十进制数 • 带H表示十六进制数

  4. 十进制、二进制、十六进制数之间的关系表

  5. 数制间转换 二进制整数→十六:从右(最低位)向左将二进制数4位1组划分,最后一组若不足4位则在其左边补0,每组用1位十六进制数表示 十六→二:用4位二进制数代替1位十六进制数 (1)二←→十六 如: 1111111000111B → 1 1111 1100 0111B → 0001 1111 1100 0111B = 1FC7H 如: 3AB9H = 0011 1010 1011 1001B

  6. 数制间转换 十六→十:将十六进制数按权展开相加 十进制整数→十六:除16取余法 (2)十六←→十 如:1F3DH=163×1+162×15+161×3+160×13 =4096×1+256×15+16×3+1×13 =4096+3840+48+13=7997 如: 38947=9823H 16 38947 3 16 2434 2 16 152 8 16 9 9 0 余数倒序排列

  7. 1.1.2 符号数的表示方法 • 用数的符号和数值部分一起编码的方法表示符号数 • 只有8位(字节)、16位(字)或32位(双字)机器数的最高位才是符号位。最高位为0→正数,为 1→负数 • 区分:机器数、真值、无符号数 • 掌握符号数的三种常用表示法:原码,反码,补码

  8. →数值用其绝对值,正数的符号位用0表示,负数的符号位用1表示→数值用其绝对值,正数的符号位用0表示,负数的符号位用1表示 (1)原码 如: X1= 105=+1101001B [X1]原=01101001B X2=-105=-1101001B [X2]原=11101001B

  9. 注: • 原码表示的数,8位数中,D7位为符号位,其余7位为数值位(为真值的绝对值) • 8位原码数的数值范围为FFH~7FH(-127~127);16位原码数的数值范围为FFFFH~7FFFH(-32767~32767) • 原码表示简单易懂,且与真值转换方便,但内部运算复杂,为简化计算机结构,引进了反码和补码

  10. →正数的反码与原码相同;负数的反码为它的绝对值连同符号位按位取反→正数的反码与原码相同;负数的反码为它的绝对值连同符号位按位取反 注: 一个负数的反码的数值部分并不是其真值的绝对值,要按位取反才能求得真值的绝对值 (2)反码 如: X1= 105=+1101001B [X1]反=01101001B X2=-105=-1101001B [X2]反=10010110B

  11. (3)补码 →正数的补码与原码相同;负数的补码为其绝对值的补数 • 补数有两种求法: • 按位取反后再加1 • 从最低位向最高位扫描,保留直至第一个“1”的所有“0”位,第一个“1”左边各位按位取反 • 如:X1= 105=+1101001B [X1]补=01101001B • X2=-105=-1101001B [X2]补=10010111B • 对补码表示的负数求补可以得到其绝对值 • 如: [-105]补=10010111B=97H • 求补,得:01101001=69H=105,即补码表示的机器数97H的真值是-69H(=-105)

  12. 注: • 一个补码数,若最高位为0,则该数即为此数的绝对值;若最高位为1,则其补数为该数的绝对值 • 8位补码数的范围:80H~7FH(-128~127).16位补码数的范围:8000H~7FFFH(-32768~32767) • 补码数80H和8000H的最高位既代表了符号为负又代表了数值为1 • 1个二进制补码数的符号位向左扩展若干位后,所得到的补码数的真值不变 • 如:[68]补=44H→字节,[68]补=0044H→字 • [-68]补= BCH →字节,[-68]补= FFBCH→字 • 微机中,符号数用补码表示!

  13. 1.1.3 二进制数的加减运算 二进制加法规则: 二进制减法规则: 计算机把机器数均当作无符号数进行运算,即符号位也参与运算 0-0=0 1-0=1 1-1=0 0-1=1 →借位1 0+0=0 0+1=1+0=1 1+1=0 →进位1

  14. 1 ) 两个无符号数相加----和为正数.当和超过其位数所允许的范围时,向更高位进位,用CF表示 0111 1111 + 1010 0000 0011 1011 + 1010 0100 10001 1111 1101 1111 进位 (1)无符号数的运算 如: 59+164=3BH + 0A4H127+160=7FH+A0H =0DFH =11FH=287 无进位,CF=0 有进位,CF=1

  15. 0000 1010 - 1100 0000 1100 0000 - 0000 1010 10100 1010 1011 0110 借位 2 )两个无符号数相减----被减数大于或等于减数,无借位,结果为正;被减数小于减数,有借位,结果为负。 如: 结论:对无符号数进行减法运算,其结果的符号用进位来判别:CF=0(无借位)结果为正;CF=1(有借位)结果为负 192-10=C0H-0AH =B6H =182 无借位,CF=0 10-192=0AH-C0H =-B6H=-182 有借位,CF=1

  16. 两数进行运算,结果超出表示范围会产生溢出;用OF表示两数进行运算,结果超出表示范围会产生溢出;用OF表示 0110 1001 + 0011 0010 1001 1011 1001 0111 + 1100 1110 10110 0101 进位 (2)符号数的运算 =155 →视为无符号数,结果正确 如:105+50 = 155 >127,超出范围,产生溢出 又如:-105-50 = -155 <-128 ,超出范围,产生溢出 =-65H→结果为负,错误,溢出,0F=1 =65H→结果为正,错误,溢出,0F=1 =-155 →将进位视为符号,结果正确

  17. 1100 1110 + 1111 1011 11100 1001= -00110111B= -55 进位丢失 结果正确,无溢出 • 说明: • 将多位二进制数拆成多部分运算时,数的低位部分均为无符号数,只有高位部分才为符号数 • 注意区分进位与溢出 • 溢出不同于补码运算中的进位或借位丢失 • 如: • -50-5 = -55

  18. -50-5 -105-50 如:105+50 1100 1110 + 1111 1011 0110 1001 + 0011 0010 1001 0111 + 1100 1110 1 1100 1001 1001 1011 1 0110 0101 CY=1,CS=1 CY=0,CS=1 CY=1,CS=0 OF=1⊕1=0, 无溢出 OF=0⊕1=1, 有溢出 OF=1⊕0=1, 有溢出 判断补码运算有无溢出的方法: 设符号位向进位位的进位为CY,数值部分向符号位的进位为CS,则溢出判别式为: OF=CY ⊕ CS 当OF=1时,有溢出;当OF=0时,无溢出

  19. 1.1.4 二进制数的逻辑运算与逻辑电路 (1)逻辑非→按位求反 (2)逻辑乘∧(逻辑与)→按位求“与” 如:A=01100001B,B=11001011B A=10011110B,B=00110100B 规则:0∧0=0,0∧1=0,1∧0=0,1∧1=1 如:01100001B∧11001011B=0100 0001B

  20. (3)逻辑加∨(逻辑或)→按位求“或” (4)逻辑异或⊕(按位加)→按位求模2和 (5)正逻辑与负逻辑 规则:0∨0=0,0∨1=1,1∨0=1,1∨1=1 如:01100001B∨11001011B=11101011B 规则:0+0=0,0+1=1,1+0=1,1+1=0 如:01100001B ⊕ 11001011B=10101010B 正逻辑——高电平表示逻辑1,低电平表示逻辑0 负逻辑——高电平表示逻辑 0,低电平表示逻辑1

  21. 1.1.5 二进制编码 (1)二进制编码的十进制数 计算机里,字母、各种符号以及指挥计算机执行操作的指令,均用二进制数的组合表示,称为二进制编码 即用二进制表示的十进制数,简称BCD数 (binary coded decimal),常用的是8421 BCD码

  22. 8421 BCD编码表 压缩BCD数→用8位二进制数表示2个十进制数位 非压缩BCD数→用8位二进制数表示1个十进制数位 如:19 →压缩BCD →0001 1001 = 19H 19 →非压缩BCD →00000001 00001001 = 0109H

  23. 说明: • 十进制数与BCD数的转换 • 查8421 BCD编码表→直接 • BCD数转换为二进制数 • 写出BCD数的十进制数→十进制数转换为二进制数 • 二进制数转换为BCD数 • 二进制数转换为十进制数→根据十进制数写出BCD数

  24. (2)ASCII码 ----字符在机内的表示 常用的ASCII码字符如表(P10表1-4):

  25. 注: (1)十进制数的ASCII码转换成BCD数→ 减30H BCD数转换成十进制数的ASCII码→ 加30H (2)将十六进制数的ASCII码转换为十六进制或将十六进制转换为十六进制数的ASCII码,要先判别ASCII码是在哪个区段内,然后再加或减30H或37H。 (3)十进制数的ASCII码转换为二进制数: 将ASCII码转换为ASCII BCD数→写出ASCII BCD数的十进制数→将十进制数转换为二进制数 (4)二进制数转换为十进制数的ASCII码 →过程与(3)相反

  26. 1.1.5 BCD数的加减运算 调整规则:和在0~9之间,保持不变;和大于9,加6调整 0100 1000 + 0101 1001 1010 0001 + 0110 0110 10000 0111 BCD数低位与高位之间逢“10”进1,4位二进制数之间逢“16”进1。而计算机按二进制规律运算,故BCD数进行运算后须进行调整 (1)BCD数加法 如:48+59=107 ←BCD数

  27. 调整规则:差在0~9之间,不变;差大于9,减6调整 0010 1000 - 0001 1001 0000 1111 - 0000 0110 0000 1001 ←BCD数 (2)BCD数减法 如:28-19=9 通常在微机中设有二—十进制调整电路,通过调用调整指令来实现调整

  28. 第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈

  29. 1.3.1 微型计算机常用的术语 • 位(bit)——计算机所能表示的最基本、最小的数据单元。1个二进制位有两种状态“0”和“1” • 字(word) ——计算机内部进行数据处理的基本单位,与寄存器、ALU宽度一致每一个字所包含的二进制位数称为字长 • 字节(byte) ——8个Bit组成一个字节,存放相邻的8位二制数.字节的长度固定 • 指令(instruction) • 程序(program) • 指令系统(instruction set)

  30. 1.3.2 微型计算机的基本结构 微型计算机的基本组成如图所示:

  31. (1)CPU 微机的核心部件,具有运算和控制功能 • 组成: • 算术逻辑单元ALU(arithmetic logic unit) • 寄存器(register)组 • 控制器(control unit)

  32. (2)总线 总线是把计算机各部分有机地连接起来的一组并行导线,是各个部分之间进行信息交换的公共通道 • 微机的三总线: • 数据总线DB • 在CPU与存储器和CPU与I/O接口之间双向传送数据.其条数决定了每一次能同时传送的二进制数的位数。如:8088的数据总线为8条,一次能够传送8位二进制数,用D7~D0表示

  33. 地址总线AB • 传送CPU发出的地址,以寻址存储单元或I/O端口。AB的宽度决定了计算机系统能够使用的最大的存储器容量。如:地址总线为20条,用A19~A0表示,可寻址220=1M的存储空间 • 控制总线CB • 向计算机系统的各部件发送操作命令和定时信息。带有上横线的表示低电平有效,无上横线的表示高电平有效 • 如:ALE(address latch enable)、INTR高电平有效,MEMW、MEMR、IOR、IOW、INTA低电平有效

  34. (3)存储器(memory) 主要用于存放程序和数据 • 存储单元 • 单元地址

  35. (4)I/O接口 • 外部设备通过I/O接口与计算机连接。因为 • 外设的工作速度远低于CPU的速度 • 外设表示信息的格式与计算机不同 • 接口还应向计算机报告设备的运行状态,传达计算机命令等 (5)I/O设备 • 输入设备:键盘、模数转换器、扫描仪等 • 输出设备:显示器、打印机、绘图机等 • 输入/输出设备:磁盘和光盘等

  36. 1.3.3 计算机的工作原理 CPU、存储器、I/O接口、外部设备构成了计算机的硬件(hardware),光有这样的硬件还只是具有了计算的可能。计算机要真正能够进行计算还必须有多种程序的配合 当人们要解决问题时,首先将问题程序化,形成指令序列,然后将它存入存储器中,再由CPU的控制器和ALU依据程序中指令的顺序周而复始地取出指令,分析指令,执行指令,最后输出程序结果.即“程序存储和程序控制”

  37. 第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈

  38. 1.4.1 8086/8088的结构

  39. (1)执行单元EU(execution unit) (2)总线接口单元BIU(bus interface unit) EU负责执行指令,完成两种操作:算术逻辑运算、计算存储器操作数的偏移地址 BIU完成所有的总线操作 EU和BIU并行工作,可以同时进行读/写操作和执行指令的操作

  40. 1.4.1 8086/8088 的寄存器 8个 通用 寄存器 2个 控制寄存器 4个 段寄存器

  41. 1.通用寄存器 • 通用寄存器共8个:AX,BX,CX,DX,SP,BP,SI,DI,均为16位,在EU部件中 • AX,BX,CX,DX均可分成高8位和低8位,作为独立的8位寄存器使用:AH,AL,BH,BL,CH,CL,DH,DL • AX——累加器,BX——基址寄存器 • CX——计数寄存器,DX——数据寄存器 • SP——堆栈指示器,BP——基址指示器 • SI——源变址寄存器,DI——目的变址寄存器

  42. 2.指令指示器IP(instruction point) IP ——硬件电路,能自动跟踪指令地址。 在开始执行程序时,赋给IP第一条指令的地址,然后每取一条指令,IP的值就自动指向下一条指令的地址

  43. 3.状态标志寄存器(status flags) 9个标志位,其中6个状态标志,3个控制标志

  44. (1)状态标志 反映EU执行算术或逻辑运算后的结果 • 进位标志位CF • 加减运算执行后,最高位有进位或借位,CF=1;无进位或借位,CF=0 • 主要用于多字节加减运算 • 辅助进位标志位AF • 最低4位D3~D0位有进位或借位,AF=1;无进位或借位,AF=0 • 用于BCD数的算术运算(调整)指令

  45. 溢出标志位OF • 运算结果超出了机器数所能表示的数的范围OF=1;反之,OF=0 • 该标志表示运算结果是否产生了溢出 • 符号标志位SF • 结果为负数,SF=1;结果为正数,SF=0 • 零标志位 • 结果为0,ZF=1;结果不为0,ZF=0 • 奇偶标志位PF • 结果低八位中1的个数为偶数,PF=1;为奇数,PF=0。用于检查数据在传送过程中是否发生错误

  46. (2)控制标志 用于控制CPU的操作。 • 方向标志位DF • 控制数据串操作指令的步进方向 • DF=1,地址增址;DF=0,地址减址 • 中断允许标志位IF • 控制CPU是否开中断. IF=1,CPU开中断 • IF=0,CPU关中断 • 追踪标志位TF(陷阱标志位) • TF=1,CPU单步执行程序,常用于程序的调试 • TF=0,CPU正常执行程序

  47. 4.段寄存器 • 用来存放段地址 存储器分段管理,段的起始地址的高16位称该段的段地址,偏离段首址的字节数为偏移地址(16位). • CS----代码段寄存器----存放代码段的段地址 • SS----堆栈段寄存器----存放堆栈段的段地址 • DS----数据段寄存器----存放数据段的段地址 • ES----附加数据段寄存器----存放附加数据段的段地址

  48. 第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈

  49. 1.5.1 存储器编址 8086/8088系统中的存储器是以8位(一个字节)为一个存储单元编址的。每一个存储单元用唯一的一个地址码来表示。一个字即16位的数据占据连续的两个单元。这两个单元都有各自的地址,处于低地址的字节的地址为这个字的地址。在存储器中,任何连续存放的两个字节都可以称为一个字。将偶数地址的字称为规则字,奇数地址的字称为非规则字。高地址的字节为高位字节,低地址的字节为低位字节。

  50. 如: 00000H地址中存放一个字2301H,则00000H单元中存放01H,00001H单元中存放23H 字4523H的存放地址是00001H 字2301H为规则字,而字4523H为非规则字 机器指令和数据(字节数据和字数据)可以自由地存放在任何地址中,存放时只需按字节顺序存放

More Related