微机原理--微机原理及应用(第五版)_第1页
微机原理--微机原理及应用(第五版)_第2页
微机原理--微机原理及应用(第五版)_第3页
微机原理--微机原理及应用(第五版)_第4页
微机原理--微机原理及应用(第五版)_第5页
已阅读5页,还剩473页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 微型计算机基础知识 常用常用数据类型数据类型数学数学协处理器的数据格式协处理器的数据格式1.1.1 数据在内存储器中的存储方式字节:8个二进制位.一个字节也叫做一个存储单元.地址:对内存中存储单元的编号.从0开始直到CPU能支持的最高地址.字:相邻两个字节存放一个数.16位.双字:相邻四个字节存放一个数.32位. 多字节数据的存储采取高位字节在高地址的原则.数据所在地址是低字节所在的地址.多字节数据的存储情况例如字1234和双字3C5D7E9F的存储地址地址m+2m+1mm -1 1 2 3 4 3 C 5 D 7 E 9 Fm+4m+3m+2m+1mm-1(a) 字的存储(b) 双字

2、的存储1.1.2 数的进位制表示约定 二进制:数的后面加后缀B. 十进制:数的后面加后缀D或不加. 十六进制:数的后面加后缀H. 十六进制二进制十进制十六进制二进制十进制000A101010111B1011112102C1100123113D11011341004E11101451015F1111156110610100001671117111000117810008等等等等等等9100191.1.3 整数1.无符号数 8、16、32位全部用来表示数值本身。 最低位LSB是0位,最高位MSB是7、15、31。2.带符号整数 1).原码: 设X=+1011100B,Y=-1011100B 此时X

3、和Y被称为真值. 则X原=01011100,Y原=11011100 而+0原=00000000, -0原=10000000 综上述X原=X X为正2n-1-X X为负2).补码和反码举一实例:3点钟-7小时=8时 3点钟+5小时=8时 即:3-7=3+5 为什么?答:时钟是以12为模,5是-7的补码. 在计算机中采用补码主要原因有二,一是可以将减法变成加法来运算.二是补码的符号位可以参加运算. 计算机中是用2n为模为模2补码.X补补=2n+X若以2n-1为模的补码称1补码-反码反码X反反=2n-1+X根据上面的公式得:X为正时: X反反=X补补=X原原X为负时:求X补补是将X原原的符号位不变,

4、其余各位 变反加1. 求X反反是将X原原的符号位不变,其余各位 变反.补码没有+0和-0之分;反码有+0和-0之分 +0补=00.00=0 -0补=00.00=0 +0反=00.00=0 -0反=00.00=111.11例如:X=+1010011B X反=X补=X原=01010011 X=-1010011B X原=11010011 X补=10101101 X反=101011003).移码针对补码不易比较大小的缺点而出现了移码 X移= 2n-1 -1+X X-2n-1 且X=2n-12n-1-1为偏移量例如:X=+10010B=+18,Y=-10010B=-18 X移= 26-1 -1+X=01

5、1111+010010=110001B Y移= 26-1 -1+Y=011111-010010=001101B3.带符号数的运算 原码原码: :类似于正负数的笔算 优点:直观. 缺点:减法过程非常繁锁. 适用:浮点数的有效数字. 二进制乘除法. 补码补码:优点:符号位和数值一起运算; 减法可以变成加法运算. 缺点:数值比较大小时易出错. 适用:加减法的运算中.运算公式:x:x+ +yy补补=x=x补补+ +yy补补 其中:|x|,|y|,|x+y|2n-1 -y补补=y变补变补y变补变补就是将yy补补连同符号位一起各位变反加1. 反码反码: :常用在求反逻辑运算中,其它运算不用. 移码移码:优

6、点:能很方便的比较出真值的大小. 适用:A/D和D/A转换器的双极性编码. 浮点数的阶码中. .4.无符号数运算(补码运算) xx补补+ +yy补补= x= x+ +yy补补 其中:x、y及(x+y)=y, x补+-y补最高位有进位,结果为正. x-y补=x-y原 2).若xy, x补+-y补最高位无进位,结果为负.将x-y补再求一次补前边加上负号就得到x-y的真值.例1.1用补码运算:129-79 79-129解: .设x=129,y=79则 x补=10000001B,y补=01001111B-y补=y变补=10110001Bx-y补=x补+-y补=00110010B 最高位有进位,结果为正

7、x-y补= x-y原=00110010B x-y=50 .设x=79,y=129则 x补=01001111B,y补=10000001B-y补=y变补=01111111Bx-y补=x补+-y补=11001110B 最高位无进位,结果为负 x-y=-50总结:对于无符号数和有符号数的补码运算,计算机运算的方法都是一样的.只是结果判断正负的方法不同. 无符号数. 加法:结果必为正.只要不溢出(最高位没有 进位)结果就是正确的. 减法:补码运算结果有进位结果为正.否 则为负. 有符号数.加减法结果看符号位.是否溢 出用下述方法判别. .5.有符号数加减运算溢出判别 采用双高位判别法.在计算机内设置两个

