《微机原理与接口技术》(第3版).-冯博琴-吴宁主编.-清华大学出版社(官方课件)_第1页
《微机原理与接口技术》(第3版).-冯博琴-吴宁主编.-清华大学出版社(官方课件)_第2页
《微机原理与接口技术》(第3版).-冯博琴-吴宁主编.-清华大学出版社(官方课件)_第3页
《微机原理与接口技术》(第3版).-冯博琴-吴宁主编.-清华大学出版社(官方课件)_第4页
《微机原理与接口技术》(第3版).-冯博琴-吴宁主编.-清华大学出版社(官方课件)_第5页
已阅读5页,还剩679页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1微机原理与接口技术大家好!2课程目标掌握:微型计算机的根本工作原理汇编语言程序设计方法微型计算机接口技术建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力3教材及实验指导书教材:《微机原理与接口技术》〔第3版〕.冯博琴,吴宁主编.清华大学出版社实验指导书《微机原理与接口技术实验指导书》〔讲义〕陈文革,吴宁,夏秦编.西安交通大学《微机原理与接口技术题解及实验指导》〔第3版〕.吴宁,陈文革编.清华大学出版社目录第1章微型计算机根底概论第2章微处理器与总线第3章指令系统第4章汇编语言程序设计第5章存储器系统第6章输入输出第7章根本输入/输出方法(DMA)第8章中断技术第9章模拟量的输入输出〔D/A转换〕第10章模/数〔A/D〕转换器5第1章微型计算机根底概论主要内容:微机系统的组成计算机中的编码、数制及其转换无符号二进制数的运算算术运算和逻辑运算运算中的溢出机器数的表示及运算根本逻辑门及译码器6一、微型计算机系统微型机的工作原理微机系统的根本组成71.

计算机的工作原理冯•

诺依曼计算机的工作原理存储程序工作原理8存储程序原理将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器保存指令按其在存储器中存放的顺序执行;由控制器控制整个程序和数据的存取以及程序的执行。9冯•诺依曼计算机体系结构运算器存储器控制器输入设备输出设备10冯•诺依曼机的工作过程内存中的程序指令1指令2指令n┇分析获取操作数执行存放结果┇程序计数器PC地址CPU取出操作数11冯•诺依曼机的工作过程取一条指令的工作过程:将指令所在地址赋给程序计数器PC;PC内容送到地址存放器AR,PC自动加1;把AR的内容通过地址总线送至内存储器,经地址译码器译码,选中相应单元。CPU的控制器发出读命令。在读命令控制下,把所选中单元的内容〔即指令操作码〕读到数据总线DB。把读出的内容经数据总线送到数据存放器DR。指令译码因为取出的是指令的操作码,故数据存放器DR把它送到指令存放器IR,然后再送到指令译码器ID冯•诺依曼机的特点和缺乏特点:程序存储,共享数据,顺序执行属于顺序处理机,适合于确定的算法和数值数据的处理。缺乏:与存储器间有大量数据交互,对总线要求很高;执行顺序有程序决定,对大型复杂任务较困难;以运算器为核心,处理效率较低;由PC控制执行顺序,难以进行真正的并行处理。12典型的非冯•诺依曼机结构数据流驱动的计算机结构当指令具有所需数据、且输出端没有数据时就可执行。13DataflowImageProcessingSystem142.系统组成主机硬件系统外设微机系统系统软件软件系统应用软件CPU存储器输入/输出接口总线15微处理器微处理器简称CPU,是计算机的核心。主要包括:

运算器控制器存放器组16存储器定义:用于存放计算机工作过程中需要操作的数据和程序。17有关内存储器的几个概念内存单元的地址和内容内存容量内存的操作内存的分类18

内存单元的地址和内容内存按单元组织每单元都对应一个地址,以方便对单元的寻址1011011038F04H内存地址单元内容19内存容量内存容量:所含存储单元的个数,以字节为单位内存容量的大小依CPU的寻址能力而定实地址模式下为CPU地址信号线的位数20内存操作读:将内存单元的内容取入CPU,原单元内容不改变;写:CPU将信息放入内存单元,单元中原来的内容被覆盖。21内存储器的分类随机存取存储器〔RAM〕只读存储器〔ROM〕按工作方式可分为22输入/输出接口接口是CPU与外部设备间的桥梁CPUI/O接口外设23接口的分类串行接口并行接口数字接口模拟接口输入接口输出接口24接口的功能数据缓冲存放;信号电平或类型的转换;实现主机与外设间的运行匹配。25总线根本概念分类工作原理常用系统总线标准及其主要技术指标〔具体内容见后续课程〕26软件系统软件:为运行、管理和维护计算机系统或为实现某一功能而编写的各种程序的总和及其相关资料。系统软件应用软件操作系统编译系统网络系统工具软件软件27二、计算机中的数制和编码数制和编码的表示各种计数制之间的相互转换281.常用计数法

十进制〔D〕二进制〔B〕十六进制〔H〕29例:234.98D或〔234.98〕D1101.11B或〔1101.11〕BABCD.BFH或〔ABCD.BF〕H302.各种进制数间的转换非十进制数到十进制数的转换十进制到非十进制数的转换二进制与十六进制数之间的转换

31非十进制数到十进制数的转换按相应的权值表达式展开例:1011.11B=1×23+0×22+1×21+1×20+1×2-1+1×2-2

=8+2+1+0.5+0.25=11.755B.8H=5×161+11×160+8×16-1

=80+11+0.5=91.532十进制到非十进制数的转换到二进制的转换:对整数:除2取余;对小数:乘2取整。到十六进制的转换:对整数:除16取余;对小数:乘16取整。33二进制与十六进制间的转换用4位二进制数表示1位十六进制数例:25.5=

11001.1B=

