《微机原理及应用(第五版).ppt》由会员分享,可在线阅读,更多相关《微机原理及应用(第五版).ppt(478页珍藏版)》请在三一办公上搜索。
1、微型计算机原理,第一章 微型计算机基础知识第二章 微型计算机组成及微处理器功能结构第三章 80X86寻址方式和指令系统第四章 汇编语言程序设计第六章 半导体存储器及接口第八章 中断和异常第九章 输入/输出方法及常用的接口电路,第一章 微型计算机基础知识,常用数据类型数学协处理器的数据格式,1.1.1 数据在内存储器中的存储方式,字节:8个二进制位.一个字节也叫做一个存储单元.地址:对内存中存储单元的编号.从0开始直到CPU能支持的最高地址.字:相邻两个字节存放一个数.16位.双字:相邻四个字节存放一个数.32位.多字节数据的存储采取高位字节在高地址的原则.数据所在地址是低字节所在的地址.,多字
2、节数据的存储情况,例如字1234和双字3C5D7E9F的存储,地址,地址,m+2,m+1,m,m-1,1 2,3 4,3 C,5 D,7 E,9 F,m+4,m+3,m+2,m+1,m,m-1,(a)字的存储,(b)双字的存储,1.1.2 数的进位制表示约定,二进制:数的后面加后缀B.十进制:数的后面加后缀D或不加.十六进制:数的后面加后缀H.,1.1.3 整数,1.无符号数 8、16、32位全部用来表示数值本身。最低位LSB是0位,最高位MSB是7、15、31。2.带符号整数 1).原码:设X=+1011100B,Y=-1011100B 此时X和Y被称为真值.则X原=01011100,Y原=
3、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原的符号位不变,其余各位 变反加1.求X反是将X原的符号位不变,其余各位 变反
4、.,补码没有+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反=10101100,3).移码,针对补码不易比较大小的缺点而出现了移码 X移=2n-1-1+X X-2n-1 且X=2n-12n-1-1为偏移量例如:X=+10010B=+18,Y=-10010B=-18 X移=26-1-1+X=011111+010010=110001B Y移=26-1-1+Y=011111
5、-010010=001101B,3.带符号数的运算,原码:类似于正负数的笔算 优点:直观.缺点:减法过程非常繁锁.适用:浮点数的有效数字.二进制乘除法.补码:优点:符号位和数值一起运算;减法可以变成加法运算.缺点:数值比较大小时易出错.适用:加减法的运算中.,运算公式:x+y补=x补+y补,其中:|x|,|y|,|x+y|2n-1-y补=y变补y变补就是将y补连同符号位一起各位变反加1.反码:常用在求反逻辑运算中,其它运算不用.移码:优点:能很方便的比较出真值的大小.适用:A/D和D/A转换器的双极性编码.浮点数的阶码中.,4.无符号数运算(补码运算),x补+y补=x+y补 其中:x、y及(x
6、+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 最高位有进位,结果为正x-y补=x-y原=00110010B x-y=50.设x=79,y=129则 x补=01001111B,y补=10000001B-y补=y变补=01111111Bx-y补=x补+-y补=11001
7、110B 最高位无进位,结果为负 x-y=-50,总结:对于无符号数和有符号数的补码运算,计算机运算的方法都是一样的.只是结果判断正负的方法不同.,无符号数.加法:结果必为正.只要不溢出(最高位没有 进位)结果就是正确的.减法:补码运算结果有进位结果为正.否 则为负.有符号数.加减法结果看符号位.是否溢 出用下述方法判别.,5.有符号数加减运算溢出判别,采用双高位判别法.在计算机内设置两个进位位分别是:CS:表示符号位向前进位情况.如有进位CS=1,否 则CS=0.CP:表示数值部分最高位向符号进位情况,如有进位CP=1,否则CP=0.分析:CS CP 溢出情况 0 0 无溢出 0 1 正溢出
8、 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+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
9、 CS=1 CP=1 无溢出,结果为正 11110100B-12+00001001B+9 11111101B-3 CS=0 CP=0 无溢出,结果为负,6.算术移位,对寄存器和存储器中的数,左移一位,绝对值增大一倍.右移一位绝对值减少一半.(只要没把有效数值移出).1).对于正数,左移或右移,空位都补0 例 00001110B+14 左移一位 00011100B+28 右移一位 00000111B+72).补码表示的负数 左移低位补0,右移高位补1.例 11110010B-14补 左移一位 11100100B-28补 右移一位 11111001B-7补,3).反码表示的负数,左移和右移空位全补
10、1.例 11110001B-14补 左移一位 11100011B-28补 右移一位 11111000B-7补7.有关0的问题 原码和反码都+0和-0之分,而补码没有,补码中的10000000表示-128(8位机)下面用例题说明这一点:,例1.7-128补=10000000B,下面运算正确,-64 11000000B+)-64+11000000B-128 110000000B-128补符号位进位丢失-128 10000000B+)+127 01111111B-1 11111111B-1补例1.8 若误认为-0补=10000000B,运算便会出错:-0 10000000+)+1+00000001+
11、1 10000001-127补+1出错,1.1.4 字符串,字符串是存储器中相邻存储单元字符序列.80386对字符串的操作有:移动;传送;比较;查找等.分类:字节串;字串;双字串.,1.1.5 位及位串,80 x86CPU都支持位操作.80386/80486有位串操作.位串最长是232个位.位偏移量:一个位在位串中的地址.由字节地址和位余数组成.设位串是从地址开始存储的,位偏移量分别为23和-18的位在什么地方?23/8=27 在第m+2字节中的第7位.-18/8=36 在第m-3字节中的第6位.,1.1.6 BCD码及ASC码,1.十进制数的二进制编码 1).8421码 2).2421码 3
12、).余3码 见P9表1.22.ASCII码 1)7位的ASC码.2)8位的ASC码.见P10表1.33.奇偶校验码奇校验:编码“1”的个数为奇数,校验位置“0”否则校验位置“1”.缺点:双重差错是无法校验出来的.,1.2 数学协处理器的数据格式,80387支持的数据类型,1.2.1 整型数,80387支持长整型数,而80386支持字节整型数.1.2.2 BCD码压缩BCD码占80位,即10个字节.能存储20位BCD数,但在80387中只用了18位BCD数.余下1个字节的最高位为符号位.其余7位不用.,最高位是符号位,7位不用,1.2.3 实型数,任何一个二进制数可以表示成:N=+Y2J 称为浮
13、点表示法80387规定:指数采用移码表示。短型实数阶码占8位;长型实数阶码占11位。临时实数阶码占15位。短型实数和长型实数的尾数中的1和小数点均隐藏。临时实数小数点前的1不省略。作业 阅读引论.,第二章 微型计算机组成及 微处理器功能结构,2.1 微型计算机的组成及工作原理2.2 8086/8088及80286微处理器2.3 80386微处理器的功能结构2.4 80486微处理器的功能结构2.5 Pentium级微处理器简介,2.1 微型计算机的组成及工作原理,微型计算机的组成:,微处理器(CPU),组成:控制器;运算器;寄存器组成。控制器是由指令寄存器;指令译码器;控制电路组成。指令:是一
14、组二进制编码信息,包括操作码 和操作数或操作数地址 存储器 组成:内存储器是由半导体存储器芯片组成。读/写操作:称为CPU访存操作.读就是取.写就是 送(存).读操作原存储单元内容不变,写 操作原存储单元内容被改写.,输入/输出设备及其接口电路,输入设备:将程序、原始数据及现场信息以计算机能 识别的形式送到计算机中,供计算机自动计 算或处理。(键盘 鼠标 数字化仪 扫描仪 A/D等)输出设备:将计算机处理的结果以人能识别的形式输 出来。(显示器 打印机 绘图仪 D/A等)外部存储器:软.硬磁盘即是输入设备也是输出设备.只读光盘是输入设备.接口电路:是CPU与I/O设备联系的必经之路.起信息统
15、一和联系作用.,总线,总线是具有逻辑控制功能的信号线.1.数据总线(DB):在CPU,内存和接口之间传递指令和数据.是双向的.总线宽度(总线中信号线的条数)有8位、16位、32位、64位。2.地址总线(AB):用于传送CPU要访问的存储单元或I/O接口的地址号.是单向的。3.控制总线(CB):用于CPU向其它部件传送控制信号,其它部件向CPU传送状态信号及请求信号。,微型计算机整机工作原理简述,人 程序 计算机的内存 指令指针控制部件 译码器 指令队列 经DB各执行部件 结果输出转移指令修改指令指针.,2.2 8086/8088及80286微处理器的功能结构,属Intel公司生产的第三代16位
16、微处理器.新增功能:总线加宽一倍,增加了流水执行部 件和总线接口分为两个独立部件.并行工作.,(a)串行处理,BIU,EU,(b)流水处理,2.2.1 8086/8088CPU的功能结构,1.8086/8088CPU的内部结构,16,数据及操作数,指令码,多路复用,地址/数据总线8086:16位8088:8位,EU,BIU,8086/8088CPU的结构框图,2.指令流队列,是一个先进先出的栈,6/4个指令字节.总线周期:CPU访问一次存储器或I/O端口所需时间.3.存储器的分段结构和物理地址的形成 物理地址:每个存储单元的实际地址编码.8086/8088 20位地址总线 1MB空间 分段结构
17、:1MB可分若干段,大小根据需要而定.每段不超过64KB 段首地址:段的启始地址称段首地址,要求低4位为0.段基址:段首地址的高16位.地址偏移量:段内相对于段首址的地址.,内存储器单元地址的两种表示方法:,逻辑地址 段基址:偏移量物理地址 物理地址=段基址x10H+偏移量,2.2.2 80286的功能结构,1.CPU主要性能:集成了13.5万只晶体管;68个引脚;四列直插式封装;地址/数据总线分开(16位数据线,24位地址线);时钟频率为8MHz10MHz;增加存储器管理和保护机构.工作方式:1)实地址方式.2)虚地址方式.配80287数学协处理器.,2.80286CPU的内部结构,地址部件
18、,执行部件,总线接口,指令部件,已译码指令,24,16,24,16,地址,数据,80286CPU的结构框图,物理,偏移量和数据,存储器操作数请求,1).总线接口部件BIU:负责处理CPU和系统总线之间的所有通信和数 据传输.,2).指令部件IU:从预取队列取出指令字节到指令译码器,译成 69位内部码送已译码指令队列.3).执行部件EU:由ALU;FR;控制电路组成.完成指令的执行操作.4).地址部件AU:实地址方式:与8086一样.保护方式:AU必须做许可性检查和当前任务的段 限制检查.,2.3 80386微处理器的功能结构,主要性能指标:32位;132条引脚;网络阵列式封装;32条地址线;1
19、2.5MHz及16MHz.具有段页式存储器管理部件,4级保护机构.有两种芯片:80386SX(准32位机)和80386DX.工作方式:1).实地址方式 2).虚地址保护方式:每段长4GB;可寻实地址4GB;寻虚地址64TB最多可用16K个段.3).虚拟8086方式:实地址方式的同时,利用虚拟保护机构运行多用户操作系统及程序.,2.3.1 80386CPU的功能结构,分段部件 分页部件 总线接口部件,指令预取,指令译码器,执行部件,80386功能结构框图,1.总线接口部件,主要用于将CPU与外部总线连接起来.CPU内部的其它部件都能与BIU直接通信,并将它们的总线请求传给BIU.2.指令预取部件
20、 当BIU空闲时,预取队列有空单元或有转移时,便通过分页部件向BIU发指令预取请求.3.指令译码部件 从指令预取队列中取出指令码译成内码送已译码指令队列.以上三部分构成了指令流水线.,4.执行部件,从已译码队列取来内码变成一系列控制信息发向其它部件完成指令的执行.5.分段部件 将逻辑地址转换成线性地址.送分页部件.6.分页部件 在操作系统软件的控制下,若分页部件处于允许状态,便将分段部件或代码预取部件产生的线性地址转换成物理地址.分段部件,分页部件和BIU构成地址流水线,2.3.2 80386CPU的寄存器,1.通用寄存器:(共4个)主要用来存放操作数或操作数地址的。,AL,AH,EAX,AX
21、,16位寄存器名称,8位寄存器名称,32位寄存器名称,EBX;ECX;EDX与EAX同样结构.分别含有16寄存器BX;CX;DX和8位寄存器BH;CH;DH.BL;CL;DLEAX:累加器 EBX:基址寄存器ECX:计数器 EDX:数据寄存器,2.变址寄存器(共2个),源变址,SI,DI,目的变址,EDI,ESI,在串操作中分别用于存放源串和目的串的偏移地址.也可以存放32位和16位操作数.,3.指针寄存器(共3个),基地址指针,EBP,BP,ESP,SP,EIP,IP,堆栈指针,指令指针,EBP和ESP是用于存放堆栈区偏移地址.EIP与代码段寄存器CS一起指出下一条要被执行的指令的地址.它不
22、能由程序员直接访问.,堆栈:是一组寄存器或一个存储区.,堆栈的用途:在调用子程序或中断时存放断 点数据的.,子程序的嵌套,堆栈的工作原理:,存储器高地址,存储器低地址,64K段,POPs向上压缩堆栈,PUSHes向下增长堆栈,SS,SP,当前堆栈顶,堆栈“底”(SP初值),8086堆栈形式,4.段寄存器段描述符寄存器,段寄存器:(共6个,16位)数据段寄存器DS:存放数据段的段基址.堆栈段寄存器SS:存放堆栈段的段基址.代码段寄存器CS:存放代码段的段基址.附加段寄存器ES;FS;GS:存放当前附加段 段基址.段描述符寄存器:64位,一个段选择器对应一个段描述符寄存器.,5.标志寄存器EFLA
23、GS(32位),由处理器保留,虚拟8086方式标志,调整恢复标志,状态标志,进位标志,奇偶标志,辅助进位标志,零标志,符号标志,溢出标志,保护方式,嵌套任务,I/O特权水平,控制标志,陷阱标志,中断允许标志,方向标志,1).状态标志:保存ALU运算结果的特殊信息.,CF:有进位(借位)置“1”,否则置“0”.PF:算术逻辑运算结果低8位中“1”的个数为偶置“1”,否则置“0”.AF:ALU加法运算时结果的第3位向第4位有进位(借位)置“1”,否则置“0”.ZF:ALU的结果为全零置“1”,否则置“0”.SF:ALU的结果最高位是“1”,表示负数置“1”,否则置“0”.OF:有符号加(减)结果产
24、生溢出时置“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:陷阱标志(单步操作标志)TF=1时,CPU每执行完一条指令,就去执行服务程序,向用户提供各寄存器状况等.用于程序调试.IF:中断允许标志,IF=1时可接受并响应可屏蔽中断.DF:方向标志,指定字符串处理指令的步
25、进方向.DF=1时是减地址,DF=0时是增地址.以上3个标志位与8086/8088 80286兼容.,IOPL:输入/输出特权级标志,有四种状态.00最高特权;11最低特权.当前特权级高于或等于IOPL所表示的特权级I/O指令可以执行.否则产生一个保护异常.NT:嵌套任务标志,用于控制返回指令的运行.NT=1当前任务正嵌套在另一任务之中.返回操作通过任务切换来执行.即不同任务之间的返回.NT=0时是同一任务的返回.以上两个标志只在保护方式有效,8086仿真方式(实方式)下无效.,RF:重新启动标志(调整恢复标志)RF=0时,调试故障被接受并应答.RF=1时,调试故障被忽略.VM:虚拟8086方
26、式标志,VM=1时CPU在虚拟8086方式下运行,VM=0时CPU在一般方式下运行.以上两个标志是80386新增的控制标志.,6.控制寄存器(4个32位),CR0:,4 3 2 1 0,31,16,15,允许保护,监控协处理器,仿真协处理器,任务转换,处理机扩展,允许分页,1).PE:允许保护标志,用于CPU是否进入保护方式,PE=1进入保护方式.若想解除,只有通过系统复位重新启动.系统默认是实地址方式.,2).MP:监控数学协处理器扩充标志,用来表示协处理器是否存在.MP=1时表示协处理器存在.MP=0时协处理器不存在.3).EM:仿真协处理器扩充标志,用来表示是否用软件来仿真数学协处理器.
27、EM=1时表示采用软件仿真数学协处理器的功能.4).TS:任务转换标志,由硬件置位,由软件复位.当一个任务转换完成后,TS自动置“1”.下一条企图使用数学协处理器的指令将产生一个“无数学协处理器”的异常.以上4个系统标志与80286兼容.,5).ET:扩充类型标志,表示系统中所使用的 数学协处理器的类型.ET=1时表示系 统内使用的是80387.否则表示系统 使用的是80287或没有协处理器.当 EM=1时,ET无效.,6).PG:允许分页标志,表示CPU是否允许对 存储器线性地址进行分页.并进行物 理地址转换.PG=1时允许分页,分页 部件将线性地址转换成物理址.PG=0 时禁止分页,线性地
28、址直接当作物理 地址.,CR1:是未定义的控制寄存器,待CPU升级时 用.,CR2:页故障线性地址寄存器,保存最后出现 页故障的全32位线性地址,以便当产生 页故障时用来报告错误信息.CR3:页目录基址寄存器,保存页目录表的物 理基地址.,7.系统地址寄存器:(共4个),47 32位线性基地址 16 15 界限 0,GDTR,TDTR,TR,LDTR,1).GDTR:全局描述符表寄存器.48位.保存全局描述符表的32位线性基地址和16位界限.2).IDTR:中断描述符表寄存器.48位.保存中断描述符表的32位线性基地址和16位界限.,3).LDTR:局部描述符表寄存器.16位.保存当前任务的局
29、部描述符表的16位选择符.,4).TR:任务状态寄存器.16位.保存当前任务的任务状态段的16位选择符.8.调试寄存器(共8个,32位),DR0,DR1,DR2,DR3,DR4,DR5,DR6,DR7,9.测试寄存器(共2个.32位),TR6:测试命令寄存器.存放命令.TR7:数据寄存器.保存对旁视缓冲器测试时的状态数据.程序员可在芯片加电后,测试分页部件中转换旁视缓冲器TLB的操作是否正确.,2.4 80486微处理器的功能结构,主要性能指标:32位;120万个晶体管;168条引线;网络阵列式封装;32条地址线;寻址4GB实;64TB虚;25MHz和33MHz;80486DX达50MHz60
30、MHz.CPU,协处理器及cache集成在一个芯片上,工作速度加快.还具有外部高速缓冲存储器.9个处理部件,并行流水,对大多数指令以一个时钟周期一条指令的速度持续执行.,整数部件,分段部件,分页部件,Cache部件,预取部件,指令译码部件,控制部件,浮点部件,总线接口部件,地址总线,数据总线,硬件的微指令,指令字,80486CPU框图,2.4.1 总线接口部件,负责与处理器外部总线的连接。与80386不同的是BIU只与Cache和指令预取部件交换数据。其它访存请求都要经过Cache。高速缓冲存储部件 用于管理芯片上8KB高速缓冲RAM.所有总线请求先到这里.如命中,则不产生总线周期.如未命中,
31、BIU一次从内存取16B送高速缓存-行填充.写通:在高缓中找到目标修改写回存储器.,2.4.3 代码预取部件,只要总线空闲时,预取部件向BIU发请求.一次取16B的代码送32B的预取队列.如Cache能命中,则不产生总线周期.当遇到转移,中断,子程序调用时预取队列清空.指令译码部件 从预取队列取机器码转换成各处理部件的控制信号.译码分两步:取操作数和译码同时进行.没有已译码队列.,2.4.5 控制部件,对整数部件,浮点部件和分段部件进行控制.使它们完成已译码指令的执行.整数部件 完成整数的传输,加,减运算和逻辑运算.有4个32位通用寄存器;2个32位变址寄存器;2个32位指针寄存器;64位桶形
32、移位器;ALU;EFLAGS.,2.4.7 分段部件和分页部件,一起构成存储器管理.分页部件:完成虚拟存储器管理,将线性地址转换成物理地址.分段部件:将部件逻辑地址转换成线性地址.并用高速缓存提高速度.浮点部件 与外部协处理器的功能完全一样.80486SX需配80487SX等效80486DX.,2.5 Pentium级微处理器简介,Pentium微处理器 第5代微处理器.1993年Intel公司推出.0.35um工艺;金属配线;双级CMOS技术;310万个晶体管;数据总线64位;地址总线36位;60MHz-66MHz目前已有133MHz-166MHz;超标量流水技术,多个执行单元,一个指令周期
33、内执行多条指令.两条超标量流水线U和V,各自有地址生成逻辑,算术逻辑部件及数据高速缓存.(V流水不能执行浮点),2.5.2 Pentium Pro微处理器,1996年推出;0.35um工艺;4层金属配线;CMOS技术;5.5百万个晶体管;3条超标量流水线;3个并行译码器;5个执行单元;2个一级8KB高速缓冲存储器(数据和指令各一个);200MHz-250MHz;1个二及高速缓冲存储器(界于一级高缓和内存之间);8个整数通用寄存器;8个浮点数通用寄存器;还增加了40个通用寄存器.,2.5.3 MMX Pentium微处理器(多能奔腾),芯片管脚与Pentium相兼容.增加视频信号,音频信号的处理
34、功能和速度.内部高缓比Pentium增加一倍.指令和数据高缓都是16KB的.适用于便携式电脑.2.5.4 Pentium II微处理器 第6代微处理器.1997年推出.266MHz451MHz;功耗低;广泛用于商业领域.作业:P69 5、6 思考:2、3,第三章 80X86寻址方式与指令系统,3.1 计算机指令格式3.2 指令长度与字长的关系3.3 80 x86指令寻址方式3.4 8086/8088指令系统3.5 80 x86寻址方式及新增指令,3.1 计算机指令格式,1.零地址指令 格式:指令中只给出操作码,没有显地址.有几种可能:1).无操作数的指令.(空操作;CPU控制)2).操作数是隐
35、含约定的.(栈操作;串操 作;累加器操作),OP,2.一地址指令,格式:一地址指令有两种常见的形态,根据操作码含义确定它是哪一种.1).只有目的操作数的单操作数指令(加1;减1;取补;取反)2).隐含约定目的地址的双操作数指令(乘;除等),OP,D,3.二地址指令,格式:功能:(D1)OP(D2)D1二地址指令是最常用的.4.三地址指令格式:功能(D2)OP(D3)D1,OP,D1,D2,3.2 指令长度与字长的关系,指令位数多,信息多,功能强.但存储空间大,取指时间长.所以目前都采用变字长指令格式.能短则短,需长则长.8086/8088变字长指令格式:指令长16个字节.80286指令长:1
36、10字节.80386指令长:1 15字节.,3.3 80 x86指令(编码)格式与寻址方式,8086/8088/80286指令编码格式,opcode,mod reg r/m,disp,data,8086/8088不同字长的指令格式类型如下:,opcode,opcode mod,opcode mod data/disp,opcode mod data/disp(低)data/disp(高),opcode mod disp(低)disp(高)data,opcode mod disp(低)disp(高)data(低)data(高),操作码和寻址方式字节格式如下:,操作码字节,寻址方式字节,D7 D6
37、 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0,1.操作码字节:W=0 操作数均是8位,字节操作.,W=1 操作数均是16位,字操作.,D=0 reg域指定源操作数.,D=1 reg域指定目的操作数.,2.寻址方式字节:指出第二操作数的存放地址,寻求EA的方法.,reg域:确定一个寄存器.(3位),Mod域:说明是寄存器寻址还是存储器寻址.,r/m域:mod=11时是寄存器寻址,指出第二操 作数所在的寄存器号.mod=00、01、10时是存储器寻址,指 出如何求得操作数的有效地址。,mod与r/m域所组合的寻址方式,例3.1 写出指令 MOV BX+DI-6
38、,CL 的机器 语言编码,MOV指令操作码:100010D:0(源操作数)W:0(8位,字节操作)reg:001(CL)mod:01 r/m:001 disp8:-6的补码为11111010指令编码:10001000 01 001 001 11111010写成十六进制: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+08
39、26H 的机器语 言编码.写成十六进制:03H、81H、26H、08H,3.3.2 8086/8088的寻址方式,操作数存在的地方有:寄存器;存储器;指令字 节中;I/O端口.目的操作数:用指令的执行结果替换掉的操作数.源操作数:指令执行过程中保持原值不变.1.操作数的寻址方式 8086/8088有7种寻址方式.1).立即数寻址方式 操作数(8位或16位)是指令码中的组成部分.例:MOV AL,80H,立即数:只能是源操作数;只能是整数或字符,若是字符加引号;16进制的立即数以字母开头时前边要 加“0”.且低8位跟在操作码后面,高8位 在其后.例如:MOV CX,0B3CAH MOV AL,2
40、5 MOV BX,“AB”MOV AH,C,2).寄存器寻址方式,操作数存放在CPU内的通用寄存器或段寄存器中.在指令中给出寄存器的地址(寄存器的名字)例如:INC CX MOV AX,CX MOV DS,AX3).直接寻址方式 操作数存放在存储单元中,该单元的有效地址在指令中直接给出.不特指,默认段寄存器是DS.,例如:MOV AL,1064H,源操作数的物理地址(DS)10H+1064H,数据段,YY,代码段,操作码,64H,10H,AX,IP,CS,DS,m m,m m,n n,n n,h h,h h,nnnn0,+mmmm,ppppm,ppppm,ppppm+1,ppppm+2,hhh
41、h0,+1064,gggg4,gggg4,注:符号地址和数值地址问题,4).寄存器间接寻址方式,操作数存放在存储单元中,该单元的有效地址存放在指令中的寄存器(BX;BP或SI;DI)里.用BP间址隐含段寄存器是SS.例如:MOV CH,SI MOV AX,BX5).寄存器相对寻址 操作数存放在存储单元中,该单元的在效地址等于指令中给出的基址或变址寄存器的内容和一个带符号的8位或16位的位移量之和.用BP间址隐含段寄存器是SS.例如:MOV AX,BX+1234H MOV AL,BP-10H,6).基址加变址寻址方式,操作数存放在存储单元中,该单元的有效地 址等于基址寄存器的内容加变址寄存器的内
42、 容.BP间址隐含段寄存器是SS.EA=(BX)/(BP)+(SI)/(DI)例如:MOV AX,BX+SI MOV AX,BP+SI MOV ES:BX+DI,AX,7).相对的基址和变址寻址方式 操作数存放在存储单元中,该单元的有效地址等于基址寄存器的内容加变址寄存器的内容再加上指令中给出的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位
43、地址码表示的端口 地址号.例如:IN AL,21H2).间接端口寻址方式 端口地址用16位表示,并固定存储在DX寄 存器中.例如:OUT DX,AL,2.程序转移地址的寻址方式,1).段内直接(相对)寻址方式 转移的地址是当前的IP内容和指令规定 的8位或16位位移量之和.8位是短程转移;16位是近程转移.2).段内间接寻址方式 转移的地址存放在寄存器或存储单元中.用它来更新IP的内容.,3).段间直接寻址方式,指令中直接给出16位的段地址和16位偏移量地址,用来更新CS和IP的内容.4).段间间接寻址方式 根据指令中给出的寻址方式,找到内存相应的单元连续两个字,低位字地址单元替换IP的内容.
44、高位字地址单元替换CS的内容.,作业:P118 1,3.4 8086/8088指令系统,学习指令的注意事项指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式该指令中的操作数可以采用何种寻址方式指令对标志的影响该指令执行后是否对各个标志位有影响,以及如何影响其他方面该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等,3.4.1 数据传送类指令,数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位重点掌握MOV X
45、CHG XLAT PUSH POP LEA,1.通用数据传送指令,1).基本传送指令MOV格式:MOV DEST,SRC功能:DEST(SRC)即将源地址的内容(源操作数)传送到目的地址中.传送指令执行完后源操作数保持不变.说明:1)标志寄存器内容不变.2)两操作数位数应相同.(字节或字)3)其它规则见下图.,MOV指令的传送规定,非法传送种种,两个操作数的类型不一致例如源操作数是字节,而目的操作数是字;或相反两个操作数不能都是存储器传送指令很灵活,但主存之间的直接传送却不允许段寄存器的操作有一些限制段寄存器属专用寄存器,对他们的操作能力有限,2).堆栈操作指令,压栈:用压栈指令PUSH可以将
46、通用寄存器、段寄存器或字存储单元内容压入堆栈。例如:PUSH AX;将AX内容送入栈顶字单元中压栈指令执行分两步进行:.(SP)-2 SP;.操作数 SP;,后SP,AH AL,出栈:用弹出指令POP可以将当前栈顶字单元内容取出送到通用寄存器、段寄存器或字存储单元中。例如:POP AX;将栈顶字单元内容送到AX中出栈指令分两步进行:.(SP)寄存器/字单元.(SP)+2 SP,3).交换指令,指令格式:XCHG DEST,SRC功能:(DEST)(SEC),即将源地址的内容(源操作数)与目的地址的内容(目的操作数)相互交换.说明:1).标志寄存器内容不变.2).所交换的数据可以是字节或字.3)
47、.数据交换只能在通用寄存器之间或通用寄存器存储单元之间进行.,2.累加器专用传送指令,1)输入指令直接寻址:0255个端口地址号.格式:IN AX,port IN AL,port 功能:将来自端口地址号是port的数据送 到累加器中.间接寻址:可寻64K个端口地址号.格式:IN AX,DX IN AL,DX 功能:将来自DX内的端口地址号的数据送到累 加器中.,2)输出指令直接寻址:0255个端口地址号.格式:OUT port,AX OUT port,AL 功能:将累加器的内容送到port端口地址.间接寻址:可以64K个端口地址号.格式:OUT DX,AX OUT DX,AL 功能:将累加器的
48、内容送到DX所指的端口 地址.说明:输入输出指令都不改变标志寄存器.,换码指令执行前:在主存建立一个字节量表格,内含要转换成的目的代码表格首地址存放于BX,AL存放相对表格首地址的位移量换码指令执行后:将AL寄存器的内容转换为目标代码,3).换码指令XLAT,将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL,XLAT;alds:bx+al,例 代码转换,mov bx,100hmov al,03hxlat,换码指令没有显式的操作数,但使用了BX和AL;因为换码指令使用了隐含寻址方式采用默认操作数,3.地址传送指令,1).取有效地址指令 格式:LEA REG,MEM 功能:取源操作
49、数(变量、标号、地址表达 式)地址的EA送目的操作数地址(通用 寄存器).说明:该指令不改变标志寄存器.例如:LEA AX,DI+10 设(DI)=0500H 该指令执行后(AX)=050AH,2).地址指针装入DS指令 格式:LDS REG,MEM 功能:将源操作数有效地址所对应的双字长 的内存单元中的高字内容送入DS,低 字内容送入指令中指定的寄存器.3).地址指针装入ES指令 格式:LES REG,MEM 功能:将源操作数有效地址所对应的双字长 的内存单元中的高字内容送入ES,低 字内容送入指令中指定的寄存器.以上两条指令均不影响标志寄存器.,4.标志传送指令,1).标志装入AH指令 格
50、式:LAHF 功能:将标志寄存器中的低8位传送到AH中.说明:该指令不影响标志位.2)设置标志指令 格式:SAHF 功能:将AH的内容传送至标志寄存器的低8 位.说明:该指令改变标志寄存器的低8位.即 以下标志位:CF PF AF ZF SF,3).标志压入堆栈指令,格式:PUSHF 功能:将标志寄存器的内容压入堆栈.说明:该指令不影响标志寄存器.4).标志弹出堆栈指令 格式:POPF 功能:从堆栈中弹出一个字送标志寄存器.说明:该指令影响标志寄存器的所有标志 位.,3.4.2 算术运算指令,四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算请注意算术运算类指