8、进位位分别是: CS:表示符号位向前进位情况.如有进位CS=1,否 则CS=0. CP:表示数值部分最高位向符号进位情况,如有进位CP=1, 否则CP=0. 分析: CS CP 溢出情况 0 0 无溢出 0 1 正溢出 1 0 负溢出 1 1 无溢出例1.2 01011010B +90 + 01101011B +107 11000101B 197 CS =0 CP =1 是正溢出例1.3 10010010B -110补 + 10100100B -92补 100110110B CS =1 CP =0 是负溢出例1.4 00101101B +45 + 00101101B +45 01011010B

9、 +90 CS =0 CP =0 无溢出例1.5 11111110B -2补 + 11111110B -2补 111111100B -4补 CS =1 CP =1 无溢出例1.6 10001011B -117补 + 01111001B +121 100000100B +4 CS =1 CP =1 无溢出,结果为正 11110100B -12 + 00001001B +9 11111101B -3 CS =0 CP =0 无溢出,结果为负6.算术移位 对寄存器和存储器中的数,左移一位,绝对值增大一倍.右移一位绝对值减少一半.(只要没把有效数值移出).1).对于正数,左移或右移,空位都补0 例 0

10、0001110B +14 左移一位 00011100B +28 右移一位 00000111B +72).补码表示的负数 左移低位补0,右移高位补1. 例 11110010B -14补 左移一位 11100100B -28补 右移一位 11111001B -7补3).反码表示的负数 左移和右移空位全补1. 例 11110001B -14补 左移一位 11100011B -28补 右移一位 11111000B -7补7.有关0的问题 原码和反码都+0和-0之分,而补码没有,补码中的10000000表示-128(8位机) 下面用例题说明这一点:例1.7 -128补=10000000B,下面运算正确

11、-64 11000000B +)-64 + 11000000B -128 110000000B -128补符号位进位丢失 -128 10000000B +)+127 01111111B -1 11111111B -1补例1.8 若误认为-0补=10000000B,运算便会出错: -0 10000000 +)+1 + 00000001 +1 10000001 -127补+1出错 1.1.4 字符串 字符串是存储器中相邻存储单元字符序列. 80386对字符串的操作有:移动;传送;比较;查找等. 分类:字节串;字串;双字串.1.1.5 位及位串 80 x86CPU都支持位操作.80386/80486

12、有位串操作.位串最长是232个位. 位偏移量:一个位在位串中的地址.由字节地址和位余数组成.设位串是从地址开始存储的,位偏移量分别为23和-18的位在什么地方? 23/8=27 在第m+2字节中的第7位. -18/8=36 在第m-3字节中的第6位. mm-1m+1m+2m-207.1.1.6 BCD码及ASC码1.十进制数的二进制编码 1).8421码 2).2421码 3).余3码 见P12表1.42.ASCII码 1)7位的ASC码. 2)8位的ASC码. 见P13表1.53.奇偶校验码奇校验:编码“1”的个数为奇数,校验位置“0” 否则校验位置“1”.缺点:双重差错是无法校验出来的.1

13、.2 数学协处理器的数据格式80387支持的数据类型数据类型二进制位数十进制值大致范围字整数16-32768到32767短整数32-2x109到2x109长整数64-9x1018到9x1018压缩BCD80-9999到99.99(18位)短实数32-3.39x10-38到3.39x1038长实数64-1.19x10-308到1.19x10308临时实数80-1.19x10-4932到1.19x1049321.2.1 整型数80387支持长整型数,而80386支持字节整型数. 1.2.2 BCD码压缩BCD码占80位,即10个字节.能存储20位BCD数,但在80387中只用了18位BCD数.余下

14、1个字节的最高位为符号位.其余7位不用.m+9 m+8 m+7 m+6 m+5 m+4 m+3 m+2 m+1 m最高位是符号位7位不用1.2.3 实型数任何一个二进制数可以表示成: N=+S2J 称为浮点表示法80387规定:指数采用移码表示。短型实数阶码占8位;长型实数阶码占11位。临时实数阶码占15位。短型实数和长型实数的尾数中的1和小数点均隐藏。临时实数小数点前的1不省略。作业:P37 2.5.6.9.10.14 阅读引论.S指数有效数字第二章第二章 微型计算机组成及微型计算机组成及 微处理器功能结构微处理器功能结构 2.1 2.1 微型计算机的组成及工作原理微型计算机的组成及工作原理

15、 2.2 8086/80882.2 8086/8088及及8028680286微处理器微处理器 2.3 803862.3 80386微处理器的功能结构微处理器的功能结构 2.4 804862.4 80486微处理器的功能结构微处理器的功能结构 2.5 Pentium2.5 Pentium级微处理器简介级微处理器简介2.1 微型计算机的组成及工作原理微型计算机的组成:CPU存储器I./O接口I/O设备控制总线地址总线数据总线2.1.1微处理器(CPU) 组成:控制器;运算器;寄存器组成。 控制器是由指令寄存器;指令译码器; 控制电路组成。 指令:是一组二进制编码信息,包括操作码 和操作数或操作数