19.8H11001010.0110101B=CA.6AH343.

计算机中的编码BCD码用二进制编码表示的十进制数ASCII码西文字符编码35BCD码压缩BCD码用4位二进制码表示一位十进制数每4位之间有一个空格扩展BCD码用8位二进制码表示一位十进制数,每4位之间有一个空格。36BCD码与二进制数之间的转换先转换为十进制数,再转换二进制数;反之同样。例:〔00010001.00100101〕BCD=11.25=〔1011.01〕B37ASCII码西文字符的编码,一般用7位二进制码表示。D7位为校验位,默认情况下为0。要求:理解校验位的作用熟悉0F的ASCII码38ASCII码的奇偶校验奇校验加上校验位后编码中“1”的个数为奇数。例:A的ASCII码是41H〔1000001B〕以奇校验传送那么为C1H〔11000001B〕偶校验加上校验位后编码中“1”的个数为偶数。上例假设以偶校验传送,那么为41H。39三、无符号二进制数的运算算术运算逻辑运算无符号数有符号数二进制数的运算40主要内容无符号二进制数的算术运算无符号数的表达范围运算中的溢出问题无符号数的逻辑运算根本逻辑门和译码器411.无符号数的算术运算加法运算1+1=0〔有进位〕减法运算0-1=1〔有借位〕乘法运算除法运算42乘除运算例00001011×0100=00101100B

00001011÷0100=00000010B

即:商=00000010B

余数=11B432.无符号数的表示范围:0≤X≤2n-1假设运算结果超出这个范围,那么产生溢出。对无符号数:运算时,当最高位向更高位有进位〔或借位〕时那么产生溢出。44[例]:

最高位向前有进位,产生溢出453.逻辑运算与、或、非、异或掌握:与、或、非门逻辑符号和逻辑关系〔真值表〕;与非门、或非门的应用。46“与”、“或”运算“与”运算:任何数和“0”相“与”,结果为0。“或”运算:任何数和“1”相“或”,结果为1。&&≥1≥147“非”、“异或”运算“非”运算按位求反“异或”运算相同那么为0,相异那么为1484.

译码器掌握74LS138译码器各引脚功能输入端与输出端关系〔真值表〕4974LS138译码器G1G2AG2BCBAY0Y7••••主要引脚及功能50三、机器数〔有符号数〕的运算51计算机中符号数的表示机器数计算机中的数据构成:符号位+真值“0”表示正“1”表示负52[例]

+52=+0110100=0

0110100

符号位真值-52=-0110100=1

0110100符号位真值531.

符号数的表示机器数的表示方法:原码反码补码54原码最高位为符号位〔用“0”表示正,用“1”表示负〕,其余为真值局部。优点:真值和其原码表示之间的对应关系简单,容易理解;缺点:计算机中用原码进行加减运算比较困难0的表示不唯一。55数0的原码8位数0的原码:+0=00000000

-0=10000000即:数0的原码不唯一。56反码对一个机器数X:假设X>0,那么[X]反=[X]原假设X<0,那么[X]反=对应原码的符号位不变,数值局部按位求反57[例]X=-52=-0110100[X]原=10110100[X]反=11001011580的反码:[+0]反=00000000[-0]反=11111111即:数0的反码也不是唯一的。59补码定义:假设X>0,那么[X]补=[X]反=[X]原假设X<0,那么[X]补=[X]反+160[例]X=–52=–0110100[X]原=10110100[X]反=11001011[X]补=[X]反+1=11001100610的补码:[+0]补=[+0]原=00000000[-0]补=[-0]反+1=11111111+1=100000000

对8位字长,进位被舍掉62特殊数10000000对无符号数:〔10000000〕B=128在原码中定义为:-0在反码中定义为:-127在补码中定义为:-12863符号数的表示范围对8位二进制数:原码:-127~+127反码:-127~+127补码:-128~+127642.符号二进制数与十进制的转换对用补码表示的二进制数:1〕求出真值2〕进行转换65[例]:补码数转换为十进制数[X]补=00101110B

正数所以:真值=0101110B

X=+46[X]补=11010010B

负数所以:真值不等于-1010010B而是:X=[[X]补]补=[11010010]补=-0101110=-46663.符号数的算术运算通过引进补码,可将减法运算转换为加法运算。即:[X+Y]补=[X]补+[Y]补[X-Y]补=[X+(-Y)]补=[X]补+[-Y]补注:运算时符号位须对齐67[例]X=-0110100,Y=+1110100,求X+Y=?[X]原=10110100[X]补=[X]反+1=11001100[Y]补=[Y]原=01110100[X+Y]补=[X]补+[Y]补

=11001100+01110100=01000000X+Y=+1000000为什么补码可以把减法变成加法?从10进制来说:

减一,和加99,效果相同吗?

在100之内,它们就是相同的。

99,就是1的补数,100就是模。

从8位2进制来说:

减一,和加255,效果也是相同的。

255,就是1的补码,二进制数100000000就是模,即十进制的256。

求出补码后,就可以用“加补码”完成减法运算。

原理就是上述的“同模”理论。

如果结果的数字太大,超出了256所能容纳的范围,就是溢出。

溢出了,并没有解决的方法。

反码+1的方式,只是经验公式而已,没有原理。

它说明不了-128的补码。因为在8位二进制的条件下,-128并没有反码。69符号数运算中的溢出问题两个带符号二进制数相加或相减时,假设运算结果超出可表达范围,那么产生溢出溢出的判断方法:最高位进位状态次高位进位状态=1,那么结果溢出70[例]:假设:X=01111000,Y=01101001那么:X+Y=次高位向最高位有进位,而最高位向前无进位,产生溢出。〔事实上,两正数相加得出负数,结果出错〕71结束语:第1章难点:

