您好,欢迎访问三七文档
微机原理及应用吴丽娟2020/2/81/94第5章86系列微型计算机的指令系统5.2传送类指令5.4串操作指令5.5控制类指令5.186系列汇编语言及指令的格式与寻址方式5.3数据操作类指令微机原理及应用吴丽娟2020/2/82/94指令是让计算机完成某种操作的命令,指令的集合称作指令系统,不同系列计算机有不同的指令系统。指令的符号用规定的英文字母组成,称为助记符。指令进行编程能够充分开发计算机硬件资源,它的程序目标代码短、运行速度快,因此,指令语言是面向机器的语言,在自动控制、智能化仪器仪表、监测等领域应用广泛。微机原理及应用吴丽娟2020/2/83/945.186系列汇编语言及指令的格式与寻址方式5.1.186系列汇编语言指令语句格式任何一种汇编语言的指令语句都是与机器指令一一对应的,它通过汇编程序将其翻译成机器指令代码(目标代码),让CPU执行某种操作。86系列汇编语言指令语句格式如图5.1所示。图中由前向后的箭头表示是可选项,由后向前的箭头表示是重复项,圆头方框表示是语句中的关键字。微机原理及应用吴丽娟2020/2/84/94(1)标号是给该指令所在地址取的名字,必须后跟冒号“:”,它可以缺省,是可供选择的标识符。86系列汇编语言中可使用的标识符必须遵循下列规则:①标识符由字母(a~z,A~Z)、数字(0~9)或某些特殊字符(@,–,?)组成。②第一个字符必须是字母(a~z,A~Z)或某些特殊的符号(@,–,?),但“?”不能单独作标识符。③标识符有效长度为31个字符,若超过31个字符,则只保留前面的31个字符为有效标识符。微机原理及应用吴丽娟2020/2/85/94下面是有效的标识符:START:MY–CODE:ALPHA:NUM@–1:LOOP1:X:?MORE–350:BETA–1:DELAYIS:下面是无效的标识符:4LOOP:MAINA/B:BETA*:START=3:GAMA$1:NUM+1:?:ONE*TWO:微机原理及应用吴丽娟2020/2/86/94(2)指令助记符是指令名称的代表符号,它是指令语句中的关键字,不可缺省,它表示本指令的操作类型,必要时可在指令助记符的前面加上一个或多个“前缀”,从而实现某些附加操作。(3)操作数是参加本指令运算的数据,有些指令不需要操作数,可以缺省;有些指令需要两个操作数,这时必须用逗号(,)将两个操作数分开;有些操作数可以用表达式来表示。(4)注释部分是可选项,允许缺省,如果带注释则必须用分号(;)开头,注释本身只用来对指令功能加以说明,给阅读程序带来方便,汇编程序不对它做任何处理。微机原理及应用吴丽娟2020/2/87/945.1.286系列CPU的寻址方式机器执行指令的目的就是对指定的操作数完成规定的操作,将操作结果存入规定的地方。因此,如何获得操作数的存放地址及操作结果的存放地址就是一个很关键的问题。8086/8088CPU有多种方法来获取操作数的存放地址及操作结果的存放地址,这些方法统称为数据寻址方式。微机原理及应用吴丽娟2020/2/88/945.1.286系列CPU的寻址方式为什么要设置多种寻址方式?希望用最短的指令长度访问尽可能大的存储器空间希望给多样的程序设计技术和数据结构对数据访问的灵活性和有效性提供支持变址寻址便于处理表格和矩阵相对寻址便于编制浮动的、可重入的程序下面主要以MOV指令为例,介绍86系列CPU的寻址方式。微机原理及应用吴丽娟2020/2/89/94MOV指令的功能格式:MOV目的操作数(dest),源操作数(src)微机原理及应用吴丽娟2020/2/810/948086CPU指令系统中,有一部分指令所用的8位或16位操作数就在指令中提供,这种方式称作立即数寻址方式。例如:MOVAL,80H;将十六进制数80H送入ALMOVAX,1090H;将1090H送AX,AH中为10H,AL中为90H采用立即数寻址方式的指令主要用来对寄存器赋值。因为操作数可以从指令中直接取得,不需要运行总线周期,所以,立即数寻址方式的显著特点就是速度快。立即数可以为8位,也可以为16位;规定立即数只能是整数,不能是小数、变量或者其他类型的数据;另外还要注意,立即数只能作为源操作数。1.立即数寻址立即数寻址方式微机原理及应用吴丽娟微机原理及应用吴丽娟2020/2/812/941.立即数寻址【例】画出MOVAX,1946H指令执行过程示意图。解:指令执行后,AX=1946H,16位数据1946H存入寄存器,下图中,指令存放于代码段,OP为操作码,接着存放低位字节数46H,在存放高位字节数19H,这是字类型的立即数,为指令机器码的一部分。微机原理及应用吴丽娟2020/2/813/942.寄存器寻址如果操作数就在CPU的内部寄存器中,那么寄存器名可在指令中指出。这种寻址方式就叫寄存器寻址方式。对16位操作数来说,寄存器可以为AX,BX,CX,DX,SI,DI,SP或者BP,而对8位操作数来说,寄存器可为AH,AL,BH,BL,CH,CL,DH,DL。例如:INCCX;将CX的内容加1ROLAH,1;将AH中的内容循环左移一位采用寄存器寻址方式的指令在执行时,操作就在CPU内部进行,不需要使用总线周期,因此,执行速度快。在一条指令中,可以对源操作数采用寄存器寻址方式,也可以对目的操作数采用寄存器寻址方式,还可以两者都用寄存器寻址方式。微机原理及应用吴丽娟2020/2/814/942.寄存器寻址例:下列程序执行后,(AX)=?,(BX)=?MOVAX,1234HMOVBX,5678HADDAX,BX该程序中MOV指令为数据传送指令操作符,ADD指令为加法指令操作符,三条指令皆为双操作数指令。第一、二条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。第三条指令中,AX为目的操作数地址,BX为源操作数地址。源地址和目的地址皆为寄存器寻址方式。执行:1234H→AX5678H→BX(AX)+(BX)→AX执行后:(AX)=68ACH,(BX)=5678H微机原理及应用吴丽娟2020/2/815/94微机原理及应用吴丽娟2020/2/816/942.寄存器寻址例:设AX=4710H,CX=7507H。问执行指令MOVAX,CX后AX=?,BX=?解:AX寄存器的内容被CX的内容取代,CX本身的内容不变,故AX=7507H,BX=7507H。微机原理及应用吴丽娟2020/2/817/943.直接寻址使用直接寻址方式时,数据总是在存储器中,存储单元的有效地址由指令直接指出,所以直接寻址是对存储器进行访问时可采用的最简单的方式。例如:MOVAX,[1070H];将DS段的1070H和1071H两单元的内容取到AX中注意:采用直接寻址方式时,如果指令前面没有用前缀指明操作数在哪一段,则默认为段寄存器是数据段寄存器DS。例如,上一条指令执行时,设DS=2000H,则执行过程是将绝对地址为21070H和21071H两单元的内容取出送AX。直接寻址方式微机原理及应用吴丽娟微机原理及应用吴丽娟2020/2/819/94如果要对其它段寄存器所指出的存储区进行直接寻址,则本条指令前必须用前缀指出段寄存器名。例如:CS:MOVBX,[3000H];将CS段的3000H和3001H两单元的内容送BX设CS为5100H,则本指令在执行时,将54000H和54001H两单元的内容取出送BX。微机原理及应用吴丽娟2020/2/820/94【例】假设TABLE是在附加数据段定义的一个字节数组的首地址标号,其偏移地址为1000H,则指令: MOVAL,ES:TABLE或MOVAL,ES:[TABLE]或MOVAL,ES:1000H或MOVAL,ES:[1000H]是等效的,都表示将字节数组的第一个数组元素送入AL寄存器中。 MOVAL,ES:TABLE+2或MOVAL,ES:[TABLE+2]或MOVAL,ES:1000H+2或MOVAL,ES:[1000H+2]也是等效的,都表示将字节数组的第三个数组元素送入AL寄存器中。这种寻址方式一般适用于处理单个变量。微机原理及应用吴丽娟2020/2/821/94例(1)MOVAX,[1024H]MOVBX,ES[1000H]设DS=2000H,ES=3000H,(21024H)=1784H,(31000H)=1234H。指令执行后AX=?,BX=?30000H31000H31001H341200000H21024H21025H8417AH1784ALBH1234BL(1)DS×16+1024H=21024HAX=1784HES=3000H则BX=1234H微机原理及应用吴丽娟2020/2/822/944.寄存器间接寻址采用寄存器间接寻址方式时,操作数一定在存储器中,存储单元的有效地址由寄存器指出,这些寄存器可以为BX,BP,SI和DI之一,即有效地址等于其中某一个寄存器的值:[BX][BP][SI][DI]EA=偏移地址EA计算方法:和直接寻址类似,若指令前面没有用前缀指明具体的段寄存器,则寻址时默认的段寄存器通常为DS。如寄存器为BP时,则对应的段寄存器为SS。微机原理及应用吴丽娟2020/2/823/94采用寄存器间接寻址时,允许在指令中指定一个位移量,这样,有效地址通过将一个寄存器的内容加上一个位移量来得到。位移量可以为8位,也可以为16位。即:[BX][BP]8位位移量[SI]16位位移量[DI]细分起来,寄存器间接寻址可分为以下4种:EA=+微机原理及应用吴丽娟2020/2/824/94(1)以BX寄存器进行间接寻址—数据段基址寻址如MOVAX,[BX](2)以BP寄存器进行间接寻址—堆栈段基址寻址如MOVBX,[BP](3)以SI和DI寄存器进行间接寻址—变址寻址其中SI为源寄存器、DI为目的寄存器(4)将BX、BP和SI、DI寄存器组合起来进行间接寻址—基址加变址寻址如MOVAX,[BX+SI]MOVAX,[BX+SI+0050];相对基址加变址寻址微机原理及应用吴丽娟2020/2/825/94(1)以BX寄存器进行间接寻址—数据段基址寻址。用BX寄存器进行间接寻址时,默认的段寄存器为DS,因为BX称为基址寄存器,所以这种寻址方式也叫数据段基址寻址。例如:MOVAX,[BX]设DS=5000H,BX=3000H,则本指令在执行时,将53000H和53001H两单元的内容送AX。如果要对其它段寄存器所指的区域进行寻址,则必须在指令前用前缀指出段寄存器名。例如:ES∶MOVCX,[BX]设ES=3000H,BX=4000H,则本指令在执行时,将34000H和34001H两单元的内容送CX。寄存器间接寻址方式微机原理及应用吴丽娟微机原理及应用吴丽娟2020/2/827/94(2)以BP寄存器进行间接寻址—堆栈段基址寻址。如果以寄存器BP对操作数进行间接寻址,则必须注意,操作数默认在堆栈段中,因为BP称为基址寄存器,所以这种寻址方式通常称为堆栈段基址寻址。例如:MOVBX,[BP]设SS=5000H,BP=4000H,则本指令在执行时,将54000H和54001H两单元的内容送BX。微机原理及应用吴丽娟2020/2/828/94(3)以SI和DI寄存器进行间接寻址—变址寻址。SI和DI寄存器分别称为源变址寄存器和目的变址寄存器,所以用这两个寄存器来进行间接寻址也叫变址寻址。变址寻址通常用于对数组元素进行操作,另外,后面还会讲到有些串操作指令要求用固定的变址寄存器对操作数进行寻址,操作过程中,指令会自动修改变址寄存器中的地址,以指向下一个操作数。寄存器相对寻址方式微机原理及应用吴丽娟微机原理及应用吴丽娟2020/2/830/94(3)以SI和DI寄存器进行间接寻址—变址寻址。例:设DS=2000H,SS=3000H,BX=1000H,BP=2100H,(21000H)=1426H,(32100H)=2017H,问执行MOVAX,[BX]MOVBL,[BP]指令后AX=?BL=?261417
本文标题:微机原理
链接地址:https://www.777doc.com/doc-3562690 .html