16、地址2.1.2 存储器 组成:内存储器是由半导体存储器芯片组成。 读/写操作:称为CPU访存操作.读就是取.写就是 送(存).读操作原存储单元内容不变,写 操作原存储单元内容被改写.2.1.3 输入/输出设备及其接口电路输入设备:将程序、原始数据及现场信息以计算机能 识别的形式送到计算机中,供计算机自动计 算或处理。(键盘 鼠标 数字化仪 扫描仪 A/D等)输出设备:将计算机处理的结果以人能识别的形式输 出来。(显示器 打印机 绘图仪 D/A等)外部存储器:软.硬磁盘即是输入设备也是输出设备. 只读光盘是输入设备.接口电路:是CPU与I/O设备联系的必经之路.起信息统 一和联系作用.2.1.4

17、 总线 总线是具有逻辑控制功能的信号线.1.数据总线(DB): 在CPU,内存和接口之间传递指令和数据.是双向的.总线宽度(总线中信号线的条数)有8位、16位、32位、64位。2.地址总线(AB): 用于传送CPU要访问的存储单元或I/O接口的地址号.是单向的。3.控制总线(CB): 用于CPU向其它部件传送控制信号,其它部件向CPU传送状态信号及请求信号。2.1.5 微型计算机整机工作原理简述人 程序 计算机的内存 指令指针控制部件 译码器 指令队列 经DB各执行部件 结果输出转移指令修改指令指针.2.2 8086/8088及80286微处理器的功能结构 属Intel公司生产的第三代16位微

18、处理器.新增功能:总线加宽一倍,增加了流水执行部 件和总线接口分为两个独立部件. 并行工作.取指令译码取数据执行 存储结果 重复前面操作.取指令1 取指令2 取数据1取指令3存储结果1 取指令4译码1执行1译码2执行22.2.1 8086/8088CPU的功能结构1.8086/8088CPU的内部结构寄存器阵列ALU及标志寄存器控制电路指令译码器段寄存器及指令指针地址加法器总线控制电路指令流队列2.指令流队列 是一个先进先出的栈,6/4个指令字节.总线周期:CPU访问一次存储器或I/O端口所需时间.3.存储器的分段结构和物理地址的形成 物理地址:每个存储单元的实际地址编码. 8086/8088

19、 20位地址总线 1MB空间 分段结构:1MB可分若干段,大小根据需要而定.每段不超过64KB 段首地址:段的启始地址称段首地址,要求低4位为0. 段基址:段首地址的高16位. 地址偏移量:段内相对于段首址的地址.内存储器单元地址的两种表示方法: 逻辑地址 段基址段基址:偏移量偏移量 物理地址 物理地址物理地址=段基址段基址x10H+偏移量偏移量2.2.2 80286的功能结构1.CPU主要性能:集成了13.5万只晶体管;68个引脚;四列直插式封装;地址/数据总线分开(16位数据线,24位地址线);时钟频率为8MHz10MHz;增加存储器管理和保护机构. 工作方式:1)实地址方式. 2)虚地址

20、方式. 配80287数学协处理器.2.80286CPU的内部结构 地址部件地址部件物理地址发生器段寄存器段描述符Cache指令译码器已译码指令队列通用寄存器ALU及标志寄存器控制总线接口 预取器预取队列1).总线接口部件BIU: 负责处理CPU和系统总线之间的所有通信和数 据传输.2).指令部件IU: 从预取队列取出指令字节到指令译码器,译成 69位内部码送已译码指令队列.3).执行部件EU: 由ALU;FR;控制电路组成.完成指令的执行操作.4).地址部件AU: 实地址方式:与8086一样. 保护方式:AU必须做许可性检查和当前任务的段 限制检查.2.32.3 8038680386微处理器的

21、功能结构微处理器的功能结构 主要性能指标: 32位;132条引脚;网络阵列式封装;32条地址线;12.5MHz及16MHz. 具有段页式存储器管理部件,4级保护机构. 有两种芯片:80386SX(准32位机)和80386DX. 工作方式: 1).实地址方式 2).虚地址保护方式:每段长4GB;可寻实地址4GB;寻虚地址64TB最多可用16K个段. 3).虚拟8086方式:实地址方式的同时,利用虚拟保护机构运行多用户操作系统及程序.2.3.1 80386CPU的功能结构 分段部件分段部件 分页部件分页部件 总线接总线接口部件口部件三输入加法器描述符高速缓冲存储器界限和属性PLA加法器页高速缓冲存

22、储器控制和属性PLA地址驱动器流水线总线宽度控制收发器桶形移位器ALU乘/除硬件寄存器组指令译码器已译码指令队列预取器/校验器16字节预取队列译码和定序控制ROM保护检测部件请求判优器1.总线接口部件 主要用于将CPU与外部总线连接起来.CPU内部的其它部件都能与BIU直接通信,并将它们的总线请求传给BIU.2.指令预取部件 当BIU空闲时,预取队列有空单元或有转移时,便通过分页部件向BIU发指令预取请求.3.指令译码部件 从指令预取队列中取出指令码译成内码送已译码指令队列. 以上三部分构成了指令流水线. 4.执行部件 从已译码队列取来内码变成一系列控制信息发向其它部件完成指令的执行.5.分段