补码的概念及其运算谢谢大家!72第2章微处理器与总线73主要内容:微处理器的功能和结构8088/8086微处理器特点主要引线功能和内部结构内部存放器实地址模式下的存储器寻址总线时序总线一、微处理器及8088/8086CPU741.微处理器运算器控制器内部存放器75微处理器762.程序和指令程序:具有一定功能的指令的有序集合指令:由人向计算机发出的、能够为计算机所识别的命令。773.

指令执行的一般过程取指令取指部件,分析部件,执行部件指令译码读取操作数执行指令存放结果784.顺序执行和并行流水线顺序执行方式:各功能部件交替工作,按顺序完成指令的执行过程。并行流水线方式:各功能部件并行工作。79顺序工作方式取指令1执行指令1分析指令1CPUBUS忙碌忙碌取指令2执行指令2分析指令280并行流水线工作方式

EU取指令1执行指令1分析指令1CPU取指令2执行指令2分析指令2取指令3执行指令3分析指令3

BIU忙碌忙碌忙碌忙碌忙碌

815.

8088/8086CPU的特点采用并行流水线工作方式——通过设置指令预取队列实现对内存空间实行分段管理——将内存分为4个段并设置地址段存放器,以实现对1MB空间的寻址支持多处理器系统CPU内部结构存储器寻址局部工作模式826.8088CPU的两种工作模式8088可工作于两种模式下

最小模式最大模式最小模式为单处理器模式。最大模式为多处理器模式。83两种工作模式的选择方式8088是工作在最小还是最大模式由MN/MX引线的状态决定。MN/MX=0——工作于最大模式MN/MX=1——工作于最小模式84二、8088/8086的引线及功能851.主要引线——最小模式下的8088引线地址线和数据线:AD0—AD7:低8位地址和低8位数据信号分时复用。在传送地址信号时为单向,传送数据信号时为双向。A16--A19:高4位地址信号,与状态信号分时复用。A8—A15:8位地址信号86主要的控制和状态信号WR:写信号;RD:读信号;IO/M:为“0”表示访问内存,为“1”表示访问接口;DEN:低电平有效时,允许进行读/写操作;DT/R:数据收发器的传送方向控制;ALE:地址锁存信号;RESET:复位信号。87例:当WR=1,RD=0,IO/M=0时,表示CPU当前正在进行读存储器操作88READY信号89中断请求和响应信号INTR:可屏蔽中断请求输入端NMI:非屏蔽中断请求输入端INTA:中断响应输出端90总线保持信号HOLD:总线保持请求信号输入端。当CPU

以外的其他设备要求占用总线时,通过该引脚向CPU发出请求。HLDA:总线保持响应信号输出端。CPU对

HOLD信号的响应信号。912.8088和8086CPU引线功能比较数据总线宽度不同8088的外部总线宽度是8位,8086为16位。访问存储器和输入输出控制信号含义不同8088——IO/M=0表示访问内存;8086——IO/M=1表示访问内存。其他局部引线功能的区别92三、8088/8086的内部结构931.组成8088/8086内部由两局部组成:执行单元〔EU〕总线接口单元〔BIU〕942.执行单元运算器8个通用存放器1个标志存放器EU局部控制电路教材第43页图2-6图95执行单元功能指令译码指令执行暂存中间运算结果保存运算结果特征指令的执行在标志存放器FLAGS中在ALU中完成在通用存放器中963.总线接口单元功能:从内存中取指令到指令预取队列指令预取队列是并行流水线工作的根底负责与内存或输入/输出接口之间的数据传送在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行。97结论指令预取队列的存在使EU和BIU两个局部可同时进行工作,从而:提高了CPU的效率;降低了对存储器存取速度的要求98四、内部存放器99内部存放器的类型含14个16位存放器,按功能可分为三类8个通用存放器4个段存放器2个控制存放器深入理解:每个存放器中数据的含义1001.通用存放器数据存放器〔AX,BX,CX,DX〕地址指针存放器〔SP,BP〕变址存放器〔SI,DI〕101数据存放器8088/8086含4个16位数据存放器,它们又可分为8个8位存放器,即:AXBXCXDXAH,ALCH,CLBH,BLDH,DL102数据存放器特有的习惯用法AX:累加器。所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中;BX:基址存放器。在间接寻址中用于存放基地址;CX:计数存放器。用于在循环或串操作指令中存放计数值;DX:数据存放器。在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。103地址指针存放器SP:堆栈指针存放器,其内容为栈顶的偏移地址;BP:基址指针存放器,常用于在访问内存时存放内存单元的偏移地址。104BX与BP在应用上的区别作为通用存放器,二者均可用于存放数据;作为基址存放器,用BX表示所寻找的数据在数据段;用BP那么表示数据在堆栈段。105变址存放器SI:源变址存放器DI:目标变址存放器变址存放器在指令中常用于存放数据在内存中的地址。1062.控制存放器IP指令指针存放器,其内容为下一条要执行指令的偏移地址。FLAGS标志存放器,存放运算结果的特征6个状态标志位〔CF,SF,AF,PF,OF,ZF〕3个控制标志位〔IF,TF,DF〕内存中的程序指令1指令2指令n┇分析获取操作数执行存放结果┇程序计数器PC地址CPU取出操作数107状态标志位〔1〕CF〔CarryFlag〕进位标志位。加(减)法运算时,假设最高位有进(借)位那么CF=1PF〔ParityFlag〕奇偶标志位。运算结果的低8位中“1”的个数为偶数时PF=lAF〔AuxiliaryCarryFlag〕辅助进位标志位。加(减)操作中,假设Bit3向Bit4有进位(借位),AF=1108状态标志位〔2〕ZF〔ZeroFlag〕零标志位。当运算结果为零时ZF=1SF〔SignFlag〕符号标志位。当运算结果的最高位为1时,SF=lOF〔OverflowFlag〕溢出标志位。当算术运算的结果超出了有符号数的可表达范围时,OF=l109状态标志位例给出以下运算结果及运算后各状态标志位的状态:10110110+1111010010110110

