版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.1 微型计算机的发展和应用1946年,世界上出现第一台数字式电子计算机ENIAC(电子数据和计算器)发展到以大规模集成电路为主要部件的第四代,产生了微型计算机1971年,Intel公司设计了世界上第一个微处理器芯片Intel4004,开创了一个全新的计算机时代1.1.1 微型计算机的发展第一时期微型计算机(1971年1973年)4位和低档8位CPU,4004-4040-8080第二时期微型计算机(1974年1977年) 中高档8位CPU,Z80、 MC6800第三时期微型计算机(1978年1984年)16位CPU和微机,8086-8088-80286第四时期微型计算机(1985年1993年
2、) 32位高档CPU, 80386- 80486第五时期微型计算机(1993年至今) 64位高档CPU,Pentium-PentiumII-PentiumIII- Pentium1.1.2 微型计算机的应用科学计算、科学研究、数值处理和信息处理方面科学计算,数据处理计算机辅助设计功能越强越好、使用越方便越好人工智能和过程自动化控制方面工业PC机、工控机、可编程逻辑控制器、微控制器、数字信号处理器人工智能网络通信计算机技术与通信技术的结合构成了计算机网络计算机仿真模拟器构建、虚拟环境实现1.2微型计算机系统组成和工作原理运算器 控制器 寄存器组 存储器 总线输入/输出接口电路外部设备 软件微处理
3、器微型计算机微型计算机系统区别图1.1 微型计算机的系统组成控制总线CB数据总线DB地址总线AB系统总线形成处理器子系统I/O设备I/O接口存储器系统总线BUS1.2.1 微型计算机的硬件系统微处理器子系统存储器I/O设备和I/O接口系统总线系统总线总线是指传递信息的一组公用导线总线是传送信息的公共通道微机系统采用总线结构连接系统功能部件总线信号可分成三组地址总线AB:传送地址信息数据总线DB :传送数据信息控制总线CB :传送控制信息总线信号地址总线AB输出将要访问的内存单元或I/O端口的地址地址线的多少决定了系统直接寻址存储器的范围数据总线DBCPU读操作时,外部数据通过数据总线送往CPU
4、 CPU写操作时,CPU数据通过数据总线送往外部数据线的多少决定了一次能够传送数据的位数控制总线CB协调系统中各部件的操作,有输出控制、输入状态等信号控制总线决定了系统总线的特点,例如功能、适应性等举例举例特点1.2.2 微型计算机的软件系统 操作系统 MS-DOS 汇编程序 MASM和LINK 文本编辑程序 EDIT.COM 调试程序 DEBUG.EXE为什么采用汇编语言?1.2.3 微型计算机系统工作原理取指令分析指令执行指令 微型计算机执行程序的过程,实际上就是重复的完成上述取指令、分析指令和执行指令的过程,直到遇到停机指令时,CPU处于动态停机状态,才结束整个机器的运行。1.3 微型计
5、算机接口技术概述接口是指两个部件之间的交接部件。微型计算机接口的作用有以下几个方面:匹配工作速度匹配信息格式实现信息传递明确3个概念的区别微处理器(Microprocessor)一个大规模集成电路芯片内含控制器、运算器和寄存器等微机中的核心芯片微型计算机(Microcomputer)通常指微型计算机的硬件系统还有一般的说法:微机、微型机微型计算机系统(Microcomputer system)指由硬件和软件共同组成的完整的计算机系统返回Intel 80 x86CPU的地址线条数Intel80 x86地址条数存储容量8086201MB8088201MB802862416MB80386324GBP
6、entium4返回Intel 80 x86CPU的数据线条数Intel 80 x86数据位数80861680888802861680386Pentium 432返回系统总线的使用特点除了CPU外,还有DMA控制器和协处理器都具有控制系统总线的能力。它们被称为“总线主控设备”在某一个时刻,只能由一个总线主控设备来控制系统总线在连接系统总线的各个设备中,某一个时刻只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号返回内部数据总线控制总线数据总线地址总线暂存器累加器ALU标志寄存器指令寄存指令译码时序和控制逻辑通 用寄存器组地 址寄存器组地址总线控制数据总线控制2.1 微型计算机硬
7、件结构算术逻辑单元(运算器)寄存器组指令处理单元(控制器)2.1.1 8088/8086的功能结构8088的内部结构从功能分成两个单元总线接口单元BIU管理8088与系统总线的接口,负责CPU对存储器和外设进行访问执行单元EU负责指令的译码、执行和数据的运算两个单元相互独立,分别完成各自操作两个单元可以并行执行(演示1),实现指令取指和执行的流水线操作2.1.2 8086/8088 寄存器结构8088/8086的寄存器组有8个通用寄存器4个段寄存器1个标志寄存器1个指令指针寄存器寄存器均为16位!图示1. 通用寄存器8088有8个通用的16位寄存器(1)数据寄存器: AX BX CX DX(2
8、)变址寄存器: SI DI(3)指针寄存器: BP SP4个数据寄存器还可以分成高8位和低8位两个独立的寄存器,这样又形成8个通用的8位寄存器AX: AH ALBX: BH BLCX: CH CLDX: DH DL(1)数据寄存器AX称为累加器(Accumulator)使用频度最高。用于算术、逻辑运算以及与外设传送信息等BX称为基址寄存器(Base address Register)常用做存放存储器地址CX称为计数器(Counter)作为循环和串操作等指令中的隐含计数器DX称为数据寄存器(Data register)常用来存放双字长数据的高16位,或存放外设端口地址(2)变址寄存器16位变址寄
9、存器SI和DI常用于存储器变址寻址方式时提供地址SI是源地址寄存器(Source Index)DI是目的地址寄存器(Destination Index)在串操作类指令中,SI、DI还有较特殊的用法(3)指针寄存器指针寄存器用于寻址内存堆栈内的数据SP为堆栈指针寄存器(Stack Pointer),指示堆栈段栈顶的位置(偏移地址)BP为基址指针寄存器(Base Pointer),表示数据在堆栈段中的基地址SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址2. 指令指针寄存器IP(Instruction Pointer)为指令指针寄存器,指示主存储器指令的位置随着指令的执行,IP将
10、自动修改以指示下一条指令所在的存储器位置IP寄存器是一个专用寄存器IP寄存器与CS段寄存器联合使用以确定下一条指令的存储单元地址3. 标志寄存器标志(Flag)用于反映指令执行结果或控制指令执行形式8088处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器) 程序设计需要利用标志的状态标志寄存器-分类状态标志用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它CF ZF SF PF OF AF控制标志可由程序根据需要用指令设置,用于控制处理器执行指令的方式DF IF TFOF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0标志寄存器F
11、LAGS进位标志CF(Carry Flag)当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF1; 否则CF03AH + 7CHB6H,没有进位:CF = 0AAH + 7CH(1)26H,有进位:CF = 1零标志ZF(Zero Flag)若运算结果为0,则ZF1,否则ZF03AH7CHB6H,结果不是零:ZF084H7CH(1)00H,结果是零:ZF1符号标志SF(Sign Flag)运算结果最高位为1,则SF1; 否则SF0有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态3AH7CHB6H,最高位D71:SF184H7CH(1)00H,最高位
12、D70:SF0奇偶标志PF(Parity Flag)当运算结果最低字节中“1”的个数为零或偶数时,PF1;否则PF0 PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作3AH7CHB6H10110110B结果中有5个“1”,是奇数:PF0溢出标志OF(Overflow Flag)若算术运算的结果有溢出,则OF1; 否则 OF03AH + 7CHB6H,产生溢出:OF1AAH + 7CH(1)26H,没有溢出:OF0什么是溢出处理器内部以补码表示有符号数8位表达的整数范围是:127 12816位表达的范围是:32767 32768如果运算结果超出这个范围,就产生了溢出有溢出,说
13、明有符号数的运算结果不正确3AH7CHB6H,就是58124182,已经超出128127范围,产生溢出,故OF1;补码B6H表达真值是74,显然运算结果也不正确 B6H10110110B,最高位为1,作为有符号数是负数 对B6H求反加1等于:01001001B101001010B4AH74 所以,B6H表达有符号数的真值为74溢出和进位的区别溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确溢出的判断判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加(包括不同符号数相减
14、),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确其他情况下,则不会产生溢出例1:3AH7CHB6H 溢出例2:AAH7CH 无溢出例3:3AH7CH无溢出例4:AAH7CH2DH溢出辅助进位标志AF(Auxiliary Carry Flag)运算时D3位(低半字节)有进位或借位时,AF1;否则AF0这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心3AH7CHB6H,D3有进位:AF1方向标志DF(Direction Flag)用于串操作指令中,控制地址的变化方向:设置DF0,存储器地址自动增加;设置DF1,存储器地址自动减少CLD指令
15、复位方向标志:DF0STD指令置位方向标志:DF1中断允许标志IF(Interrupt-enable Flag)控制可屏蔽中断是否可以被处理器响应:设置IF1,则允许中断;设置IF0,则禁止中断CLI指令复位中断标志:IF0STI指令置位中断标志:IF1陷阱标志TF(Trap Flag)用于控制处理器进入单步操作方式:设置TF0,处理器正常工作;设置TF1,处理器单步执行指令单步执行指令处理器在每条指令执行结束时,便产生一个编号为1的内部中断这种内部中断称为单步中断所以TF也称为单步标志利用单步中断可对程序进行逐条指令的调试这种逐条指令调试程序的方法就是单步调试2.1.3 8088/8086的
16、存储器结构 存储器是计算机存储信息的地方。掌握数据存储格式,以及存储器的分段管理对以后的汇编程序设计非常重要1.寄存器、存储器和外存的区别寄存器是微处理器(CPU)内部暂存数据的存储单元,以名称表示,例如:AX,BX.等存储器也就是平时所说的主存,也叫内存,可直接与CPU进行数据交换。主存利用地址区别外存主要指用来长久保存数据的外部存储介质,常见的有硬盘、光盘、磁带、U盘等。外存的数据只能通过主存间接地与CPU交换数据程序及其数据可以长久存放在外存,在运行需要时才进入主存存储单元及其存储内容每个存储单元都有一个编号;被称为存储器地址每个存储单元存放一个字节的内容0002H单元存放有一个数据34
17、H表达为0002H34H多字节数据存放方式多字节数据在存储器中占连续的多个存储单元:存放时,低字节存入低地址,高字节存入高地址;表达时,用它的低地址表示多字节数据占据的地址空间。80 x86处理器采用“低对低、高对高”的存储形式,被称为“小端方式Little Endian”。相对应还存在“大端方式Big Endian”。2.存储器的分段管理8088CPU有20条地址线最大可寻址空间为2201MB物理地址范围从00000HFFFFFH8088CPU将1MB空间分成许多逻辑段(Segment)每个段最大限制为64KB段地址的低4位为0000B这样,一个存储单元除具有一个唯一的物理地址外,还具有多个
18、逻辑地址物理地址和逻辑地址8088CPU有20条地址线8088CPU存储系统中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H FFFFFH分段后在用户编程时,采用逻辑地址,形式为段基地址 : 段内偏移地址物理地址 14700H逻辑地址 1460H:100H逻辑地址8088CPU有20条地址线段地址说明逻辑段在主存中的起始位置8088规定段地址必须是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址偏移地址说明主存单元距离段起始位置的偏移量每段不超过64KB,偏移地址也可用16位数据表示物理地址和逻辑地址的转换
19、将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址一个物理地址可以有多个逻辑地址逻辑地址1460:100、1380:F00物理地址14700H 14700H3. 段寄存器8088有4个16位段寄存器CS(代码段)指明代码段的起始地址SS(堆栈段)指明堆栈段的起始地址DS(数据段)指明数据段的起始地址ES(附加段)指明附加段的起始地址每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途代码段寄存器CS(Code Segment)代码段用来存放程序的指令序列代码段寄存器CS存放代码段的段地址指令指针寄存器IP指示下条指令的偏移地址理器利用CS:IP取得下一条要执行的指令堆
20、栈段寄存器SS(Stack Segment)堆栈段确定堆栈所在的主存区域堆栈段寄存器SS存放堆栈段的段地址堆栈指针寄存器SP指示堆栈栈顶的偏移地址处理器利用SS:SP操作堆栈顶的数据数据段寄存器DS(Data Segment)数据段存放运行程序所用的数据数据段寄存器DS存放数据段的段地址各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址处理器利用DS:EA存取数据段中的数据附加段寄存器ES(Extra Segment)附加段是附加的数据段,也保存数据:附加段寄存器ES存放附加段的段地址各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址处理器利用ES:EA存取附加段中的数据串
21、操作指令将附加段作为其目的操作数的存放区域如何分配各个逻辑段程序的指令序列必须安排在代码段程序使用的堆栈一定在堆栈段程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段数据的存放比较灵活,实际上可以存放在任何一种逻辑段中演示2寄存器的总结8088有8个8位通用寄存器、8个16位通用寄存器8088有6个状态标志和3个控制标志8088将1MB存储空间分段管理,有4个段寄存器,对应4种逻辑段8088有4个段超越前缀指令,用于明确指定数据所在的逻辑段2.2 微型计算机软件体系立即数寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对
22、基址变址寻址方式2.2.1 立即数寻址方式指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)这种操作数被称为立即数imm它可以是8位数值i8(00HFFH)也可以是16位数值i16(0000HFFFFH)立即数寻址方式常用来给寄存器赋值MOV AL,05H;AL05HMOV AX,0102H;AX0102H2.2.2 寄存器寻址方式操作数存放在CPU的内部寄存器reg中:8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4个段寄存器seg:CS、DS、SS、ES
23、MOV AX,1234H;AX1234HMOV BX,AX;BXAX2.2.3 直接寻址方式有效地址在指令中直接给出默认的段地址在DS段寄存器,可使用段超越前缀改变MOV AX,2000H;AXDS:2000H;指令代码:A1 00 20MOV AX,ES:2000H;AXES:2000H;指令代码:26 A1 00 20演示32.2.4 寄存器间接寻址方式有效地址存放在基址寄存器(BX或BP)或变址寄存器SI、DI中BX 、SI、DI默认的段地址在DS段寄存器,而BP默认的段地址在SS段寄存器.可使用段超越前缀改变MOV AX,SI;AXDS:SIMOV AX,ES:SI;AXES:SI演示
24、42.2.5 寄存器相对寻址方式有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX/BP或SI/DI有效地址BX/BP/SI/DI8/16位位移量段地址对应BX/SI/DI寄存器默认在DS,对应BP寄存器默认在SS;可用段超越前缀MOV AX,DI+06H ;AXDS:DI+06HMOV AX,BP+06H ;AXSS:BP+06H演示52.2.6 基址变址寻址方式有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:有效地址BX/BPSI/DI段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀MOV AX,BX+SI
25、;AXDS:BX+SIMOV AX,BP+DI ;AXSS:BP+DIMOV AX,DS:BP+DI ;AXDS:BP+DI演示62.2.7 相对基址变址寻址方式有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:有效地址BX/BPSI/DI8/16位位移量段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀MOV AX,BX+SI+06H;AXDS:BX+SI+06H演示72.3 微处理器外部特性 8086的引脚信号2.3.1 8086/8088的工作模式两种组态构成两种不同规模的应用系统最小组态模式构成小规模的应用系统808
26、8本身提供所有的系统总线信号最大组态模式构成较大规模的应用系统,例如可以接入数值协处理器80878088和总线控制器8288共同形成系统总线信号2.3.1 8086/8088的工作模式(续)两种组态利用MN/MX*引脚区别MN/MX*接高电平为最小组态模式MN/MX*接低电平为最大组态模式两种组态下的内部操作并没有区别IBM PC/XT采用最大组态2.3.2 最小工作模式 8086/8088最小模式下的系统结构图2.3.3 最小组态的引脚信号数据和地址引脚读写控制引脚中断请求和响应引脚总线请求和响应引脚其它引脚1. 数据和地址引脚AD7AD0(Address/Data)地址/数据分时复用引脚,
27、双向、三态在访问存储器或外设的总线操作周期中,这些引脚在第一个时钟周期输出存储器或I/O端口的低8位地址A7A0其他时间用于传送8位数据D7D0 1. 数据和地址引脚(续1)A15A8(Address) 中间8位地址引脚,输出、三态这些引脚在访问存储器或外设时,提供全部20位地址中的中间8位地址A15A81. 数据和地址引脚(续2)A19/S6A16/S3(Address/Status)地址/状态分时复用引脚,输出、三态这些引脚在访问存储器的第一个时钟周期输出高4位地址A19A16在访问外设的第一个时钟周期全部输出低电平无效其他时间输出状态信号S6S32. 读写控制引脚ALE(Address
28、Latch Enable)地址锁存允许,输出、三态、高电平有效ALE引脚高有效时,表示复用引脚:AD7AD0和A19/S6A16/S3正在传送地址信息由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来2. 读写控制引脚(续1)IO/M*(Input and Output/Memory) I/O或存储器访问,输出、三态该引脚输出高电平时,表示CPU将访问I/O端口,这时地址总线A15A0提供16位I/O口地址该引脚输出低电平时,表示CPU将访问存储器,这时地址总线A19A0提供20位存储器地址 2. 读写控制引脚(续2)WR*(Write) 写控制,输出、三态
29、、低电平有效有效时,表示CPU正在写出数据给存储器或I/O端口RD*(Read)读控制,输出、三态、低电平有效有效时,表示CPU正在从存储器或I/O端口读入数据 2. 读写控制引脚(续3)IO/M*、WR*和RD*是最基本的控制信号组合后,控制4种基本的总线周期总线周期IO/M*WR*RD*存储器读低高低存储器写低低高I/O读高高低I/O写高低高2. 读写控制引脚(续4)READY 存储器或I/O口就绪,输入、高电平有效在总线操作周期中,8088 CPU会在第3个时钟周期的前沿测试该引脚如果测到高有效,CPU直接进入第4个时钟周期如果测到无效,CPU将插入等待周期TwCPU在等待周期中仍然要监
30、测READY信号,有效则进入第4个时钟周期,否则继续插入等待周期Tw。 2. 读写控制引脚(续5)DEN*(Data Enable) 数据允许,输出、三态、低电平有效有效时,表示当前数据总线上正在传送数据,可利用他来控制对数据总线的驱动 DT/R*(Data Transmit/Receive)数据发送/接收,输出、三态该信号表明当前总线上数据的流向高电平时数据自CPU输出(发送)低电平时数据输入CPU(接收) 2. 读写控制引脚(续6)SS0*(System Status 0) 最小组态模式下的状态输出信号它与IO/M*和DT/R*一道,通过编码指示CPU在最小组态下的8种工作状态:1. 取指
31、5. 中断响应2. 存储器读6. I/O读3. 存储器写7. I/O写4. 过渡状态8. 暂停3. 中断请求和响应引脚INTR(Interrupt Request) 可屏蔽中断请求,输入、高电平有效有效时,表示请求设备向CPU申请可屏蔽中断该请求的优先级别较低,并可通过关中断指令CLI清除标志寄存器中的IF标志、从而对中断请求进行屏蔽3. 中断请求和响应引脚(续1)INTA*(Interrupt Acknowledge) 可屏蔽中断响应,输出、低电平有效有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期中断响应周期是连续的两个,每个都发出有效响应信号,以便通知外设他们
32、的中断请求已被响应、并令有关设备将中断向量号送到数据总线 3. 中断请求和响应引脚(续2)NMI(Non-Maskable Interrupt) 不可屏蔽中断请求,输入、上升沿有效有效时,表示外界向CPU申请不可屏蔽中断该请求的优先级别高于INTR,并且不能在CPU内被屏蔽当系统发生紧急情况时,可通过他向CPU申请不可屏蔽中断服务主机与外设进行数据交换通常采用可屏蔽中断不可屏蔽中断通常用于处理掉电等系统故障4. 总线请求和响应引脚HOLD总线保持(即总线请求),输入、高电平有效有效时,表示总线请求设备向CPU申请占有总线该信号从有效回到无效时,表示总线请求设备对总线的使用已经结束,通知CPU收
33、回对总线的控制权 DMA控制器等主控设备通过HOLD申请占用系统总线(通常由CPU控制)4. 总线请求和响应引脚(续1)HLDA(HOLD Acknowledge)总线保持响应(即总线响应),输出、高电平有效有效时,表示CPU已响应总线请求并已将总线释放此时CPU的地址总线、数据总线及具有三态输出能力的控制总线将全面呈现高阻,使总线请求设备可以顺利接管总线待到总线请求信号HOLD无效,总线响应信号HLDA也转为无效,CPU重新获得总线控制权 5. 其它引脚RESET复位请求,输入、高电平有效该信号有效,将使CPU回到其初始状态;当他再度返回无效时,CPU将重新开始工作8088复位后CSFFFF
34、H、IP0000H,所以程序入口在物理地址FFFF0H5. 其它引脚(续1)CLK(Clock) 时钟输入系统通过该引脚给CPU提供内部定时信号。8088的标准工作时钟为5MHzIBM PC/XT机的8088采用了4.77MHz的时钟,其周期约为210ns 5. 其它引脚(续2)Vcc电源输入,向CPU提供5V电源GND接地,向CPU提供参考地电平MN/MX*(Minimum/Maximum)组态选择,输入接高电平时,8088引脚工作在最小组态;反之,8088工作在最大组态 5. 其它引脚(续3)TEST*测试,输入、低电平有效该引脚与WAIT指令配合使用当CPU执行WAIT指令时,他将在每个
35、时钟周期对该引脚进行测试:如果无效,则程序踏步并继续测试;如果有效,则程序恢复运行也就是说,WAIT指令使CPU产生等待,直到引脚有效为止在使用协处理器8087时,通过引脚和WAIT指令,可使8088与8087的操作保持同步 2.4 微型计算机工作时序时钟周期微处理器执行指令的最小时间单位,通常称为一个T状态指令周期指从取指令到执行完毕所需要的时间总线周期指通过外部总线对存储器或I/O端口进行一次读/写操作的过程2.4.1 8086/8088 操作时序时序就是对信号随时间变化的规律以及信号间的相互关系的描述。这些相互关系通过时序图来描述。总线时序是指在总线操作中相关信号的时序。总线操作是指发生
36、在总线上的某些特定的操作,包括:存储器读和I/O读、存储器写和I/O写、中断响应、总线请求及响应等。2.4.2 最小模式下总线操作时序微处理器最基本的4种总线周期存储器读总线周期存储器写总线周期I/O读总线周期I/O写总线周期存储器写总线周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0输出数据A19A16S6S3READY(高电平)IO/M*WR*T1状态输出20位存储器地址A19A0IO/M*输出低电平,表示存储器操作;ALE输出正脉冲,表示复用总线输出地址T2状态输出控制信号WR*和数据D7D0T3和Tw状态检测数据传送是否能够完成T4状态完
37、成数据传送I/O写总线周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0输出数据0000S6S3READY(高电平)IO/M*WR*T1状态输出16位I/O地址A15A0IO/M*输出高电平,表示I/O操作;ALE输出正脉冲,表示复用总线输出地址T2状态输出控制信号WR*和数据D7D0T3和Tw状态检测数据传送是否能够完成T4状态完成数据传送存储器读总线周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0输入数据A19A16S6S3READY(高电平)IO/M*RD*T1状态输出20位存储器地址A19A0
38、IO/M*输出低电平,表示存储器操作;ALE输出正脉冲,表示复用总线输出地址T2状态输出控制信号RD*T3和Tw状态检测数据传送是否能够完成T4状态前沿读取数据,完成数据传送I/O读总线周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0输入数据S6S3READY(高电平)IO/M*RD*0000T1状态输出16位I/O地址A15A0IO/M*输出高电平,表示I/O操作;ALE输出正脉冲,表示复用总线输出地址T2状态输出控制信号RD*T3和Tw状态检测数据传送是否能够完成T4状态前沿读取数据,完成数据传送插入等待状态Tw同步时序通过插入等待状态,来使
39、速度差别较大的两部分保持同步在读写总线周期中,判断是否插入Tw1. 在T3的前沿检测READY引脚是否有效2. 如果READY无效,在T3和T4之间插入一个等效于T3的Tw ,转13. 如果READY有效,执行完该T状态,进入T4状态8088的内部结构1 2 3 4 内部暂存器 IP ES SS DS CS输入/输出控制电路外部总线执行部分控制电路ALU标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器地址加法器指令队列执行部件 (EU)总线接口部件 (BIU)16位20位8位8位返回8088的指令执行过程返回什么是分时复用?分时复用就是一个引脚在不同的
40、时刻具有两个甚至多个作用最常见的总线复用是数据和地址引脚复用 总线复用的目的是为了减少对外引脚个数8088 /8086CPU的数据地址线采用了总线复用方法基本控制信号的组合方法I/O读I/O写存储器读存储器写逻辑段的分配汇编语言及开发环境3.1 汇编语言程序设计基础以助记符形式表示计算机指令助记符(mnemonic)是便于人们记忆、并能描述指令功能和指令操作数的符号助记符是表明指令功能的英语单词或其缩写汇编格式指令以及使用它们编写程序的规则就形成汇编语言(Assembly Language)汇编语言程序:用汇编语言书写的程序汇编程序:将汇编语言程序“汇编”成机器代码目标模块的程序3.1.1 汇
41、编语言特点汇编语言的优点:直接控制计算机硬件部件编写“时间”和“空间”两方面最有效程序汇编语言的缺点:与处理器密切有关需要熟悉计算机硬件系统、考虑许多细节编写繁琐,调试、维护、交流和移植困难3.1.2 8086指令系统概述Intel 8086指令系统共有117条基本指令可分成6个功能组数据传送类指令算术运算类指令位操作类指令串操作类指令控制转移类指令处理机控制类指令由4部分组成:标号:-标号表示该指令在主存中的逻辑地址指令助记符-代表一种指令目的操作数,源操作数-表示参与操作的对象;注释-对该指令或程序段功能的说明3.1.2 8086指令系统概述1.数据传送类指令数据传送指令是将源操作数传送到
42、目标操作数,即将数据、地址或立即数从一个位置传送到存储单元中。数据传送指令是最常使用的一类指令除标志寄存器传送指令外,均不影响标志位指令包括:MOV,PUSH,POP,XCHG,LEA,LDS/LES,XLAT,IN,OUT(1)传送指令MOVMOV reg/mem,imm立即数送寄存器或主存MOV reg/mem/seg,reg寄存器送(段)寄存器或主存MOV reg/seg,mem主存送(段)寄存器MOV reg/mem,seg段寄存器送寄存器或主存 举例演示8立即数段寄存器CS DS ES SS通用寄存器AX BX CX DXBP SP SI DI存储器MOV 举例例:MOV数据传送MO
43、V AL, 20HMOV AH, ALMOV SI, 200HMOV AX, BXMOV DI, AXMOV AX, DSMOV ES, AXMOV BYTE PTR SI,0AHMov WORD PTR SI+2,0BH(2)堆栈指令PUSH POP堆栈:后进先出FILO,位于堆栈段;SS段寄存器记录其段地址堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定演示9PUSH格式:PUSH src操作:SPSP2,SS:SPsrc,将堆栈指针SP减2,再将src压入堆栈顶部,src为16位操作数例: PUSH AX ;将AX内容压入堆栈 ;(SP)1AH,高地址存入高字节 ; (SP)2AL
44、,低地址存入低字节 ; (SP)(SP)2,SP指向新栈顶PUSH压入堆栈指令演示10POP格式:POP dest操作:destSS:SP,SPSP 2,将栈顶的一个字弹出传送到dest,再将SP加2,将SP指向新的栈顶,dest 的寻址方式是除立即寻址之外的所有存储器寻址方式和寄存器寻址方式。例: POP BX ;将栈顶内容弹出到BX ;(BL)(SP),低地址弹出到低字节 ;(BH)(SP) 1,高地址弹出到高字节 ;(SP)(SP) 2,SP指向新栈顶POP弹出堆栈指令演示11DOS命令环境(介绍DEBUG命令P110)(3)交换指令XCHG把两个地方的数据进行互换XCHG reg,re
45、g/mem ;reg reg/mem寄存器与寄存器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据举例演示12(3)交换指令XCHG 举例例:MOV AX, 1234H XCHG AH, AL ;AX高低字节交换, ;结果:AX = 3412HMOV BX, 0ABCDH XCHG AX, BX ;AX与BX交换内容, ;结果:AX = 0ABCDH ;BX = 3412HXCHG 2000H, CL 将DS:2000H内容与 ;CL计数器低字节进行字节交换(4)有效地址传送指令LEA将存储器操作数的有效地址传送至指定的16位寄存器中LEA r16,mem ;r16mem
46、的有效地址EA举例(4)有效地址传送指令LEA 举例例:设:(SI)=2000HLEABX,SI3412H 执行指令结果将偏移地址3010H传送到BX,即(BX)=5412H(5) LDS/LES指针传送指令LDS r16,mem;r16mem,;DSmem+2LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器LES r16,mem;r16mem,;ESmem+2LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器(6)XLAT换码指令将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给ALXLAT ;ALDS:BX+AL换码指令执行前:主
47、存建立一个字节量表格,含要转换成的目的代码表格首地址存放于BX,AL存放相对表格首的位移量换码指令执行后:将AL寄存器的内容转换为目标代码演示132.输入输出指令8086通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port)即I/O地址8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH每个端口用于传送一个字节的外设数据(1)IN输入指令将外设数据传送给CPU内的AL/AXIN AL,i8;字节输入:ALI/O端口(i8直接寻址)IN AL,DX;字节输入:ALI/O端口(DX间接寻址)IN AX,i8;字输入:AXI
48、/O端口(i8直接寻址)IN AX,DX;字输入:AXI/O端口(DX间接寻址)举例例:IN AL, 80H ;(AL)(80H端口),从80H端口读入字节信息存放在AL寄存器IN AX, DX ;(AL)(DX),从DX中装载的端口读入字信息存放在AX寄存器(1)IN输入指令 举例(2)OUT输入指令将CPU内的AL/AX数据传送给外设OUT i8,AL;字节输出:I/O端口AL(i8直接寻址)OUT DX,AL;字节输出:I/O端口AL(DX间接寻址)OUT i8,AX;字输出:I/O端口AX(i8直接寻址)OUT DX,AX;字输出:I/O端口AX(DX间接寻址)举例(2)OUT输入指令
49、 举例例:以下指令实现将外部设备端口80H的字节信息传送到存储单元DDATA;从外设端口0A2FH端口读入一字信息,再将读入的信息输出到端口0AA5H的外设上。DDATA DW ?IN AX, 80HMOV DDATA, AXMOV DX, 0A2FHIN AX, DXMOV DX, 0AA5HOUT DX, AX3.算术运算指令四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算请注意算术运算类指令对标志的影响指令包括:ADD、ADC、INC、DAA、AAA、SUB、SBB、DEC、CMP、NEG、AAS/DAS、MUL、IMUL、DIV、IDIV、CBW、C
50、WD、(1) ADD加法指令ADD指令将源与目的操作数相加,结果送到目的操作数ADD指令按状态标志的定义相应设置ADD reg,imm/reg/mem;regregimm/reg/memADD mem,imm/reg;memmemimm/reg举例(1) ADD加法指令 举例例:ADD AL, 12H ;AL中内容和12H相加,结果放在AL中ADD SI, BX20H ;SI中内容和BX20H;BX21H所指两存储单元内容相加,结果在SI中ADD SI, CX ;SI和CX内容相加,结果在SI中ADD BXSI, AX ;BXSI和BXSI1两单元内容与AX中内容相加;结果在BXSI,BXSI
51、1所指单元中(2) ADC带进位的加法ADC指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数ADC指令按状态标志的定义相应设置ADC指令主要与ADD配合,实现多精度加法运算ADC reg,imm/reg/mem;regregimm/reg/memCFADC mem,imm/reg;memmemimm/regCF举例(2) ADC带进位的加法 举例例:ADC AL, 34H ;AL(AL)34H(CF)ADC AX, CX ;AX(AX)(CX)(CF)ADC BX,DI ;BX(BX)DI1DI(CF)(3) INC加1指令 INC指令对操作数加1(增量)INC指令不影响进位C
52、F标志,按定义设置其他状态标志INC reg/mem;reg/memreg/mem1例:INC BXINC BYTE PTR BX(4) SUB 不考虑借位的减法指令SUB指令将目的操作数减去源操作数,结果送到目的操作数SUB指令按照定义相应设置状态标志SUB reg,imm/reg/mem;regregimm/reg/memSUB mem,imm/reg;memmemimm/reg举例(4) SUB 不考虑借位的减法指令 举例例:SUB AH, 0F0H ;AH (AH) 0F0HSUB BX20H, DX ;BX20H (BX20H) (DX)SUB AX, CX(5) SBB 考虑借位的
53、减法指令SBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。SBB指令按照定义相应设置状态标志SBB指令主要与SUB配合,实现多精度减法运算SBB reg,imm/reg/mem;regregimm/reg/memCFSBB mem,imm/reg;memmemimm/regCF举例(5) SBB 考虑借位的减法指令 举例例:MOV AX, 5678HMOV DX, 1234HSUB AX, 6789H;CF = 1SBB DX, 1122H;DX = 0111H(6) DEC 减1指令DEC指令对操作数减1(减量)DEC指令不影响进位CF标志,按定义设置其他状态标
54、志DEC reg/mem;reg/memreg/mem1(7) CMP 比较指令CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志CMP指令执行的功能与SUB指令,但结果不回送目的操作数CMP reg,imm/reg/mem;regimm/reg/memCMP mem,imm/reg;memimm/reg举例(7) CMP 比较指令 举例例:CMP AL, 0AHCMP CX, DICMP DI, BX03CMP AX, AREA1(7) NEG 求补指令NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数求补运算也可以表达成:将操作数按位取反后加1NEG指令对标志的影
55、响与用零作减法的SUB指令一样NEG reg/mem;reg/mem0reg/mem(8)乘法指令举例MUL r8/m8;无符号字节乘法;AXALr8/m8MUL r16/m16;无符号字乘法;DX.AXAXr16/m16IMUL r8/m8;有符号字节乘法;AXALr8/m8IMUL r16/m16;有符号字乘法;DX.AXAXr16/m16(8)乘法指令 举例例1:2AH 3EHMOV AL, 2AHMOV BL, 3EHMUL BL ;AX=0A2CH,OF = CF = 1 ;AX高8位含有有效数值,非符号扩展例264H 0A5HMOV AL, 64HMOV BL, 0A5HIMUL
56、BL ;AX = 0DC74H,9100,OF = CF = 1 ;AX高8位含有有效数值,非符号扩展举例(9)除法指令DIV r8/m8;无符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数DIV r16/m16;无符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数IDIV r8/m8;有符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数IDIV r16/m16;有符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数(9)除法指令 举例例:3E2CH 5BHMOV AX, 3E2CHMOV BL, 5BHD
57、IV BLMOV AX,0400H ;AX=400H=1024MOV BL,0b4H ;BL=b4H=76IDIV BL ;商ALF3h13 ;余数AH24H36(10)其它算术指令举例CBW;AL的符号扩展至AH;如AL的最高有效位是0,则AH00;AL的最高有效位为1,则AHFFH。AL不变CWD;AX的符号扩展至DX;如AX的最高有效位是0,则DX00;AX的最高有效位为1,则DXFFFFH。AX不变(10)其它算术指令 举例例:MOV AL, 0ABHCBW ;AX = 0FFABHMOV AX, 1234HCWD ;DX = 0000H,AX = 1234H4.位操作指令位操作类指令
58、以二进制位为基本单位进行数据的操作这是一类常用的指令,都应该掌握注意这些指令对标志位的影响逻辑运算指令AND OR XOR NOT TEST移位指令SHL SHR SAR ROL ROR RCL RCR(1) AND 逻辑“与”指令对两个操作数执行逻辑与运算,结果送到目的操作数AND reg,imm/reg/memregregimm/reg/memAND mem,imm/reg;memmemimm/regAND指令设置CF = OF = 0,根据结果设置SF、ZF和PF状态,而对AF未定义例:AND AL, 10010011 ;将AL中的第0、1、4、7位保留,其他位清零(2) OR逻辑“或”
59、指令对两个操作数执行逻辑或运算,结果送到目的操作数OR reg,imm/reg/mem;regregimm/reg/memOR mem,imm/reg;memmemimm/regOR指令设置CF = OF = 0,根据结果设置SF、ZF和PF状态,而对AF未定义例:OR BL, 0F0H ;将BL的高4为置1,其他位不变(3)XOR逻辑“异或”指令对两个操作数执行逻辑异或运算,结果送到目的操作数XOR reg,imm/reg/mem;regregimm/reg/memXOR mem,imm/reg;memmemimm/regXOR指令设置CF = OF = 0,根据结果设置SF、ZF和PF状态
60、,而对AF未定义例:XOR AL, 0A5H ;将AL的第0、2、5和7位取反,其他位不变(4) TEST 测试指令对两个操作数执行逻辑与运算,结果不回送到目的操作数TEST reg,imm/reg/mem;regimm/reg/memTEST mem,imm/reg;memimm/regTEST指令设置CF = OF = 0,根据结果设置SF、ZF和PF状态,而对AF未定义例:TEST AX, 0010H ;若ZF = 0,则AX第4位为1,否则,第4位为0(5) NOT逻辑“非”指令对一个操作数执行逻辑非运算NOT reg/mem;reg/memreg/memNOT指令是一个单操作数指令N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学2025年专项发展规划
- 长春汽车工业高等专科学校《游戏动态设计实验》2023-2024学年第一学期期末试卷
- 食品卫生安全监管的挑战与对策
- 专业基础知识(给排水)-2021年注册公用设备工程师(给排水)《专业基础》真题
- 毕业生代表大学毕业典礼发言稿
- 读书心得体会范文:《追求卓越》
- 二零二五年度高科技企业股份代持保密合作协议3篇
- 山西省晋中市祁县2024-2025学年八年级上学期期末生物学试题(含答案)
- 二零二五年期市场营销推广合同
- 辽阳市小升初英语试卷单选题100道及答案
- 钢构楼板合同范例
- 2024-2025学年人教版(2024)信息技术四年级上册 第11课 嘀嘀嗒嗒的秘密 说课稿
- 2024中考物理真题汇编:电与磁(含解析)
- 物流管理概论 课件全套 王皓 第1-10章 物流与物流管理的基础知识 - 物流系统
- 苏教版六年级上册分数四则混合运算100题带答案
- 2024年考研英语(一)真题及参考答案
- 医疗组长竞聘
- 2024年业绩换取股权的协议书模板
- 颞下颌关节疾病(口腔颌面外科学课件)
- 工业自动化设备维护保养指南
- 2024人教新版七年级上册英语单词英译汉默写表
评论
0/150
提交评论