23、部件 将逻辑地址转换成线性地址.送分页部件.6.分页部件 在操作系统软件的控制下,若分页部件处于允许状态,便将分段部件或代码预取部件产生的线性地址转换成物理地址. 分段部件,分页部件和BIU构成地址流水线2.3.2 80386CPU的寄存器1.通用寄存器:(共4个)主要用来存放操作数或操作数地址的。 2.变址寄存器(共2个) 源变址源变址3.指针寄存器(共3个)堆栈:是一组寄存器或一个存储区.堆栈的用途:在调用子程序或中断时存放断 点数据的.主程序调用子程序1调用子程序1子程序1调用子程序2.返回子程序2.返回堆栈的工作原理: 存储器高地址存储器低地址4.段寄存器段描述符寄存器 段寄存器:(共

24、6个,16位) 数据段寄存器DS:存放数据段的段基址. 堆栈段寄存器SS:存放堆栈段的段基址. 代码段寄存器CS:存放代码段的段基址. 附加段寄存器ES;FS;GS:存放当前附加段 段基址. 段描述符寄存器:64位,一个段选择器对应一个段描述符寄存器.32位段基址 20位段限12位其它属性5.标志寄存器EFLAGS(32位)3103002902802702602502402302202001901801515050301).状态标志:保存ALU运算结果的特殊信息. CF:有进位(借位)置“1”,否则置“0”. PF:算术逻辑运算结果低8位中“1”的个数为偶置“1”,否则置“0”. AF:ALU

25、加法运算时结果的第3位向第4位有进位(借位)置“1”,否则置“0”. ZF:ALU的结果为全零置“1”,否则置“0”. SF:ALU的结果最高位是“1”,表示负数置“1”,否则置“0”. OF:有符号加(减)结果产生溢出时置“1”,否则置“0”.CsCp=1时溢出.判别两个带符号数a与b的大小(a-b)OF SF=1说明ab 否则说明ab以上6个标志位与8086/8088 80286完全兼容.CF;ZF;SF;OF支持8位;16位;32位运算.PF:只反映低8位中“1”的个数.AF:只反映第3位向第4位进位或借位情况.2).控制标志:(共7个)可用程序来置位或清零, 具有一定的控制能力 TF:

26、陷阱标志(单步操作标志)TF=1时,CPU每执行完一条指令,就去执行服务程序,向用户提供各寄存器状况等.用于程序调试. IF:中断允许标志,IF=1时可接受并响应可屏蔽中断. DF:方向标志,指定字符串处理指令的步进方向.DF=1时是减地址,DF=0时是增地址. 以上3个标志位与8086/8088 80286兼容. IOPL:输入/输出特权级标志,有四种状态. 00最高特权;11最低特权.当前特权级高于或等于IOPL所表示的特权级I/O指令可以执行.否则产生一个保护异常. NT:嵌套任务标志,用于控制返回指令的运行.NT=1当前任务正嵌套在另一任务之中.返回操作通过任务切换来执行.即不同任务之

27、间的返回.NT=0时是同一任务的返回. 以上两个标志只在保护方式有效,8086仿真方式(实方式)下无效. RF:重新启动标志(调整恢复标志) RF=0时,调试故障被接受并应答. RF=1时,调试故障被忽略. VM:虚拟8086方式标志,VM=1时CPU在虚拟8086方式下运行,VM=0时CPU在一般方式下运行. 以上两个标志是80386新增的控制标志.6.控制寄存器(4个32位)CR0:PG 保留 机器状态字ETTSEMMPPE1).PE:允许保护标志,用于CPU是否进入保护方式,PE=1进入保护方式.若想解除,只有通过系统复位重新启动.系统默认是实地址方式.2).MP:监控数学协处理器扩充标

28、志,用来表示协处理器是否存在.MP=1时表示协处理器存在.MP=0时协处理器不存在.3).EM:仿真协处理器扩充标志,用来表示是否用软件来仿真数学协处理器.EM=1时表示采用软件仿真数学协处理器的功能.4).TS:任务转换标志,由硬件置位,由软件复位.当一个任务转换完成后,TS自动置“1”.下一条企图使用数学协处理器的指令将产生一个“无数学协处理器”的异常. 以上4个系统标志与80286兼容.5).ET:扩充类型标志,表示系统中所使用的 数学协处理器的类型.ET=1时表示系 统内使用的是80387.否则表示系统 使用的是80287或没有协处理器.当 EM=1时,ET无效.6).PG:允许分页标

29、志,表示CPU是否允许对 存储器线性地址进行分页.并进行物 理地址转换.PG=1时允许分页,分页 部件将线性地址转换成物理址.PG=0 时禁止分页,线性地址直接当作物理 地址.CR1:是未定义的控制寄存器,待CPU升级时 用.CR2:页故障线性地址寄存器,保存最后出现 页故障的全32位线性地址,以便当产生 页故障时用来报告错误信息.CR3:页目录基址寄存器,保存页目录表的物 理基地址.7.系统地址寄存器:(共4个)47 3247 32位线性基地址位线性基地址 16 15 16 15 界限界限 0 0选择符选择符选择符选择符1).GDTR:全局描述符表寄存器.48位.保存全局描述符表的32位线性