+11110100101010101CF=OF=AF=PF=SF=ZF=111010110控制标志位TF〔TrapFlag〕陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指令的工作方式。IF〔InterruptEnableFlag〕中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求。DF〔DirectionFlag〕方向标志位。在数据串操作时确定操作的方向。1113.段存放器作用用于存放相应逻辑段的段基地址8086/8088内存中逻辑段的数量最多为64K个8086/8088内存中逻辑段的类型代码段数据段附加段堆栈段存放指令代码存放操作的数据存放操作的数据存放暂时不用但需保存的数据。为什么叫逻辑段?每个段存放器中存放的内容=?112段存放器CS代码段存放器,存放代码段的段基地址。DS数据段存放器,存放数据段的段基地址。ES附加段存放器,存放数据段的段基地址。SS堆栈段存放器,存放堆栈段的段基地址段存放器的值说明相应逻辑段在内存中的位置113五、存储器寻址1141.内存单元的编址〔1〕每个内存单元在整个内存空间中都具有惟一的地址每个内存单元的地址码都由两局部组成:段〔基〕地址16位段内地址16位相对地址/偏移地址物理地址8088为16位结构,所以段地址和偏移地址均为16位115存储器的编址〔2〕段基地址:决定存储单元在内存中的位置相对地址〔偏移地址〕决定该存储单元相对段内第一个单元的距离逻辑段的起始地址称为段首每个逻辑段内的第一个单元段首的偏移地址=0116存储器的编址〔3〕0000段基地址〔16位〕段首地址〔段首的物理地址〕××ו••×××1904段首的偏移地址:0000H段基地址〔16位〕××ו••×××31015××ו••×××117存储器的编址〔4〕例:段基地址=6000H段首地址偏移地址=0009H物理地址数据段60009H00H12H60000H9物理地址:内存单元在整个内存空间中的惟一地址1182.实地址模式下的存储器地址变换内存物理地址由段基地址和偏移地址组成物理地址=段基地址×16+偏移地址0000段首地址××ו••×××1904××ו••×××偏移地址+物理地址119例:CS=1055H,DS=250AHES=2EF0HSS=8FF0H画出各段在内存中的分布。120例:CS=1055H段首地址=10550HDS=250AH段首地址=250A0HES=2EF0HSS=8FF0H10550H250A0H2EF00H8FF00H代码段数据段附加段堆栈段121例设某操作数存放在数据段,DS=250AH,数据所在单元的偏移地址=0204H。那么该操作数所在单元的物理地址为:250AH×16+0204H=252A4H1223.存储器的保护模式保护模式:支持多任务的工作模式,提供了多任务保护机制;内存段的访问受到限制,不能再随意存取数据段。保护模式下的内存访问不再直接从段存放器中获得段基地址,段基地址存放在内存的段描述符表中,由段描述符存放器给出段描述符表的基地址,段存放器中仅存放段选择符。123保护模式下的存储器地址变换1244.堆栈及堆栈段的使用堆栈:内存中一个特殊区域,用于存放暂时不用或需要保护的数据。常用于响应中断或子程序调用。125例:SS=1000H,SP=0100H那么:堆栈段的段首地址=栈顶〔偏移〕地址=假设该段最后一个单元地址为10200H,那么:栈底偏移地址=段首栈底栈顶堆栈区10000H0100H0200H1265.内部存放器小结全部为16位存放器只有4个数据存放器分别可分为2个8位存放器所有16位存放器中:全部通用存放器中,只有AX和CX中的内容一定为参加运算的数据,其余通用存放器中的内容可能是数据,也可能是存放数据的地址;SP中的内容通常为堆栈段的栈顶地址;段存放器中的内容为相应逻辑段的段地址;IP中的内容为下一条要取的指令的偏移地址;FLAGS中有9位标志位1276.实模式下的存储器寻址小结每个内存单元在整个内存空间中都具有惟一地址每个内存单元的地址都由两局部组成:段基地址段内相对地址〔偏移地址〕段基地址决定了逻辑段在内存中所占的区域,改变段基地址,那么改变了逻辑段的位置。一个逻辑段的默认长度为64KB,最小长度值为16B。逻辑段可以有多个,但只有4种类型。在一个程序模块中,每种类型的逻辑段最多只能有一个。128六、总线时序129时序时序:CPU各引脚信号在时间上的关系总线周期:CPU完成一次访问内存〔或接口〕操作所需要的时间。一个总线周期至少包括4个时钟周期。130七、8088系统总线131主要内容:总线的根本概念和分类;总线的工作方式;常用系统总线标准。1321.概述总线:

是一组导线和相关的控制、驱动电路的集合。是计算机系统各部件之间传输地址、数据和控制信息的通道。地址总线〔AB〕数据总线〔DB〕控制总线〔CB〕1332.总线分类CPU总线系统总线外部总线片内总线片外总线按相对CPU的位置分按层次结构分1343.总线的系统结构单总线结构CPUMMI/OI/OI/O135多总线结构面向CPU的双总线结构面向主存的双总线结构双总线结构多总线结构136面向CPU的双总线结构存储器与I/O接口间无直接通道CPUMI/OI/OI/O137面向存储器的双总线结构在单总线结构根底上增加一条CPU到存储器的高速总线CPUMI/OI/OI/O138现代微机中的多总线结构1394.总线的根本功能数据传送仲裁控制出错处理总线驱动1405.常用系统总线ISA〔8/16位〕PCI〔32/64位〕AGP〔加速图形端口,用于提高图形处理能力〕PCI-E〔PCIExpress〕目前最新的系统总线标准,采用串行方式传输数据,依靠高频率来获得高性能。1416.总线的主要性能指标总线带宽〔B/S〕:单位时间内总线上可传送的数据量总线位宽〔bit〕:能同时传送的数据位数总线的工作频率〔MHz〕总线带宽=〔位宽/8〕〔工作频率/每个存取周期的时钟数〕1427.两种工作模式下的总线连接8088可工作于两种模式下最小模式为单处理器模式,控制信号较少,一般可不必接总线控制器。最大模式为多处理器模式,控制信号较多,须通过总线控制器与总线相连。143最小模式下的总线连接示意图8088CPU••控制总线数据总线地址总线地址锁存数据收发ALE时钟发生器144最大模式下的总线连接示意图8088CPU数据总线地址总线地址锁存数据收发ALE时钟发生器总线控制器

