微机原理及应用复习.ppt
杭州电子科技大学微机原理及应用微机原理及应用微机原理及应用杭州电子科技大学微机原理及应用一、基本知识一、基本知识1、微型计算机的组成和结构2、数制及转换数制及转换3 3、二进制码、二进制码杭州电子科技大学微机原理及应用1、微型计算机的组成和结构由运算器、控制器、存储器、输入设备和输出设备五大部分组成一、基本知识一、基本知识杭州电子科技大学微机原理及应用微型计算机的硬件体系结构冯诺依曼结构:由运算器、控制器、存储器、输入设备和输出设备五大部分组成数据和程序以二进制代码的形式不加区别地存放在存储器中,存放位置由地址指定,地址码也是二进制形式控制器根据存放在存储器中的指令序列(即程序)工作,并由一个程序计数器(PC)控制指令的执行。控制器具有判断能力,能够根据计算结果选择不同的动作流程杭州电子科技大学微机原理及应用微型计算机的结构地址总线AB:用来传送CPU输出的地址信号,确定被访问的存储单元、I/O端口。地址总线的条数决定微处理器的寻址能力数据总线DB:用来在CPU与存储器、I/O接口之间进行数据传送数据总线的条数决定微处理器一次最多可以传送的数据宽度控制总线CB:以来传送各种控制信号杭州电子科技大学微机原理及应用诺依曼结构特点:串行顺序处理机制采用二进制采用程序存储方式计算机组成结构:5个部分诺依曼结构的改进采用多个处理部件形成流水线处理组成阵列机构,采用单指令流多数据流用多个诺依曼结机器组成多机系统,支持并行工作杭州电子科技大学微机原理及应用2、数制数制计算机采用的数制:二进制(1)二进制的算术运算(2)二进制的逻辑运算“或或”运算运算“与与”运算运算“非非”运算运算“异或异或”运算运算杭州电子科技大学微机原理及应用r r进制数转换为十进制数进制数转换为十进制数十进制数转换为二进制数十进制数转换为二进制数方法:方法:A、将整数部分和小数部分分别进行转换,然后再把转换结果进行相加。、将整数部分和小数部分分别进行转换,然后再把转换结果进行相加。B、整数转换采用除、整数转换采用除2取余法:用取余法:用2不断地去除要转换的数,直到商为不断地去除要转换的数,直到商为0。再将。再将每一步所得的余数,按逆序排列,便可得转换结果。每一步所得的余数,按逆序排列,便可得转换结果。C、小数转换采用乘、小数转换采用乘2取整法:每次用取整法:每次用2与小数部分相乘,取乘积的整数部分,与小数部分相乘,取乘积的整数部分,再取其小数部分乘再取其小数部分乘2直到小部分为直到小部分为0。将所取整数顺序放在小数点后即为转换。将所取整数顺序放在小数点后即为转换结果结果。杭州电子科技大学微机原理及应用 2 136 余数(结果)余数(结果)低位低位 2 68 -0 2 34 -0 2 17 -0 2 8 -1 2 4 -0 2 2 -0 2 1 -0 0 -1 高位高位转换结果:(转换结果:(136)D=(10001000)B例:将(例:将(136)D转换为二进制数。转换为二进制数。杭州电子科技大学微机原理及应用0.625 *2 1.25 *2 0.5 *2 1.0 取整:取整:高位高位 低位低位转换结果:转换结果:(0.625)D =(0.101)B例:将(例:将(0.625)D0.625)D转换为二进制数。转换为二进制数。杭州电子科技大学微机原理及应用(1)、二进制数到八进制数、十六进制数的转换)、二进制数到八进制数、十六进制数的转换A、二进制数到八进制数转换采用、二进制数到八进制数转换采用“三位化一位三位化一位”的方的方法。从小数点开始向两边分别进行每三位分一组,向法。从小数点开始向两边分别进行每三位分一组,向左不足三位的,从左边补左不足三位的,从左边补0;向右不足三位的,从右边;向右不足三位的,从右边补补0。B、二进制数到十六进制数的转换采用、二进制数到十六进制数的转换采用“四位化一位四位化一位”的方法。从小数点开始向两边分别进行每四位分一组,的方法。从小数点开始向两边分别进行每四位分一组,向左不足四位的,从左边补向左不足四位的,从左边补0;向右不足四位的,从右;向右不足四位的,从右边补边补0。二进制数和八进制数、十六进制数间的转换二进制数和八进制数、十六进制数间的转换杭州电子科技大学微机原理及应用 3 5 2 .6 011 101 010 110 =(11 101 010.11)B(2)、八进制、十六进制数到二进制数的转换)、八进制、十六进制数到二进制数的转换方法:采用方法:采用“一位化三位(四位)一位化三位(四位)”的方法。按顺序的方法。按顺序写出每位八进制(十六进制)数对应的二进制数,所写出每位八进制(十六进制)数对应的二进制数,所得结果即为相应的二进制数。得结果即为相应的二进制数。例:将例:将(352.6)o转换为二进制数。转换为二进制数。杭州电子科技大学微机原理及应用在二进制中,将原码每位变反,可得反码。如10100的反码为01011,用2位电路很容易做到,而原码与反码相加正好差1而未有进位(无溢出)。如上例:原码:10100反码:01011原码+反码=11111如果反码加1后再去与原码相加就得:原码+(反码+1)=10100+01100=100000所以,在二进制中,常用反码加1的方法来获得补码补码。这在计算机中非常方便,因为二进制电路由原码求反码是很容易的.有了补码,就可以将减法变成加法来运算了。3、二进制码杭州电子科技大学微机原理及应用编码编码编码分为:数的编码字符的编码其他信息编码十进制数的编码:称为二十进制数码 BCD-使用最广泛的是8421码BCD码规则如下:十进制的基本数字分别用四位二进制数表示;数的编码数的编码杭州电子科技大学微机原理及应用1、X原=01001001B,Y原=10101010B,则X-Y原=?2、0.101001B等于A.0.640625D B.0.620125DC.0.820325D D.0.804625D杭州电子科技大学微机原理及应用二、微机系统结构二、微机系统结构(8086/8088)(8086/8088)1、Intel 8086/8088CPU的内部结构的内部结构(1 1)、存储器结构(存储器组成,分段,逻辑地址)、存储器结构(存储器组成,分段,逻辑地址和物理地址,堆栈段的使用)和物理地址,堆栈段的使用)2、8086/8088的引脚信号的引脚信号3、系统结构和配置、系统结构和配置(2 2)、输入输出结构)、输入输出结构(3 3)、工作模式(重点最小工作模式)、工作模式(重点最小工作模式)4、CPU内部时序内部时序重点掌握总线周期、指令周期等概念及最小模式系统重点掌握总线周期、指令周期等概念及最小模式系统的读的读/写总线周期写总线周期杭州电子科技大学微机原理及应用1、Intel 8086/8088CPU的结构的结构80868086的内部结构的内部结构成两部分成两部分:总线接口部件BIU:总线接口单元BIU,负责控制存储器读写。执行部件EU:执行单元EU从指令队列中取出指令并执行。特点特点:取指令和执行指令分开进行,提高了速度。二、微机系统结构(二、微机系统结构(8086/8088)杭州电子科技大学微机原理及应用20位地址加法器位地址加法器四个段寄存器:四个段寄存器:CS、DS、SS、ESCS管理代码段管理代码段;DS管理数据段管理数据段SS管理堆栈段管理堆栈段;ES管理附加段管理附加段.16位的指令指针寄存器位的指令指针寄存器IP:IP中的内容是下一条指令对现行代码段基地址的偏移量,6字节的指令队列字节的指令队列指令队列共六字节,总线接指令队列共六字节,总线接口部件口部件BIU从内存取指令,从内存取指令,取来的总是放在指令队列中;取来的总是放在指令队列中;执行部件执行部件EU从指令队列取指从指令队列取指令,并执行。令,并执行。杭州电子科技大学微机原理及应用内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外外部部总总线线执行部分执行部分控制电路控制电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用通用寄存寄存器器地址地址加法加法器器指令队列缓冲器指令队列缓冲器执行部件执行部件(EU)总线接口部件总线接口部件(BIU)16位位20位位16位位8位位通用寄存器通用寄存器四个专用寄存器四个专用寄存器SP:堆栈指针:堆栈指针 BP:基址指针:基址指针:SI:源变址寄存器源变址寄存器 DI:目的源变址寄存器目的源变址寄存器 算术逻辑单元算术逻辑单元ALU:主要是加法器。大部分指令主要是加法器。大部分指令的执行由加法器完成。的执行由加法器完成。标志寄存器:标志寄存器:16位字利用了9位。杭州电子科技大学微机原理及应用总线接口总线接口单元和执行单元的动作管理单元和执行单元的动作管理1、当8086的指令队列有两个空字节,BIU自动取指令到指令队列中;2、执行部件EU准备执行一条指令时,它从BIU的指令队列取指令,然后执行;3、指令队列已满,BIU与EU又无总线请求时,总线接口部件进入空闲状态。4、执行转移指令、调用指令、返回指令时,BIU自动清除指令队 列,然后从新地址取指令,并立即送给EU,然后再从新单元开始,从新填满队列机构。8086CPU的特点:BIU与EU是分开的,取指令与执行指令可以重叠。提高执行速度。杭州电子科技大学微机原理及应用12345678910111213141516171819204039383736353433323130292827262524232221 GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GNDVCCAD15A16/S3A17/S4A18/S5A19/S6BHE*/S7MN/MX*RD*HOLD(RQ*/GT0*)HLDA(RQ1*/GT1*)WR*(LOCK*)M/IO*(S2*)DT/R*(S1*)DEN*(S0*)ALE(QS0)INTA*(QS1)TEST*READYRESET80862 2、8086/8088 8086/8088的引脚信号的引脚信号杭州电子科技大学微机原理及应用2、8086/8088的引脚信号的引脚信号指指引引脚脚信信号号的的定定义义、作作用用;通通常常采采用用英英文文单单词词或或其其缩缩写表示写表示信信号号从从芯芯片片向向外外输输出出,还还是是从从外外部部输输入入芯芯片片,或者是双向的或者是双向的起起作作用用的的逻逻辑辑电电平平高高、低低电电平平有有效效上上升、下降边沿有效升、下降边沿有效输输出出正正常常的的低低电电平平、高高电电平平外外,还还可可以以输输出出高高阻的第三态阻的第三态 有效电平有效电平 三态能力三态能力 信号的流向信号的流向 引脚的功能引脚的功能杭州电子科技大学微机原理及应用“引脚引脚”小结小结CPU引脚是系统总线的基本信号可以分成三类信号16位数据线:D0 D1520位地址线:A0 A19控制线:ALE、M/IO*、WR*、RD*、READYINTR、INTA*、NMI,HOLD、HLDARESET、CLK、Vcc、GND杭州电子科技大学微机原理及应用采用分段结构的存储器中,任何一个逻辑地址由段基址和偏逻辑地址由段基址和偏移地址移地址两个部分构成,它们都是无符号的16位二进制数。任何一个存储单元对应一个20位的物理地址,也可称为绝对地址,它是由逻辑地址变换得来的。当CPU需要访问存储器时,必须完成如下的地址运算:3.存储器结构存储器结构物理地址=段基址16+偏移地址物理地址的形成如图所示,它是通过CPU的总线接口部件BIU的地址加法器来实现的。杭州电子科技大学微机原理及应用如:代码段寄存器CS=2000H,指令指针寄存器存放的是偏移地址IP=2200H,存储器的物理地址为20000H+2200H=22200H一个存储单元具有两种类型的地址:物理地址和逻辑地址。物理地址就是实际地址,它具有20位的地址值,并是惟一标识1MB存储空间的某一个字节的地址。逻辑地址由段基址和偏移地址组成。逻辑地址由段基址和偏移地址组成。程序以逻辑地址编址,而不是用物理地址。程序以逻辑地址编址,而不是用物理地址。4个段寄存器分别指向4个现行可寻址的分段的起始字节单元。一般指令程序存放在代码段中,段地址来源于代码段寄存器,偏移地址来源于指令指针IP。当涉及到一个堆栈操作时,段地址寄存器为SS,偏移地址来源于栈指针寄存器SP。当涉及到一个操作数时,则由数据段寄存器DS或附加段寄存器ES作为段寄存器,而偏地址是由16位偏移量得到。16位偏移量可以是指令中的偏移量加上16位地址寄存器的值组成,取决于指令的寻址方式。杭州电子科技大学微机原理及应用8086存储器的分体结构存储器的分体结构 8086系统中,存储器是分体结构,1M字节的存储空间分成两个512K字节的存储体。一个是偶数地址存储体,一个是奇数地址存储体,两个存储体采用字节交叉编址方式 杭州电子科技大学微机原理及应用(1)奇偶地址体示意图杭州电子科技大学微机原理及应用两种组态模式两种组态模式两种组态构成两种不同规模的应用系统最小组态模式构成小规模的应用系统8086本身提供所有的系统总线信号最大组态模式构成较大规模的应用系统,例如可以接入数值协处理器80878086和总线控制器8288共同形成系统总线信号杭州电子科技大学微机原理及应用两种组态利用MN/MX*引脚区别MN/MX*接高电平为最小组态模式MN/MX*接低电平为最大组态模式两种组态下的内部操作并没有区别IBM PC/XT采用最大组态我们以最小组态展开基本原理通常在信号名称加通常在信号名称加上划线(如:上划线(如:MX)或星号(如:)或星号(如:MX*)表示低电平有效表示低电平有效杭州电子科技大学微机原理及应用总线操作是指CPU通过总线对外的各种操作8086的总线操作主要有:存储器读、I/O读操作存储器写、I/O写操作中断响应操作总线请求及响应操作CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti描述总线操作的微处理器时序有三级指令周期 总线周期 时钟周期4、CPU内部时序内部时序 杭州电子科技大学微机原理及应用指令周期是指一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期总线周期是指CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程8086的基本总线周期需要4个时钟周期4个时钟周期编号为T1、T2、T3和T4总线周期中的时钟周期也被称作“T状态”时钟周期的时间长度就是时钟频率的倒数当需要延长总线周期时插入等待状态TwCPU进行内部操作,没有对外操作时,其引脚就处于空闲状态Ti杭州电子科技大学微机原理及应用1、简要说明8086微处理器的内部结构?2、系统中存储器的寻址空间(寻址能力)是由什么决定的?8086中如何形成访问存储器的20位物理地址?3、微处理器内部结构由哪些部件组成?试述其主要功能?简答题简答题选择题和填空题选择题和填空题概念性概念性概念性概念性1.已知逻辑地址:CS=1123H,IP=0015H,则其实际地址为:A.01138H B.11245H C.12230H D.12315H2.状态标志寄存器中可用于指令测试的状态位是:A.CF,ZF,DF和PF B.CF,ZF,OF和DFB.C.CF,PF,ZF和OF D.CF,ZF,IF和TF4、地址锁存器的工作原理,作用?杭州电子科技大学微机原理及应用三、三、指令系统指令系统1 1、操作数的寻址方式、操作数的寻址方式(1 1)立即数寻址方式立即数寻址方式(2 2)寄存器寻址方式寄存器寻址方式(3 3)存储器寻址方式存储器寻址方式2、指令、指令(1)传送类指令)传送类指令(2)数据操作类指令)数据操作类指令(3)控制转移类指令)控制转移类指令 杭州电子科技大学微机原理及应用1.立即数寻址方式立即数寻址方式指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)这种操作数被称为立即数imm可以是8位数值i8(00HFFH)也可以是16位数值i16(0000HFFFFH)立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现MOV AX,0102H;AX0102H一、操作数的寻址方式一、操作数的寻址方式杭州电子科技大学微机原理及应用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寄存器名表示其内容(操作数)MOV AX,BX;AXBX杭州电子科技大学微机原理及应用3.存储器寻址方式存储器寻址方式操作数在主存储器中,用主存地址表示程序设计时,8086采用逻辑地址表示主存地址段地址在默认的或用段超越前缀指定的段寄存器中指令中只需给出操作数的偏移地址(有效地址EA)8086设计了多种存储器寻址方式1、直接寻址方式2、寄存器间接寻址方式3、寄存器相对寻址方式4、基址变址寻址方式5、相对基址变址寻址方式杭州电子科技大学微机原理及应用段寄存器的使用规定段寄存器的使用规定访问存储器的方式默认可超越偏移地址取指令CS无IP堆栈操作SS无SP一般数据访问DSCS ES SS有效地址EABP基址的寻址方式SSCS ES DS有效地址EA串操作的源操作数DSCS ES SSSI串操作的目的操作数ES无DI杭州电子科技大学微机原理及应用注意点:存储器寻址方式中的变量注意点:存储器寻址方式中的变量变量指内存中的数据,变量名具有地址属性。存储器寻找方式中经常采用变量形式变量的定义WVAR DW 1234H;定义16位变量WVAR,具有初值1234H;假设其偏移地址为10H单独引用变量名是直接寻址方式MOV AX,WVAR ;指令功能:AX1234H;等同于 MOV AX,0010H相对寻址方式中,变量名表示其偏移地址,相当于位移量MOV AX,DI+WVAR ;MOV AX,WVARDI;等同于 MOV AX,DI+0010H杭州电子科技大学微机原理及应用相对寻址方式中的位移量相对寻址方式中的位移量在寄存器相对和相对基址变址寻址方式中,其位移量不仅可用常量表示,也可用符号表示这个符号可以是变量名,例如WVAR变量,而且支持多种表达形式MOV AX,DI+WVAR ;等同于 MOV AX,WVARDIMOV AX,BX+SI+WVAR;等同于 MOV AX,WVARBX+SI;等同于 MOV AX,WVARBXSI杭州电子科技大学微机原理及应用3.1.3 其它其它1、隐含地址:、隐含地址:不指明操作数,但有隐含规定的寻址方式如:DAA对寄存器AL中的数据进行十进制数调整,结果仍在AL中2、I/O端口地址:端口地址:IN AL,63H0255共256个端口地址MOVE DX,0A16HIN AL,DX0FFFFH个端口地址3、目的操作数寻址方式:除立即数寻址外均可、目的操作数寻址方式:除立即数寻址外均可杭州电子科技大学微机原理及应用1.传送类指令传送类指令数据传送是计算机中最基本、最重要的一种操作,传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位重点掌握MOV XCHG XLAT PUSH POP LEA LDS LES指令系统指令系统杭州电子科技大学微机原理及应用MOV指令传送功能图解指令传送功能图解MOVMOV指令也并非任意传送指令也并非任意传送!立即数立即数段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器非法指令的主要现象:两个操作数的类型不一致无法确定是字节量还是字量操作两个操作数都是存储器段寄存器的操作有一些限制杭州电子科技大学微机原理及应用标志操作指令标志操作指令1.标志位操作指令CLC;复位进位标志:CF0STC;置位进位标志:CF1CMC;求反进位标志:CFCFCLD;复位方向标志:DF0STD;置位方向标志:DF1CLI;复位中断标志:IF0STI;置位中断标志:IF12.标志寄存器低字节与AH的传送指令(LAHF/SAHF)3.标志寄存器出入堆栈指令(PUSHF/POPF)杭州电子科技大学微机原理及应用累加器专用传送指令累加器专用传送指令1)IN 输入指令输入指令指令格式为指令格式为:IN AL,n IN AX,n IN AL,DX IN AX,DX2)OUT 输出指令输出指令 指令格式为:指令格式为:OUT n,AL OUT n,AX OUT DX,AL OUT DX,AX杭州电子科技大学微机原理及应用数据操作类指令数据操作类指令算术运算类指令用来执行二进制的算术运算:加减乘除。这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志重点掌握加法指令:ADD、ADC、INC 减法指令:SUB、SBB、DEC、CMP、NEG乘除指令:MUL、IMUL、DIV、IDIV算术运算类指令算术运算类指令杭州电子科技大学微机原理及应用加法和减法指令加法和减法指令加法指令:ADD,ADC和INC减法指令:SUB,SBB,DEC,NEG和CMP他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位操作数组合:运算指令助记符 reg,imm/reg/mem运算指令助记符 mem,imm/reg杭州电子科技大学微机原理及应用乘法和除法指令乘法和除法指令乘法指令分无符号和有符号乘法指令MUL reg/mem;无符号乘法IMUL reg/mem;有符号乘法除法指令分无符号和有符号除法指令DIV reg/mem;无符号除法IDIV reg/mem;有符号除法杭州电子科技大学微机原理及应用乘法、除法指令说明乘法、除法指令说明乘法指令的源操作数显式给出,隐含使用另一个操作数AX和DX字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX字量相乘:AX与r16/m16相乘,得到32位的结果,其高字存入DX,低字存入AX除法指令的除数显式给出,隐含使用另一个操作数AX和DX作为被除数字节量除法:AX除以r8/m8,8位商存入AL,8位余数存入AH字量除法:DX.AX除以r16/m16,16位商存入AX,16位余数存入DX杭州电子科技大学微机原理及应用位操作类指令位操作类指令 位操作类指令以二进制位为基本单位进行数据的操作当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令注意这些指令对标志位的影响1.逻辑运算指令AND OR XOR NOT TEST2.移位指令SHL SHR SAR3.循环移位指令ROL ROR RCL RCR杭州电子科技大学微机原理及应用1 逻辑运算指令逻辑运算指令双操作数逻辑指令AND、OR、XOR和TEST设置CFOF0,根据结果设置SF、ZF和PF状态,而对AF未定义;它们的操作数组合与ADD、SUB等一样:运算指令助记符 reg,imm/reg/mem运算指令助记符 mem,imm/reg 单操作数逻辑指令NOT不影响标志位,操作数与INC、DEC和NEG一样:NOT reg/mem杭州电子科技大学微机原理及应用2 移位指令移位指令将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数:该操作数为1,表示移动一位该操作数为CL,CL寄存器值表示移位位数(移位位数大于1只能CL表示)按照移入的位设置进位标志CF,根据移位后的结果影响SF、ZF、PF杭州电子科技大学微机原理及应用3 循环移位指令循环移位指令循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。分为:ROL reg/mem,1/CL;不带进位循环左移ROR reg/mem,1/CL;不带进位循环右移RCL reg/mem,1/CL;带进位循环左移RCR reg/mem,1/CL;带进位循环右移循环移位指令的操作数形式与移位指令相同,按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志杭州电子科技大学微机原理及应用串操作指令串操作指令常见串操作计算字符串的长度、查找某个特定字符、改换字符、判断字符串是否一致等串操作类指令MOVS、CMPS、SCAS、LODS、STOS注意事项操作数的源串在当前数据段DS中,若不在,可使用段前缀指令;目的串必须在附加段ES中,且不能使用段前缀指令杭州电子科技大学微机原理及应用字符串指令中的操作数只用于指出指令的操作类型。目的操作数与源操作数的逻辑地址由ES:DI和DS:SI指出用CX存放要处理的字符串的元素个数。在执行带重复前缀的字符串指令时,每执行一次字符串操作指令,CX的内容自动减1用DF标志置来规定字符串处理方向。DF=0,由低向高,DF=1,相反每处理完一个元素,自动修改SI和DI的内容字符串处理过程可被中断杭州电子科技大学微机原理及应用控制转移类指令控制转移类指令 控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令重点掌握:JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系统功能调用 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变杭州电子科技大学微机原理及应用Jcc指令的分类指令的分类Jcc指令不影响标志,但要利用标志(表5-10)根据利用的标志位不同,分成三种情况:判断单个标志位状态 比较无符号数高低 比较有符号数大小 Jcc指令实际虽然只有指令实际虽然只有16条,但却有条,但却有30个助记符个助记符 采用多个助记符,目的是为了方便记忆和使用采用多个助记符,目的是为了方便记忆和使用杭州电子科技大学微机原理及应用1.判断单个标志位状态判断单个标志位状态 JZ/JE和JNZ/JNE利用零标志ZF,判断结果是否为零(或相等)JS和JNS利用符号标志SF,判断结果是正是负 JO和JNO利用溢出标志OF,判断结果是否产生溢出 JP/JPE和JNP/JPO利用奇偶标志PF,判断结果中“1”的个数是偶是奇 JC/JB/JNAE和JNC/JNB/JAE利用进位标志CF,判断结果是否进位或借位杭州电子科技大学微机原理及应用2.比较无符号数高低比较无符号数高低无符号数的大小用高(Above)、低(Below)表示,需要利用CF确定高低、利用ZF标志确定相等(Equal)两数的高低分成4种关系,对应4条指令JB(JNAE):目的操作数低于(不高于等于)源操作数JNB(JAE):目的操作数不低于(高于等于)源操作数JBE(JNA):目的操作数低于等于(不高于)源操作数JNBE(JA):目的操作数不低于等于(高于)源操作数杭州电子科技大学微机原理及应用3.比较有符号数大小比较有符号数大小判断有符号数的大(Greater)、小(Less),需要组合OF、SF标志、并利用ZF标志确定相等与否两数的大小分成4种关系,分别对应4条指令JL(JNGE):目的操作数小于(不大于等于)源操作数JNL(JGE):目的操作数不小于(大于等于)源操作数JLE(JNG):目的操作数小于等于(不大于)源操作数JNLE(JG):目的操作数不小于等于(大于)源操作数杭州电子科技大学微机原理及应用子程序调用与返回指令子程序调用与返回指令子程序是完成特定功能的一段程序当主程序(调用程序)需要执行这个功能时,采用CALL调用指令转移到该子程序的起始处执行当运行完子程序功能后,采用RET返回指令回到主程序继续执行 转移转移指令指令有去无回有去无回 子程序子程序调用需要返回调用需要返回,其其中中利利用用堆堆栈栈保保存存返返回回地地址址杭州电子科技大学微机原理及应用中断指令中断指令INT i8;中断调用指令:产生i8号中断;主程序使用,其中i8表示中断向量号IRET;中断返回指令:实现中断返回;中断服务程序使用杭州电子科技大学微机原理及应用 机器语言机器语言二进制数形式的指令和数据。B0 64 是什么意思?这就是机器语言。既不直观,又不易理解和记忆.MOV AL,64H;很容易记忆理解,这就是助记符助记符。助记符助记符用便于记忆的英语单词表示的指令操作码。它反映了指令的功能和主要特征,便于人们理解和记忆。汇编语言源程序汇编语言源程序汇编语言及程序设计汇编语言及程序设计杭州电子科技大学微机原理及应用 操作数可能放在存储器中,这就涉及操作数的地址。程序中遇到转移指令或调用指令,也需要知道转移地址,若采用具体地址就很不方便,一旦有错,改动也很麻烦。于是人们采用标号采用标号或符号来代替地址或符号来代替地址,例:LP1LP1:mov ax,VARVAR loop LP1LP1 汇汇编编语语言言指令助记符,符号地址,标号,伪指令等语言元素的集合以及这些元素使用的规则。用汇编语言编写的程序叫汇编语言源程序汇编语言源程序。指令除了操作码以外,还有一个操作数问题。杭州电子科技大学微机原理及应用汇编程序源程序的编译程序源程序的编译程序汇编程序汇编程序汇编语言汇编语言源程序源程序机器语言机器语言目标程序目标程序 汇编源程序需翻译成机器语言,变成可执行文件,机器才能执行,这个翻译过程叫汇编汇编。高级语言中称该过程为“解释”或“编译”。执行翻译的程序称为“汇编程序汇编程序”。杭州电子科技大学微机原理及应用汇编语言程序的开发过程汇编语言程序的开发过程编编辑辑文本编辑器,如文本编辑器,如 EDIT.COM源程序:文件名源程序:文件名.asm汇汇编编汇编程序,如汇编程序,如 ML.EXE目标模块:文件名目标模块:文件名.obj连连接接连接程序,如连接程序,如 LINK.EXE可执行文件:文件名可执行文件:文件名.exe调调试试调试程序,如调试程序,如 DEBUG.EXE应用程序应用程序错误错误错误错误错误错误错误错误杭州电子科技大学微机原理及应用汇编语言的语句格式汇编语言的语句格式执行性语句执行性语句用于表达处理器指令(也称为硬指令),汇编后对应一条指令代码。由处理器指令组成的代码序列是程序设计的主体标号:硬指令助记符 操作数,操作数 ;注释说明性语句说明性语句用于表达伪指令,指示源程序如何汇编、变量怎样定义、过程怎么设置等名字 伪指令助记符 参数,参数,;注释杭州电子科技大学微机原理及应用指令性语句指令性语句由CPU执行,每一条指令性语句都有一条机器码指令与其对应;指示性语句指示性语句由由汇编程序汇编程序执行。它指出汇编程序应如何对源程序进行汇编,如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无机器码指令与其相对应。指令性语句汇编时指令性语句汇编时生成生成机器码;机器码;指示性语句汇编时指示性语句汇编时不生成不生成机器码。机器码。杭州电子科技大学微机原理及应用汇编语言源程序的结构汇编语言源程序的结构 汇编语言源程序通常由一个或几个程序模块组成,每个模块一般由三个逻辑段组成:数据段数据段存放数据、变量存放数据、变量 堆栈段堆栈段堆栈区域堆栈区域 代码段代码段存放程序指令存放程序指令杭州电子科技大学微机原理及应用stack SEGMENT PARA stack DB 100 DUP(stack)stack ENDS data SEGMENT data ENDS code SEGMENT ASSUME CS:code,DS:data,ES:data start:MOV AX,data MOV DS,AX MOV ES,AX MOV AL,4CH INT 21H code ENDS END start 堆栈段数据段代码段一个基本的汇编语言程序框架如下:一个基本的汇编语言程序框架如下:杭州电子科技大学微机原理及应用数据项与表达式数据项与表达式数据项包括常量常量、变量变量、标号标号及表达式表达式。1.常量二进制数,以B结尾。如01001101B。十进制数,如85。十六进制数,以H结尾。第1个数字为A-F时,前面应加0,如0F160H。字符串:用引号括起来的1个或多个字符。如ERROR!,a,汇编时被翻译成对应的ASCII码45H,52H,52H,4FH,52H,21H和61H。杭州电子科技大学微机原理及应用有三个属性:段地址段地址:即标号所在段的段地址;偏移量偏移量:标号所代表存储单元的段内偏移地址;类类 型型:NEAR或FAR:NEAR表示标号所在语句与转移指令/调用指令在同一码段内,跳转时 只需改变IP即可。FAR标号所在语句与转移指令/调用 指令不在同一代码段内。若没有对类型进行说明,默认为NEAR。标号通常作为转移指令转移指令或CALLCALL指令指令的转移地址。2.2.标号标号指令所在内存单元的符号地址指令所在内存单元的符号地址杭州电子科技大学微机原理及应用 变量即内存中的存储单元或数据区。变量名是存储单元(数据区)的符号地 址或名字。变量也有三个属性:段地址变量所在段的段地址偏移量变量单元地址与段首地址之间的位移量。类 型有BYTE、WORD和DWORD三种。变量在程序中作为存储器操作数存储器操作数被引用。3.3.变量变量杭州电子科技大学微机原理及应用4.4.表达式表达式表达式是常数、寄存器、标号、变量与运算符的组合。有数字表达式和地址表达式两种。汇编时按优先规则对表达式进行计算,计算出具体的数值或地址。运行时不能改变。表达式中的运算符有6类:算术、逻辑、关系、取地址、属性、杂类。杭州电子科技大学微机原理及应用SEG:取变量/标号的段地址OFFSET:取变量/标号的偏移地址例:VAR DB 12H MOV BX,OFFSET VAR;取变量VAR的偏移地址 MOV AX,SEG VAR ;取变量VAR的段地址注意,以下指令的异同:MOV BX,OFFSET VAR LEA BX,VAROFFSET只能取静态的偏移地址;LEA指令即可取静态的偏移地址,也可取动态的偏移地址。4)4)取地址运算符取地址运算符SEG、OFFSET杭州电子科技大学微机原理及应用6)6)属性运算符属性运算符PTRPTR用来指定地址操作数的类型。格式:PTR 类型BYTE,WORD,DWORD,NEAR,FARBYTE、WORD、DWORD 用于描述数据存储单元(变量)地址NEAR、FAR 用于描述转移、调用的目的地址杭州电子科技大学微机原理及应用伪指令伪指令数据定义伪指令符号定义伪指令段定义和段寄存器指定伪指令过程定义伪指令结束伪指令 由汇编程序执行的指令,它本身不被汇编成机器指令。常用的伪指令有:杭州电子科技大学微机原理及应用数据定义伪指令数据定义伪指令 用于定义变量,即内存单元或数据区。数据定义伪指令的格式为:变量名变量名 数据定义伪指令数据定义伪指令 操作数,操作数,操作数,操作数,常用的数据定义伪指令有如下几种:DB 定义字节字节 DW 定义字字 DD 定义双字双字操作数可以是常数、变量或表达式杭州电子科技大学微机原理及应用操作数?用来保留存储空间,但不存入数据.例:ABC DB 0,1,2,3,4,OK,$RSV DW?,?,?,?,?,?,?,?复制操作符DUP:重复的数据可以使用复制操作符DUP,如上面RSV亦可写成:RSV DW 8 DUP(?)若操作数中若使用若操作数中若使用$,则表示的是地址计数器则表示的是地址计数器的当前值的当前值。杭州电子科技大学微机原理及应用符号定义伪指令符号定义伪指令 把一个表达式用一个符号表示,以后凡出现该表达式的地方都可用这个符号表示。类似于C语言中的#define。符号定义伪指令有两种:EQU,=用EQU定义的符号未清除前,不能重新定义。清除EQU定义可用PURGE伪指令。用”=”定义的符号可在任何时候进行重定义。二者二者均不占用存储空间,仅是给符号赋值 杭州电子科技大学微机原理及应用3 3 段定义伪指令段定