30、基地址和16位界限.2).IDTR:中断描述符表寄存器.48位.保存中断描述符表的32位线性基地址和16位界限.3).LDTR:局部描述符表寄存器.16位.保存当前任务的局部描述符表的16位选择符.4).TR:任务状态寄存器.16位.保存当前任务的任务状态段的16位选择符.8.调试寄存器(共8个,32位) 线性断点地址0线性断点地址1线性断点地址2线性断点地址3保留保留断点状态断点控制9.测试寄存器(共2个.32位) TR6:测试命令寄存器.存放命令. TR7:数据寄存器.保存对旁视缓冲器测试时的状态数据. 程序员可在芯片加电后,测试分页部件中转换旁视缓冲器TLB的操作是否正确.2.4 804

31、862.4 80486微处理器的功能结构微处理器的功能结构 主要性能指标: 32位;120万个晶体管;168条引线;网络阵列式封装;32条地址线;寻址4GB实;64TB虚;25MHz和33MHz;80486DX达50MHz60MHz.CPU,协处理器及cache集成在一个芯片上,工作速度加快.还具有外部高速缓冲存储器.9个处理部件,并行流水,对大多数指令以一个时钟周期一条指令的速度持续执行.高缓存控制器8KCache转换监视缓冲页转换器段寄存段描高缓存储段转换通寄存桶形移ALU乘除法预取预取队列指令译码控制保测部件浮点控制浮寄和堆总线接口总线控制写缓冲器整数部件分段部件分页部件Cache部件预

32、取部件指令译码部件控制部件浮点部件总线接口部件地址总线数据总线硬件的微指令指令字80486CPU框图2.4.1 总线接口部件 负责与处理器外部总线的连接。 与80386不同的是BIU只与Cache和指令预取部件交换数据。其它访存请求都要经过Cache。2.4.2 高速缓冲存储部件 用于管理芯片上8KB高速缓冲RAM.所有总线请求先到这里.如命中,则不产生总线周期.如未命中,BIU一次从内存取16B送高速缓存-行填充. 写通:在高缓中找到目标修改写回存储器.2.4.3 代码预取部件 只要总线空闲时,预取部件向BIU发请求.一次取16B的代码送32B的预取队列. 如Cache能命中,则不产生总线周

33、期. 当遇到转移,中断,子程序调用时预取队列清空.2.4.4 指令译码部件 从预取队列取机器码转换成各处理部件的控制信号.译码分两步:取操作数和译码同时进行.没有已译码队列.2.4.5 控制部件 对整数部件,浮点部件和分段部件进行控制.使它们完成已译码指令的执行.2.4.6 整数部件 完成整数的传输,加,减运算和逻辑运算. 有4个32位通用寄存器;2个32位变址寄存器;2个32位指针寄存器;64位桶形移位器;ALU;EFLAGS.2.4.7 分段部件和分页部件 一起构成存储器管理. 分页部件:完成虚拟存储器管理,将线性地址转换成物理地址. 分段部件:将部件逻辑地址转换成线性地址.并用高速缓存提

34、高速度.2.4.8 浮点部件 与外部协处理器的功能完全一样. 80486SX需配80487SX等效80486DX.2.5 Pentium级微处理器简介2.5.1 Pentium微处理器 第5代微处理器.1993年Intel公司推出. 0.35um工艺;金属配线;双级CMOS技术;310万个晶体管;数据总线64位;地址总线36位;60MHz-66MHz目前已有133MHz-166MHz; 超标量流水技术,多个执行单元,一个指令周期内执行多条指令.两条超标量流水线U和V,各自有地址生成逻辑,算术逻辑部件及数据高速缓存.(V流水不能执行浮点)2.5.2 Pentium Pro微处理器 1996年推出

35、;0.35um工艺;4层金属配线;CMOS技术;5.5百万个晶体管;3条超标量流水线;3个并行译码器;5个执行单元;2个一级8KB高速缓冲存储器(数据和指令各一个);200MHz-250MHz;1个二及高速缓冲存储器(界于一级高缓和内存之间);8个整数通用寄存器;8个浮点数通用寄存器;还增加了40个通用寄存器.2.5.3 MMX Pentium微处理器(多能奔腾) 芯片管脚与Pentium相兼容.增加视频信号,音频信号的处理功能和速度.内部高缓比Pentium增加一倍.指令和数据高缓都是16KB的.适用于便携式电脑.2.5.4 Pentium II微处理器 第6代微处理器.1997年推出.26

36、6MHz451MHz;功耗低;广泛用于商业领域. 作业:P69 1、3、4、5、6、11 第三章 80X86寻址方式与指令系统 3.1 计算机指令格式 3.2 指令长度与字长的关系 3.3 80 x86指令寻址方式 3.4 8086/8088指令系统 3.5 80 x86寻址方式及新增指令3.1 计算机指令格式1.零地址指令 格式: 指令中只给出操作码,没有显地址.有几种可能: 1).无操作数的指令.(空操作;CPU控制) 2).操作数是隐含约定的.(栈操作;串操 作;累加器操作)OP2.一地址指令 格式: 一地址指令有两种常见的形态,根据操作码含义确定它是哪一种. 1).只有目的操作数的单操