控制总线145本章小结微处理器的一般构成8088CPU的主要引线及其功能8088CPU的内部结构内部存放器功能存放器中数据的含义8位存放器中存放的均为运算的数据存储器寻址逻辑地址,段基地址,偏移地址,物理地址堆栈栈顶地址,栈底地址,堆栈段基地址146谢谢大家!147第3章指令系统148主要内容:指令系统的一般概念对操作数的寻址方式六大类指令的操作原理:操作码的含义指令对操作数的要求指令执行的结果149§3.1

概述150了解:指令及指令系统;指令的格式;指令中的操作数类型;指令字长与机器字长;指令的执行时间CISC和RISC指令系统151一、指令与指令系统指令:控制计算机完成某种操作的命令指令系统:处理器所能识别的所有指令的集合指令的兼容性:同一系列机的指令都是兼容的。152二、指令格式指令中应包含的信息:运算数据的来源运算结果的去向执行的操作153指令格式操作码[操作数],[操作数]执行何种操作目标操作数源操作数参加操作的数据或数据存放的地址154指令格式:

零操作数指令:操作码单操作数指令:操作码操作数双操作数指令:操作码操作数,操作数多操作数指令:三操作数及以上155三、指令中的操作数立即数存放器存储器表征参加操作的数据本身表征数据存放的地址156立即数操作数立即数本身是参加操作的数据,可以是8位或16位,只能作为源操作数。例:MOVAX,1234HMOVBL,22H立即数无法作为目标操作数立即数可以是无符号或带符号数,其数值应在可取值范围内。157存放器操作数:参加运算的数存放在指令给出的存放器中,可以是16位或8位。例:MOVAX,BXMOVDL,CH158存储器操作数参加运算的数存放在存储器的某一个或某两个单元中。表现形式:[]立即数或存放器[]中的内容是存放所寻找数据的单元的偏移地址159存储器操作数例例:MOVAX,[1200H]MOVAL,[1200H]22H11H1200H偏移地址AHAL┇

160四、指令字长指令字长:由操作码的长度、操作数地址长度、操作数个数决定。161五、指令的执行速度指令的字长影响指令的执行速度对不同的操作数,指令执行的时间不同:

存储器快!立即数存放器162六、CISC和RISC指令系统CISC〔complexinstructionsetcomputer〕指令的功能强,种类多,常用指令用硬件实现;指令系统复杂,难使用。RISC指令系统指令功能较弱,种类少,格式简单;多数指令在一个计算机周期内完成;对存储器的结构和存取速度要求较高。163§3.2

寻址方式164寻址方式

寻找操作数所在地址的方法寻找转移地址的方法

本节165寻址方式操作数可能的来源或存放处:由指令直接给出存放器内存单元寻找操作数所在地址的方法可以有三种大类型指令直接给出的方式存放于存放器中的寻址方式存放于存储器中的寻址方式166一、立即寻址指令中的源操作数是立即数,即源操作数是参加操作的数据本身例:MOVAX,1200H12H00HAHALMOV代码段┇

立即寻址仅适合于源操作数167二、存放器寻址参加操作的操作数在CPU的通用存放器中。例:MOVAX,BXAXBX168三、直接寻址指令中直接给出操作数的偏移地址默认在数据段例:MOVAX,[1200H]22H11H1200H偏移地址┇

数据段AHAL169直接寻址直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。例:MOVAX,ES:[1200H]170四、存放器间接寻址参与操作的操作数存放在内存中,其偏移地址为指令中的存放器的内容。171存放器间接寻址例例:MOVAX,[BX]

设BX=1200H22H11H1200H偏移地址AHAL┇

1122数据段代码段MOV172存放器间接寻址由存放器间接给出操作数的偏移地址;存放偏移地址的存放器称为间址存放器,它们是:BX,BP,SI,DI操作数的段地址〔数据处于哪个段〕取决于选择哪一个间址存放器:BX,SI,DIBP默认在数据段默认在堆栈段173存放器间接寻址存放器间接寻址基址寻址〔间址存放器为基址存放器BX,BP〕变址寻址〔间址存放器为变址存放器SI,DI〕174五、存放器相对寻址操作数的偏移地址为存放器的内容加上一个位移量例:MOVAX,[BX+DATA]设:DS=2000H,BX=0220H,DATA=05H那么:AX=[20225H]175六、基址、变址寻址操作数的偏移地址为一个基址存放器的内容+一个变址存放器的内容;操作数的段地址由选择的基址存放器决定基址存放器为BX,默认在数据段基址存放器为BP,默认在堆栈段基址变址寻址方式与相对寻址方式一样,主要用于一维数组操作。176例:执行以下指令:MOVSI,1100HMOVBX,SIMOVAX,[SI+BX]22H11H2200H偏移地址AHAL┇

