560 likes | 704 Views
微机原理、汇编与接口技术. 2007. 6. 13. 朱定华. 2008.8. 第一章 微型计算机基础知识. 1.1. 计算机的数和编码. 1.2. 逻辑单元与逻辑部件. 1.3. 微型计算机的结构和工作原理. 1.4. 8086/8088 微处理器. 1.5. 8086/8088 的存储器结构与堆栈. 1.1.1 计算机中的数制. 常用数制 ---- 二 , 十 , 十六进制. 为了区别 3 种不同数制,约定. 目前在计算机中,数几乎全部用二进制表示 为书写方便 , 微机中的二进制数用十六进制数缩写
E N D
微机原理、汇编与接口技术 2007. 6. 13 朱定华 2008.8
第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈
1.1.1 计算机中的数制 常用数制----二,十,十六进制 为了区别3种不同数制,约定 • 目前在计算机中,数几乎全部用二进制表示 • 为书写方便,微机中的二进制数用十六进制数缩写 • 人们最熟悉、最常用的是十进制数 • 数后加B表示二进制数 • 带D或不带字母符号表示十进制数 • 带H表示十六进制数
数制间转换 二进制整数→十六:从右(最低位)向左将二进制数4位1组划分,最后一组若不足4位则在其左边补0,每组用1位十六进制数表示 十六→二:用4位二进制数代替1位十六进制数 (1)二←→十六 如: 1111111000111B → 1 1111 1100 0111B → 0001 1111 1100 0111B = 1FC7H 如: 3AB9H = 0011 1010 1011 1001B
数制间转换 十六→十:将十六进制数按权展开相加 十进制整数→十六:除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 余数倒序排列
1.1.2 符号数的表示方法 • 用数的符号和数值部分一起编码的方法表示符号数 • 只有8位(字节)、16位(字)或32位(双字)机器数的最高位才是符号位。最高位为0→正数,为 1→负数 • 区分:机器数、真值、无符号数 • 掌握符号数的三种常用表示法:原码,反码,补码
→数值用其绝对值,正数的符号位用0表示,负数的符号位用1表示→数值用其绝对值,正数的符号位用0表示,负数的符号位用1表示 (1)原码 如: X1= 105=+1101001B [X1]原=01101001B X2=-105=-1101001B [X2]原=11101001B
注: • 原码表示的数,8位数中,D7位为符号位,其余7位为数值位(为真值的绝对值) • 8位原码数的数值范围为FFH~7FH(-127~127);16位原码数的数值范围为FFFFH~7FFFH(-32767~32767) • 原码表示简单易懂,且与真值转换方便,但内部运算复杂,为简化计算机结构,引进了反码和补码
→正数的反码与原码相同;负数的反码为它的绝对值连同符号位按位取反→正数的反码与原码相同;负数的反码为它的绝对值连同符号位按位取反 注: 一个负数的反码的数值部分并不是其真值的绝对值,要按位取反才能求得真值的绝对值 (2)反码 如: X1= 105=+1101001B [X1]反=01101001B X2=-105=-1101001B [X2]反=10010110B
(3)补码 →正数的补码与原码相同;负数的补码为其绝对值的补数 • 补数有两种求法: • 按位取反后再加1 • 从最低位向最高位扫描,保留直至第一个“1”的所有“0”位,第一个“1”左边各位按位取反 • 如:X1= 105=+1101001B [X1]补=01101001B • X2=-105=-1101001B [X2]补=10010111B • 对补码表示的负数求补可以得到其绝对值 • 如: [-105]补=10010111B=97H • 求补,得:01101001=69H=105,即补码表示的机器数97H的真值是-69H(=-105)
注: • 一个补码数,若最高位为0,则该数即为此数的绝对值;若最高位为1,则其补数为该数的绝对值 • 8位补码数的范围:80H~7FH(-128~127).16位补码数的范围:8000H~7FFFH(-32768~32767) • 补码数80H和8000H的最高位既代表了符号为负又代表了数值为1 • 1个二进制补码数的符号位向左扩展若干位后,所得到的补码数的真值不变 • 如:[68]补=44H→字节,[68]补=0044H→字 • [-68]补= BCH →字节,[-68]补= FFBCH→字 • 微机中,符号数用补码表示!
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
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
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
两数进行运算,结果超出表示范围会产生溢出;用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 →将进位视为符号,结果正确
1100 1110 + 1111 1011 11100 1001= -00110111B= -55 进位丢失 结果正确,无溢出 • 说明: • 将多位二进制数拆成多部分运算时,数的低位部分均为无符号数,只有高位部分才为符号数 • 注意区分进位与溢出 • 溢出不同于补码运算中的进位或借位丢失 • 如: • -50-5 = -55
-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时,无溢出
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
(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
1.1.5 二进制编码 (1)二进制编码的十进制数 计算机里,字母、各种符号以及指挥计算机执行操作的指令,均用二进制数的组合表示,称为二进制编码 即用二进制表示的十进制数,简称BCD数 (binary coded decimal),常用的是8421 BCD码
8421 BCD编码表 压缩BCD数→用8位二进制数表示2个十进制数位 非压缩BCD数→用8位二进制数表示1个十进制数位 如:19 →压缩BCD →0001 1001 = 19H 19 →非压缩BCD →00000001 00001001 = 0109H
说明: • 十进制数与BCD数的转换 • 查8421 BCD编码表→直接 • BCD数转换为二进制数 • 写出BCD数的十进制数→十进制数转换为二进制数 • 二进制数转换为BCD数 • 二进制数转换为十进制数→根据十进制数写出BCD数
(2)ASCII码 ----字符在机内的表示 常用的ASCII码字符如表(P10表1-4):
注: (1)十进制数的ASCII码转换成BCD数→ 减30H BCD数转换成十进制数的ASCII码→ 加30H (2)将十六进制数的ASCII码转换为十六进制或将十六进制转换为十六进制数的ASCII码,要先判别ASCII码是在哪个区段内,然后再加或减30H或37H。 (3)十进制数的ASCII码转换为二进制数: 将ASCII码转换为ASCII BCD数→写出ASCII BCD数的十进制数→将十进制数转换为二进制数 (4)二进制数转换为十进制数的ASCII码 →过程与(3)相反
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数
调整规则:差在0~9之间,不变;差大于9,减6调整 0010 1000 - 0001 1001 0000 1111 - 0000 0110 0000 1001 ←BCD数 (2)BCD数减法 如:28-19=9 通常在微机中设有二—十进制调整电路,通过调用调整指令来实现调整
第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈
1.3.1 微型计算机常用的术语 • 位(bit)——计算机所能表示的最基本、最小的数据单元。1个二进制位有两种状态“0”和“1” • 字(word) ——计算机内部进行数据处理的基本单位,与寄存器、ALU宽度一致每一个字所包含的二进制位数称为字长 • 字节(byte) ——8个Bit组成一个字节,存放相邻的8位二制数.字节的长度固定 • 指令(instruction) • 程序(program) • 指令系统(instruction set)
1.3.2 微型计算机的基本结构 微型计算机的基本组成如图所示:
(1)CPU 微机的核心部件,具有运算和控制功能 • 组成: • 算术逻辑单元ALU(arithmetic logic unit) • 寄存器(register)组 • 控制器(control unit)
(2)总线 总线是把计算机各部分有机地连接起来的一组并行导线,是各个部分之间进行信息交换的公共通道 • 微机的三总线: • 数据总线DB • 在CPU与存储器和CPU与I/O接口之间双向传送数据.其条数决定了每一次能同时传送的二进制数的位数。如:8088的数据总线为8条,一次能够传送8位二进制数,用D7~D0表示
地址总线AB • 传送CPU发出的地址,以寻址存储单元或I/O端口。AB的宽度决定了计算机系统能够使用的最大的存储器容量。如:地址总线为20条,用A19~A0表示,可寻址220=1M的存储空间 • 控制总线CB • 向计算机系统的各部件发送操作命令和定时信息。带有上横线的表示低电平有效,无上横线的表示高电平有效 • 如:ALE(address latch enable)、INTR高电平有效,MEMW、MEMR、IOR、IOW、INTA低电平有效
(3)存储器(memory) 主要用于存放程序和数据 • 存储单元 • 单元地址
(4)I/O接口 • 外部设备通过I/O接口与计算机连接。因为 • 外设的工作速度远低于CPU的速度 • 外设表示信息的格式与计算机不同 • 接口还应向计算机报告设备的运行状态,传达计算机命令等 (5)I/O设备 • 输入设备:键盘、模数转换器、扫描仪等 • 输出设备:显示器、打印机、绘图机等 • 输入/输出设备:磁盘和光盘等
1.3.3 计算机的工作原理 CPU、存储器、I/O接口、外部设备构成了计算机的硬件(hardware),光有这样的硬件还只是具有了计算的可能。计算机要真正能够进行计算还必须有多种程序的配合 当人们要解决问题时,首先将问题程序化,形成指令序列,然后将它存入存储器中,再由CPU的控制器和ALU依据程序中指令的顺序周而复始地取出指令,分析指令,执行指令,最后输出程序结果.即“程序存储和程序控制”
第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈
(1)执行单元EU(execution unit) (2)总线接口单元BIU(bus interface unit) EU负责执行指令,完成两种操作:算术逻辑运算、计算存储器操作数的偏移地址 BIU完成所有的总线操作 EU和BIU并行工作,可以同时进行读/写操作和执行指令的操作
1.4.1 8086/8088 的寄存器 8个 通用 寄存器 2个 控制寄存器 4个 段寄存器
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——目的变址寄存器
2.指令指示器IP(instruction point) IP ——硬件电路,能自动跟踪指令地址。 在开始执行程序时,赋给IP第一条指令的地址,然后每取一条指令,IP的值就自动指向下一条指令的地址
3.状态标志寄存器(status flags) 9个标志位,其中6个状态标志,3个控制标志
(1)状态标志 反映EU执行算术或逻辑运算后的结果 • 进位标志位CF • 加减运算执行后,最高位有进位或借位,CF=1;无进位或借位,CF=0 • 主要用于多字节加减运算 • 辅助进位标志位AF • 最低4位D3~D0位有进位或借位,AF=1;无进位或借位,AF=0 • 用于BCD数的算术运算(调整)指令
溢出标志位OF • 运算结果超出了机器数所能表示的数的范围OF=1;反之,OF=0 • 该标志表示运算结果是否产生了溢出 • 符号标志位SF • 结果为负数,SF=1;结果为正数,SF=0 • 零标志位 • 结果为0,ZF=1;结果不为0,ZF=0 • 奇偶标志位PF • 结果低八位中1的个数为偶数,PF=1;为奇数,PF=0。用于检查数据在传送过程中是否发生错误
(2)控制标志 用于控制CPU的操作。 • 方向标志位DF • 控制数据串操作指令的步进方向 • DF=1,地址增址;DF=0,地址减址 • 中断允许标志位IF • 控制CPU是否开中断. IF=1,CPU开中断 • IF=0,CPU关中断 • 追踪标志位TF(陷阱标志位) • TF=1,CPU单步执行程序,常用于程序的调试 • TF=0,CPU正常执行程序
4.段寄存器 • 用来存放段地址 存储器分段管理,段的起始地址的高16位称该段的段地址,偏离段首址的字节数为偏移地址(16位). • CS----代码段寄存器----存放代码段的段地址 • SS----堆栈段寄存器----存放堆栈段的段地址 • DS----数据段寄存器----存放数据段的段地址 • ES----附加数据段寄存器----存放附加数据段的段地址
第一章 微型计算机基础知识 1.1 计算机的数和编码 1.2 逻辑单元与逻辑部件 1.3 微型计算机的结构和工作原理 1.4 8086/8088微处理器 1.5 8086/8088的存储器结构与堆栈
1.5.1 存储器编址 8086/8088系统中的存储器是以8位(一个字节)为一个存储单元编址的。每一个存储单元用唯一的一个地址码来表示。一个字即16位的数据占据连续的两个单元。这两个单元都有各自的地址,处于低地址的字节的地址为这个字的地址。在存储器中,任何连续存放的两个字节都可以称为一个字。将偶数地址的字称为规则字,奇数地址的字称为非规则字。高地址的字节为高位字节,低地址的字节为低位字节。
如: 00000H地址中存放一个字2301H,则00000H单元中存放01H,00001H单元中存放23H 字4523H的存放地址是00001H 字2301H为规则字,而字4523H为非规则字 机器指令和数据(字节数据和字数据)可以自由地存放在任何地址中,存放时只需按字节顺序存放