37、作数指令(加1;减1;取补;取反) 2).隐含约定目的地址的双操作数指令(乘;除等) OPD3.二地址指令格式:功能:(D1)OP(D2) D1二地址指令是最常用的.4.三地址指令格式:功能(D2)OP(D3) D1OPD1D2OPD1D2D33.2 指令长度与字长的关系 指令位数多,信息多,功能强.但存储空间大,取指时间长.所以目前都采用变字长指令格式.能短则短,需长则长.8086/8088变字长指令格式:指令长16个字节.80286指令长:1 10字节.80386指令长:1 15字节.操作码寻址方式与寄存器号位移量/立即数位移量/立即数立即数立即数3.3 80 x86指令(编码)格式与寻址

38、方式3.3.1 8086/8088/80286指令编码格式opcodemod reg r/mdispdata 8086/8088不同字长的指令格式类型如下:opcodeopcode mod opcode mod data/dispopcode mod data/disp(低) data/disp(高)opcode mod disp(低) disp(高) data opcode mod disp (低) disp (高) data (低) data (高) 操作码和寻址方式字节格式如下: D W mod reg r/mD7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D

39、2 D1 D0 1.操作码字节:W=0 操作数均是8位,字节操作.W=1 操作数均是16位,字操作. D=0 reg域指定源操作数.D=1 reg域指定目的操作数.2.寻址方式字节:指出第二操作数的存放地址, 寻求EA的方法.reg域:确定一个寄存器.(3位)regW=1W=0000AXAL001CXCL010DXDL011BXBL100SPAH101BPCH110SIDH111DIBHMod域:说明是寄存器寻址还是存储器寻址.mod方 式00存储器寻址,没有位移量01存储器寻址,有8位位移量10存储器寻址,有16位位移量11寄存器寻址,没有位移量r/m域:mod=11时是寄存器寻址,指出第二

40、操 作数所在的寄存器号. mod=00、01、10时是存储器寻址,指 出如何求得操作数的有效地址。modr/m存储器寻址寄存器寻址逻辑地址的计算公式W=0W=1mod=00mod=01mod=10mod=11000DS:BX+SI DS:BX+SI+disp8DS:BX+SI+disp16ALAX001DS:BX+DI DS:BX+DI+disp8DS:BX+DI+disp16CLCX010SS:BP+SI SS:BP+SI+disp8SS:BP+SI+disp16DLDX011SS:BP+DI SS:BP+DI+disp8SS:BP+DI+disp16BLBX100DS:SIDS:SI+di

41、sp8DS:SI+disp16AHSP101DS:DIDS:DI+disp8DS:DI+disp16CHBP110DS:disp16 SS:BP+disp8SS:BP+disp16DHSI111DS:BXDS:BX+disp8DS:BX+disp16BHDImod与r/m域所组合的寻址方式例3.1 写出指令 MOV BX+DI-6,CL 的机器 语言编码MOV指令操作码:100010D:0(源操作数) W:0(8位,字节操作)reg:001(CL) mod:01 r/m:001 disp8:-6的补码为11111010指令编码:10001000 01 001 001 11111010写成十六进

42、制:88H、49H、FAH例3.2 写出 MOV AH,BX+DI+50H 的机器语 言编码.MOV的操作码:100010 D:1 W:0mod:01 reg:100 r/m:001指令编码:10001010 01 100 001 01010000写成十六进制:8AH、61H、50H例3.3 写出 ADD AX,BX+DI+0826H 的机器语 言编码. 00000011 10 000 001 0010011000001000 写成十六进制:03H、81H、26H、08H3.3.2 8086/8088的寻址方式操作数存在的地方有:寄存器;存储器;指令字 节中;I/O端口.目的操作数:用指令的执

43、行结果替换掉的操作数.源操作数:指令执行过程中保持原值不变.1.操作数的寻址方式 8086/8088有7种寻址方式. 1).立即数寻址方式 操作数(8位或16位)是指令码中的组成部分.例:MOV AL,80H立即数:只能是源操作数; 只能是整数或字符,若是字符加引号; 16进制的立即数以字母开头时前边要 加“0”.且低8位跟在操作码后面,高8位 在其后.例如:MOV CX,0B3CAH MOV AL,25 MOV BX,“AB” MOV AH,C2).寄存器寻址方式 操作数存放在CPU内的通用寄存器或段寄存器中.在指令中给出寄存器的地址(寄存器的名字)例如:INC CX MOV AX,CX M

44、OV DS,AX3).直接寻址方式 操作数存放在存储单元中,该单元的有效地址在指令中直接给出.不特指,默认段寄存器是DS.例如:MOV AL,1064H源操作数的物理地址(DS)10H+1064H数据段YY代码段操作码64H10HAXIPCSDSm m m mn nn nh hh hnnnn0 + mmmm ppppm ppppm ppppm+1 ppppm+2 hhhh0 + 1064 gggg4 gggg4 注:符号地址和数值地址问题4).寄存器间接寻址方式 操作数存放在存储单元中,该单元的有效地址存放在指令中的寄存器(BX;BP或SI;DI)里.用BP间址隐含段寄存器是SS. 例如:MO

45、V CH,SI MOV AX,BX5).寄存器相对寻址 操作数存放在存储单元中,该单元的在效地址等于指令中给出的基址或变址寄存器的内容和一个带符号的8位或16位的位移量之和. 用BP间址隐含段寄存器是SS. 例如:MOV AX,BX+1234H MOV AL,BP-10H 6).基址加变址寻址方式 操作数存放在存储单元中,该单元的有效地 址等于基址寄存器的内容加变址寄存器的内 容. BP间址隐含段寄存器是SS. EA=(BX)/(BP)+(SI)/(DI) 例如:MOV AX,BX+SI MOV AX,BP+SI MOV ES:BX+DI,AX7).相对的基址和变址寻址方式 操作数存放在存储单