1122数据段177七、基址、变址、相对寻址操作数的偏移地址为:基址存放器内容+变址存放器内容+位移量操作数的段地址由选择的基址存放器决定。基址变址相对寻址方式主要用于二维表格操作。178例:执行以下程序段:MOVDI,1100HMOVBP,DIMOVAL,[BP][DI]522H11H2205H偏移地址AL┇

22堆栈段179八、隐含寻址指令中隐含了一个或两个操作数的地址,即操作数在默认的地址中。例:MULBL指令执行:AL×BLAX180§3.38086指令系统181掌握:指令码的含义指令对操作数的要求指令的对标志位的影响指令的功能1828086指令系统从功能上包括六大类:数据传送算术运算逻辑运算和移位串操作程序控制处理器控制183数据传送指令通用数据传送输入输出地址传送标志位操作184一、通用数据传送一般数据传送指令堆栈操作指令交换指令查表转换指令字位扩展指令特点:该类指令的执行对标志位不产生影响

1851.一般数据传送指令一般数据传送指令MOV格式:MOVdest,src操作:src例:

MOVAL,BL

dest186一般数据传送指令注意点:两操作数字长必须相同;两操作数不允许同时为存储器操作数;两操作数不允许同时为段存放器;在源操作数是立即数时,目标操作数不能是段存放器;IP和CS不作为目标操作数,FLAGS一般也不作为操作数在指令中出现。187一般数据传送指令例判断以下指令的正确性:MOVAL,BXMOVAX,[SI]05HMOV[BX][BP],BXMOVDS,1000HMOVDX,09HMOV[1200],[SI]188一般数据传送指令应用例将(*)的ASCII码2AH送入内存数据段1000H开始的100个单元中。题目分析:确定首地址确定数据长度写一次数据修改单元地址修改长度值判断写完否?未完继续写入,否那么结束1063H100B1000H┇

2AH数据段2AH2AH2AH189一般数据传送指令应用例程序段:MOVDI,1000HMOVCX,64HMOVAL,2AHAGAIN:MOV[DI],ALINCDI;DI+1DECCX;CX-1JNZAGAIN;CX≠0那么继续HLT190上段程序在代码段中的存放形式設CS=109EH,IP=0100H,那么各条指令在代码段中的存放地址如下:CS:IP机器指令汇编指令109E:0100B80010MOVDI,1000H109E:0103.MOVCX,64H109E:0105.MOVAL,2AH109E:0107.MOV[DI],AL109E:0109INCDI109E:010ADECCX109E:010BJNZ0107H109E:010DHLT191数据段中的分布

送上2AH后数据段中相应存储单元的内容改变如下:DS:10002A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2ADS:10102A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2ADS:10202A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2ADS:10302A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2ADS:10402A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2ADS:10502A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2ADS:10602A2A2A2A000000000000000000000000偏移地址[DI]1922.堆栈操作指令掌握:有关堆栈的概念栈顶、栈首、栈底堆栈指令的操作原理执行过程,执行结果193堆栈操作的原那么先进后出以字为单位194堆栈操作指令压栈指令PUSH

格式:PUSHOPRD出栈指令POP

格式:POPOPRD16位存放器或存储器两单元16位存放器或存储器两单元195压栈指令PUSH指令执行过程:SP-2→SP操作数高字节→SP+1操作数低字节→SP┇

SP堆栈段SP高8位低8位196压栈指令的操作设AX=1234H,SP=1200H执行PUSHAX指令后堆栈区的状态:1200H┇

堆栈段SP-2=11FEH12H34H1200H┇

堆栈段12H34HAX入栈后入栈前197出栈指令POP指令执行过程:

SP

SP+1SP←SP+2操作数低字节操作数高字节┇

SP堆栈段SP高8位低8位198出栈指令的操作执行POPAX12H34H11FEH┇

堆栈段代码段PUSH1234AX

SP+21200H┇

出栈后出栈前199堆栈操作指令说明指令的操作数必须是16位的;操作数可以是存放器或存储器两单元,但不能是立即数;不能从栈顶弹出一个字给CS;PUSH和POP指令在程序中一般成对出现;PUSH指令的操作方向是从高地址向低地址,而POP指令的操作正好相反。200堆栈操作指令例MOVAX,1234HMOVSP,AXMOVBX,5678HMOV[BX],AHMOV[BX+1],BLPUSHAXPUSHBXPUSHWORDPTR[BX]POPWORDPTR[BX]POPAXPOPBX┇

如此,会使AX和BX的内容互换2013.交换指令格式:XCHGREG,MEM/REG注:两操作数必须有一个是存放器操作数不允许使用段存放器。例:XCHG AX,BXXCHG [2000],CL2024.查表指令格式:

XLAT说明:用BX的内容代表表格首地址,AL内容为表内位移量,BX+AL得到要查找元素的偏移地址操作:将BX+AL所指单元的内容送AL203查表指令例数据段中存放有一张ASCII码转换表,设首地址为2000H,现欲查出表中第11个代码的ASCII码303132...394142...45462000H+02000H+11‘0’‘1’‘2’‘9’‘A’‘B’‘E’‘F’204查表指令例可用如下指令实现:MOVBX,2000H;BX←表首地址MOVAL,0BH;AL←序号XLAT