46、元中,该单元的有效地址等于基址寄存器的内容加变址寄存器的内容再加上指令中给出的8位或16位位移量. BP间址隐含段寄存器是SS.EA=(BX)/(BP)+(SI)/(DI)+disp8/disp16 例如:AND DL,BX+SI+20H MOV SS:BX+SI+100H,BX若I/O端口不是与内存统一编址,I/O端口有两种寻址方式1).直接端口寻址方式 指令中直接给出由8位地址码表示的端口 地址号. 例如:IN AL,21H2).间接端口寻址方式 端口地址用16位表示,并固定存储在DX寄 存器中. 例如:OUT DX,AL2.程序转移地址的寻址方式1). .段内直接(相对)寻址方式 转移的

47、地址是当前的IP内容和指令规定 的8位或16位位移量之和. 8位是短程转移;16位是近程转移.2).段内间接寻址方式 转移的地址存放在寄存器或存储单元中. 用它来更新IP的内容.3).段间直接寻址方式作业:P118 13.4 8086/8088指令系统学习指令的注意事项 指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式 指令支持的寻址方式该指令中的操作数可以采用何种寻址方式 指令对标志的影响该指令执行后是否对各个标志位有影响,以及如何影响 其他方面该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等3.4.1 数据传送类指令

48、 数据传送是计算机中最基本、最重要的一种操作 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握MOV XCHG XLAT PUSH POP LEA1.通用数据传送指令 1).基本传送指令MOV格式:MOV DEST,SRC功能:DEST (SRC) 即将源地址的内容(源操作数)传送到目的地址中.传送指令执行完后源操作数保持不变. 说明:1)标志寄存器内容不变. 2)两操作数位数应相同.(字节或字) 3)其它规则见下图. MOV指令的传送规定段寄存器DS ES SSCS立即数通用寄存器存储器非法传送种种 两个操作数的类型不

49、一致例如源操作数是字节,而目的操作数是字;或相反 两个操作数不能都是存储器传送指令很灵活,但主存之间的直接传送却不允许 段寄存器的操作有一些限制段寄存器属专用寄存器,对他们的操作能力有限2).堆栈操作指令压栈:用压栈指令PUSH可以将通用寄存器、 段寄存器或字存储单元内容压入堆栈。例如:PUSH AX ;将AX内容送入栈顶字单元中压栈指令执行分两步进行:.(SP)-2 SP;.操作数 SP;后SPAH ALXXXXSP内存SS增地址方向出栈:用弹出指令POP可以将当前栈顶字单元内容取出送到通用寄存器、段寄存器或字存储单元中。例如:POP AX ;将栈顶字单元内容送到AX中出栈指令分两步进行:.

50、(SP) 寄存器/字单元.(SP)+2 SP内存SSSP后SP增地址方向XXXXAH ALXXXX3).交换指令指令格式:XCHG DEST, SRC功能:(DEST) (SEC),即将源地址的内容(源操作数)与目的地址的内容(目的操作数)相互交换. 说明:1).标志寄存器内容不变. 2).所交换的数据可以是字节或字. 3).数据交换只能在通用寄存器之间或通用寄存器存储单元之间进行.AX BX CX DXSI DI BP SP 存储器2.累加器专用传送指令1) 输入指令 直接寻址:0255个端口地址号. 格式:IN AX,port IN AL,port 功能:将来自端口地址号是port的数据送

51、 到累加器中. 间接寻址:可寻64K个端口地址号. 格式:IN AX,DX IN AL,DX 功能:将来自DX内的端口地址号的数据送到累 加器中. 2) 输出指令 直接寻址: 0255个端口地址号. 格式:OUT port,AX OUT port,AL 功能:将累加器的内容送到port端口地址. 间接寻址:可以64K个端口地址号. 格式:OUT DX,AX OUT DX,AL 功能:将累加器的内容送到DX所指的端口 地址.说明:输入输出指令都不改变标志寄存器. 换码指令执行前:在主存建立一个字节量表格,内含要转换成的目的代码表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后:

52、将AL寄存器的内容转换为目标代码3). 换码指令XLAT 将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给ALXLATXLAT;alds:bx+alalds:bx+al例例 代码转换代码转换mov bx,100hmov al,03hxlat 换码指令没有显式的操作数,但使用换码指令没有显式的操作数,但使用了了BX和和AL;因为换码指令使用了隐含;因为换码指令使用了隐含寻址方式寻址方式采用默认操作数采用默认操作数3.地址传送指令1).取有效地址指令 格式:LEA REG,MEM 功能:取源操作数(变量、标号、地址表达 式)地址的EA送目的操作数地址(通用 寄存器). 说明:该指令不改

53、变标志寄存器. 例如:LEA AX,DI+10 设(DI)=0500H 该指令执行后 (AX)=050AH2).地址指针装入DS指令 格式:LDS REG,MEM 功能:将源操作数有效地址所对应的双字长 的内存单元中的高字内容送入DS,低 字内容送入指令中指定的寄存器.3).地址指针装入ES指令 格式:LES REG,MEM 功能:将源操作数有效地址所对应的双字长 的内存单元中的高字内容送入ES,低 字内容送入指令中指定的寄存器.以上两条指令均不影响标志寄存器.4.标志传送指令1).标志装入AH指令 格式:LAHF 功能:将标志寄存器中的低8位传送到AH中. 说明:该指令不影响标志位.2)设置

54、标志指令 格式:SAHF 功能:将AH的内容传送至标志寄存器的低8 位. 说明:该指令改变标志寄存器的低8位.即 以下标志位:CF PF AF ZF SF3).标志压入堆栈指令 格式:PUSHF 功能:将标志寄存器的内容压入堆栈. 说明:该指令不影响标志寄存器.4).标志弹出堆栈指令 格式:POPF 功能:从堆栈中弹出一个字送标志寄存器. 说明:该指令影响标志寄存器的所有标志 位.3.4.2 算术运算指令 四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算 请注意算术运算类指令对标志的影响 掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMP

55、 熟悉:MUL/IMUL、DIV/IDIV 理解:CBW/CWD、DAA/DAS、 AAA/ AAS/AAM/AAD1.加法指令1).加法指令 格式:ADD DEST,SRC 功能:DEST (SRC)+(DEST),并根据结 果设置标志寄存器的OF SF ZF AF PF CF. 说明:两操作数均可以存放在通用寄存器或存储单元中.源操作数还可以是立即数.但不能同时为存储器操作数.例3.4 设(AL)=3AH,则执行ADD AL,7CH后, (AL)=?.各标志位如何?解: 00111010 + 01111100 10110110 B6H AL CF=0 PF=0 AF=1 ZF=0 SF=1

56、 OF=1 2).带进位加指令 格式:ADC DEST,SRC 功能:DEST (SRC)+(DEST)+CF 并根据结果设置标志位CF PF AF ZF SF OF. 说明:该指令常用于多字节运算.3).加1指令 格式:INC DEST 功能:DEST (DEST)+1 并根据结果设置标志位PF AF ZF SF OF但不影响CF.2.减法指令1).不带借位的减法指令 格式:SUB DEST,SRC 功能:DEST (DEST)-(SRC) 并根据结果设置标志位CF PF AF ZF SF OF. 说明:两操作数的要求与ADD指令一样.例3.5 SUB SI+14H,0136H 设(DS)=

57、3000H;(SI)=0040H;则EA=0054H 目的操作数的物理地址:30054H 设30054H单元的内容是4336H 4336H补: 0100 0011 0011 0110-0136H补: 1111 1110 1100 1010 1 0100 0010 0000 0000丢失符号位SF=0减法进位标志取反CF=011=0不溢出OF=0减法,辅助进位取反AF=0偶数个“1”,PF=1结果非零,ZF=02).带借位减法指令 格式: SBB DEST,SRC 功能:DEST (DEST)-(SRC)-CF 并根据结果设置CF PF AF ZF SF OF. 说明:与ADC指令一样,主要用于

58、多字节减 法运算中.例3.6 SBB BP+SI+0102H,0A034H 设(BP)=0F6AH;(SI)=0018H;(SS)=2F00H; CF=1.目的操作数的 EA=0F6AH+0018H+0102H=1084H 物理地址:2F000H+1084H=30084H又设30084H单元FA42H.指令执行的运算是:FA42H-A034H-1=5A0DH将5A0DH送30084H单元. FA42H - A034H 5A0EH 再减CF后得5A0DH30084H0DFA30085H.增地址方向425ACF=0 PF=0 AF=1 ZF=0 SF=0 OF=03).减1指令 格式: DEC D

59、EST 功能:DEST (DEST)-1 并根据结果设置OF SF ZF AF PF, 但不影响CF.(与加1指令相同) 说明:DEST可以是字节,也可以是字.且 被当成是无符号数,不能是立即 数. 4).求负数指令 格式: NEG DEST 功能:DEST 0-(DEST) 并根据结果设置CF PF AF ZF SF OF. 说明:DEST可以是字节,也可以是字.且被当作补码表示的带符号数.不能是立即数.只要(DEST)非0,求负后CF总置1.5).比较指令 格式:CMP DEST, SRC 功能:(DEST)-(SRC)并设置CF PF AF ZF SF OF,而不保留两数相减的差.对标志

60、位的影响与SUB指令一样. 3.乘法指令 1).无符号数的乘法指令 格式:MUL OPRD 功能:字节相乘:AX (OPRD)(AL) 字相乘:DX:AX (OPRD)(AX) 说明:该指令只影响CF和OF标志位.指令 执行后,如果AH(字节乘法)或 DX(字乘法)为全“0”,则CF=0和 OF=0;否则CF=1,OF=1(表示AH或DX 中有乘积的有效数字).例3.7 MOV AL,0A7H MOV BL,85H MUL BL2).带符号数的乘法指令 格式:IMUL OPRD 功能:字节相乘:AX (OPRD)(AL) 字相乘:DX:AX (OPRD)(AX) 并根据结果设置CF OF. 说

温馨提示

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

评论

0/150

提交评论