;查表转换执行后:AL=42H还可用其他方法实现,如:MOVBX,2000HMOVAL,[BX+0BH]2055.字位扩展指令将符号数的符号位扩展到高位;指令为零操作数指令,采用隐含寻址,隐含的操作数为AX及AX,DX无符号数的扩展规那么为在高位补0206字节到字的扩展指令格式:CBW操作:将AL内容扩展到AX规那么:假设最高位=1,那么执行后AH=FFH假设最高位=0,那么执行后AH=00H207字到双字的扩展指令格式:CWD操作:将AX内容扩展到DXAX规那么:假设最高位=1,那么执行后DX=FFFFH假设最高位=0,那么执行后DX=0000H208字位扩展指令例判断以下指令执行结果:MOVAL,44HCBWMOVAX,0AFDEHCWDMOVAL,86HCBW209二、输入输出指令掌握:指令的格式及操作指令的两种寻址方式指令对操作数的要求210输入输出指令专门面向I/O端口操作的指令指令格式:输入指令:INacc,PORT输出指令:OUTPORT,acc端口地址211指令寻址方式根据端口地址码的长度,指令具有两种不同的端口地址表现形式。直接寻址端口地址为8位时,指令中直接给出8位端口地址;寻址256个端口。间接寻址端口地址为16位时,指令中的端口地址必须由DX指定;可寻址64K个端口。212I/O指令例INAX,80HMOVDX,2400HINAL,DXOUT35H,AXOUTAX,35H213三、地址传送指令取偏移地址指令LEA*LDS指令*LES指令214取偏移地址指令LEA操作:将变量的16位偏移地址取出送目标存放器当程序中用符号地址表示内存偏移地址时,须使用该指令。格式:LEAREG,MEM指令要求:源操作数必须是一个存储器操作数,目标操作数通常是间址存放器。符号地址215LEA指令比较以下指令:MOVSI,DATA1LEASI,DATA1

MOVBX,[BX]LEABX,[BX]┇

DATA1符号地址12H34H1100H88H77HBX=1100H执行结果:SI=1234H执行结果:SI=DATA1执行结果:BX=7788H执行结果:BX=1100H216LEA指令在程序中的应用将数据段中首地址为MEM1的50个字节的数据传送到同一逻辑段首地址为MEM2的区域存放。编写相应的程序段

217LEA指令在程序中的应用开始取源地址取目标地址送数据块长度到CL传送一个字节修改地址指针修改计数值计数值=0?结束NY218LEA指令在程序中的应用LEASI,MEM1LEADI,MEM2MOVCL,50NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCLJNZNEXTHLT┇

MEM112H34HMEM2219四、标志位操作指令LAHFSAHFPUSHFPOPF隐含操作数AH隐含操作数FLAGS2201.

LAHF,SAHFLAHF操作:将FLAGS的低8位装入AHCFPFAFZFCF….AHFLAGSD15D0D7D0SAHF执行与LAHF相反的操作2212.

PUSHF,POPF针对FLAGS的堆栈操作指令将标志存放器压栈或从堆栈弹出222算术运算类指令223算术运算类指令加法运算指令减法运算指令乘法指令除法指令算术运算指令的执行大多对状态标志位会产生影响224一、加法指令普通加法指令ADD

带进位位的加法指令ADC加1指令INC加法指令对操作数的要求与MOV指令相同2251.

ADD指令格式:

ADDOPRD1,OPRD2操作:

OPRD1+OPRD2ADD指令的执行对全部6个状态标志位都产生影响OPRD1226ADD指令例MOVAL,78HADDAL,99H指令执行后6个状态标志位的状态227ADD指令例01111000+10011001000100011标志位状态:CF=SF=AF=ZF=PF=OF=1010102282.

ADC指令指令格式、对操作数的要求、对标志位的影响与ADD指令完全一样指令的操作:

OPRD1+OPRD2+CFOPRD1ADC指令多用于多字节数相加,使用前要先将CF清零。229ADC指令应用例——求两个20B数的和LEASI,M1LEADI,M2MOVCX,20CLC;使CF=0NEXT:MOVAL,[SI]ADC[DI],ALINCSIINCDIDECCXJNZNEXTHLT┇

M112H34HM22303.

INC指令格式:

INCOPRD操作:

OPRD+1OPRD常用于在程序中修改地址指针不能是段存放器或立即数231二、减法指令普通减法指令SUB考虑借位的减法指令SBB减1指令DEC比较指令CMP求补指令NEG减法指令对操作数的要求与对应的加法指令相同2321.

SUB指令格式:SUBOPRD1,OPRD2操作:OPRD1-OPRD2OPRD1对标志位的影响与ADD指令同2332.

SBB指令指令格式、对操作数的要求、对标志位的影响与SUB指令完全一样指令的操作:OPRD1-OPRD2-CFOPRD12343.

DEC指令格式:DECOPRD操作:OPRD-1OPRD指令对操作数的要求与INC相同指令常用于在程序中修改计数值235应用程序例MOVBL,2NEXT1:MOVCX,0FFFFHNEXT2:DECCXJNZNEXT2;ZF=0转NEXT2DECBLJNZNEXT1;ZF=0转NEXT1HLT;暂停执行2364.

NEG指令格式:NEGOPRD操作:0-OPRDOPRD8/16位存放器或存储器操作数用0减去操作数,相当于对该操作数求补码2375.

CMP指令格式:CMPOPRD1,OPRD2操作:OPRD1-OPRD2指令执行的结果不影响目标操作数,仅影响标志位!238CMP指令用途:用于比较两个数的大小,可作为条件转移指令转移的条件指令对操作数的要求及对标志位的影响与SUB指令相同239CMP指令两个无符号数的比较:CMPAX,BX假设AX>BX假设AX<BXCF=0CF=1240CMP指令两个带符号数的比较CMPAX,BX两个数的大小由OF和SF共同决定OF和SF状态相同AX>BXOF和SF状态不同AX<BX241CMP指令例

LEABX,MAXLEASI,BUFMOVCL,20MOVAL,[SI]NEXT:INCSICMPAL,[SI]JNCGOON

;CF=0转移

XCHG[SI],ALGOON:DECCLJNZNEXTMOV[BX],AL

HLT242程序功能┇

MAXBUFXXHXXHXXH在20个数中找最大的数,并将其存放在MAX单元中。243三、乘法指令无符号的乘法指令MUL*带符号的乘法指令IMUL注意点:乘法指令采用隐含寻址,隐含的是存放被乘数的累加器AL或AX及存放结果的AX,DX.2441.无符号数乘法指令格式:

MULOPRD

不能是立即数操作:

OPRD为字节数

OPRD为16位数

AL×OPRDAX×OPRDDXAXAX245无符号数乘法指令例MULBYTEPTR[BX]┇

BXXXHAL×XXHAX246四、除法指令无符号除法指令格式:DIVOPRD有符号除法指令格式:IDIVOPRD247除法指令的操作假设OPRD是字节数执行:AX/OPRD结果:AL=商AH=余数假设OPRD是双字节数执行:DXAX/OPRD结果:AX=商DX=余数指令要求被除数是除数的双倍字长248五、BCD码调整指令将指令执行的二进制运算结果调整为压缩BCD码或扩展BCD码表示的十进制数。共6条,均为隐含寻址方式,隐含的操作数是AL或AL、AH;不能单独使用,要紧跟在相应的算术运算指令之后;249逻辑运算和移位指令250指令类型逻辑运算与,或,非,异或移位操作非循环移位,循环移位251一、逻辑运算逻辑运算指令对操作数的要求大多与MOV指令相同。“非”运算指令要求操作数不能是立即数;除“非”运算指令外,其余指令的执行都会使标志位OF=CF=02521.“与”指令:格式:

ANDOPRD1,OPRD2操作:两操作数相“与”,结果送目标地址。253“与”指令的应用实现两操作数按位相与的运算ANDBL,[SI]使目标操作数的某些位不变,某些位清零ANDAL,0FH在操作数不变的情况下使CF和OF清零ANDAX,AX254“与”指令应用例从地址为3F8H端口中读入一个字节数,如果该数bit1位为1,那么可从38FH端口将DATA为首地址的一个字输出,否那么就不能进行数据传送。编写相应的程序段。255“与”指令应用例开始取待输出数的偏移地址读入状态字测试bit1位状态Bit1=1?取输入口地址取输出口地址

输出一个字NY256“与”指令应用例

LEASI,DATAMOVDX,3F8HWATT:INAL,DXANDAL,02HJZWATT;ZF=1转移MOVDX,38FHMOVAX,[SI]OUTDX,AX2572.“或”运算指令格式:

OROPRD1,OPRD2操作:

两操作数相“或”,结果送目标地址258“或”指令的应用实现两操作数相“或”的运算ORAX,[DI]使某些位不变,某些位置“1”ORCL,0FH在不改变操作数的情况下使OF=CF=0ORAX,AX259“或”指令的应用例

ORAL,ALJPEGOONORAL,80H

GOON:….PF=1转移260“或”指令的应用将一个二进制数9变为字符‘9’如何实现?2613.“非”运算指令格式:NOTOPRD操作:操作数按位取反再送回原地址注:指令中的操作数不能是立即数指令的执行对标志位无影响例:NOTBYTEPTR[BX]2624.“异或”运算指令格式:XOROPRD1,OPRD2操作:两操作数相“异或”,结果送目标地址例:XOR

BL,80H

XORAX,AX2635.“测试”指令格式:TESTOPRD1,OPRD2操作:执行“与”运算,但运算的结果不送回目标地址。应用:常用于测试某些位的状态264例:从地址为3F8H的端口中读入一个字节数,当该数的bit1,bit3,bit5位同时为1时,可从38FH端口将DATA为首地址的一个字输出,否那么就不能进行数据传送。编写相应的程序段。265源程序代码:

LEASI,DATAMOVDX,3F8HWATT:INAL,DX

MOVDX,38FHMOVAX,[SI]OUTDX,AXANDAL,2AHCMPAL,2AHJNZWATTTESTAL,02HJZWATT;ZF=1转移TESTAL,08HJZWATTTESTAL,20HJZWATTANDAL,2AHXORAL,2AHJNZWATT266二、移位指令

非循环移位指令循环移位指令注:移动一位时由指令直接给出;移动两位及以上,那么移位次数由CL指定。2671.非循环移位指令逻辑左移算术左移逻辑右移算术右移268算术左移和逻辑左移算术左移指令:

SALOPRD,1SALOPRD,CL逻辑左移指令:SHLOPRD,1SHLOPRD,CL有符号数无符号数269逻辑右移格式:

SHROPRD,1SHROPRD,CL0CF无符号数的右移270逻辑右移例:MOVAL,68HMOVCL,2SHRAL,CL0CF011010AL00000110100ALCF0000011010ALCF00移动1次移动2次271算术右移格式:

SAROPRD,1SAROPRD,CL有符号数的右移CF272非循环移位指令的应用左移可实现乘法运算右移可实现除法运算

教材p121例2732.循环移位指令不带进位位的循环移位带进位位的循环移位左移ROL右移ROR左移RCL右移RCR指令格式、对操作数的要求与非循环移位指令相同274不带进位位的循环移位CFCF275带进位位的循环移位CFCF276循环移位指令的应用用于对某些位状态的测试;高位局部和低位局部的交换;与非循环移位指令一起组成32位或更长字长数的移位。P124例3-34P124例3-35277程序功能将1000H开始存放的4个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。┇┇12H34H56H78H┇1000H3000H278程序例

MOVSI,1000HMOVDI,3000HMOVCX,4 Next:MOVAL,[SI]

MOVBL,AL

ANDAL,0FH ORAL,30H

MOV[DI],ALINCDIMOVAL,BLPUSHCXMOVCL,4SHRAL,CLORAL,30HMOV[DI],ALINCDIINCSIPOPCXDECCXJNZNextHLT279串操作指令280串操作指令说明针对数据块或字符串的操作;可实现存储器到存储器的数据传送;待操作的数据串称为源串,目标地址称为

温馨提示

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

评论

0/150

提交评论