收藏 分销(赏)

第三章 8086的寻址方式.ppt

上传人:pc****0 文档编号:13044475 上传时间:2026-01-10 格式:PPT 页数:52 大小:656.50KB 下载积分:10 金币
下载 相关 举报
第三章 8086的寻址方式.ppt_第1页
第1页 / 共52页
第三章 8086的寻址方式.ppt_第2页
第2页 / 共52页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,第一级,第二级,第三级,第四级,第五级,*,3,.1 微处理器实模式下的寻址方式,3.2 指令的机器码表示方法,3,.,3,微处理器实模式指令系统,第,3,章,8086的寻址方式和指令系统,1,8086/8088指令概述,汇编语言使用指令进行编程,是一种面向机器的低级语言,。,指令是对计算机发出的指示、命令。,例如:,10001011,11000011,这一组二进制代码是一条指令。,它要求8086微处理器把BX寄存器的内容传送到AX寄存器中。,其中,左面的8位二进制代码表示本条指令要进行的操作:在2个16位寄存器之间进行数据传送,称为操作码。后面的1个字节表示在哪两个寄存器之间进行传送,称为操作数。,2,8086/8088指令概述,汇编语言使用指令进行编程,是一种面向机器的低级语言,。,指令是对计算机发出的指示、命令。,例如:,10001011,11000011,这一组二进制代码是一条指令。,用二进制代码表示的指令可以由CPU直接执行,称为机器指令。用机器指令编写程序的规范称为机器语言,编写出来的程序称为机器语言程序。,机器指令难以记忆,不便于阅读和维护,为此,用一些符号来表示上面的操作码和操作数。,例如:MOV AX,BX,3,8086/8088指令概述,例如:MOV AX,BX,用MOV表示进行数据传送的操作码,用AX、BX表示操作数,显然这样的表示方式更清晰,更便于记忆和使用。,用符号、助记符书写的指令称为符号指令。用符号指令书写程序的规范称为汇编语言,对应的程序称为汇编语言源程序。,微处理器不能直接识别和执行符号指令。所以,汇编语言源程序要经过翻译,转换成对应的机器语言程序,才能够交计算机执行。这个翻译的操作称为汇编,由汇编程序完成。,汇编语言和机器语言都是面向机器的低级语言,是计算机的母语。使用汇编语言编程,可以对计算机的硬件直接进行操控,实现计算机硬件能够实现的所有功能。,4,8086/8088指令概述,指令,指令:,控制计算机完成指定操作的命令。,所谓指令,就是一组代码信息,它指出机器进行什么操作,由哪些数据和信息参与该操作,操作得到的结果如何处理等。,指令基本构成:,指令助记符包括操作码和操作数,指令的长度一般在个字节之间。,操作码:,表示指令完成什么样的功能。,指明机器“做什么”即执行什么操作;,操作数:,指令的操作对象,(操作数可以是双操作数,即源操作数和目的操作数;也可以是单操作数和隐含操作数),5,8086/8088指令概述,指令,的一般格式:,操作码操作数,操作数;注释,操作数的一般形式:,1、,立即数操作数:,具有固定数值的操作数。,(即常数,位或位,只能用作源操作数)。,也可以说操作数是数据本身叫立即数。,这类操作数在指令格式内显示给出,并作为代码指令的一部分,取指令时,该操作数也一同被取出。,如,ADD AX,100;其中100就是立即数,立即数只能用作源操作数。,6,8086/8088指令概述,操作数的一般形式:,2、,寄存器操作数,:,这类操作数是寄存器中的内容或(和)寄存器本身。,(如个通用寄存器,段寄存器。通常给出寄存器名称。),如,MOV AX,BX;指令意义是将BX的内容送AX。对于AX这里指的是AX寄存器本身;对于BX指的则是BX寄存器的内容,对于指令,ADD AX,100,AX则两者兼而有之。,7,8086/8088指令概述,操作数的一般形式:,3、存储器操作数:,这类操作数是指定存储单元的内容或该单元的地址.,例1:,MOV DS,:,1000H,AL,其意义是将,AL的内容送存储器数据段中偏移地址为1000H的单元中去。,例2:若指令改写为MOV AL,DS:1000H,指令意义为将数据段中偏移地址为1000H单元中的内容送AL寄存器。前者指的是存储单元的地址,后者指的是存储单元的内容,8,8086/8088指令概述,操作数的一般形式:,例3:指令ADD DS:1000H,AL;,操作数DS:1000H则两者兼而有之。,在寻址方式中,存储器操作数的寻址方式是最复杂的。由寻址方式确定的存储器操作数的地址是偏移地址,亦称有效地址。,9,8086/8088指令概述,操作数的一般形式:,4、隐含操作数:,这类操作数被操作助记符隐含着。,如,对压缩BCD加法结果进行调整的DAA,其操作数就是隐含操作数AL。,5、端口操作数:,可以作源操作数或目的操作数,。,(端口地址,可以直接或寄存器间接给出),如:IN AL,44H,OUT 45H,AL,10,8086/8088指令概述,符号、变量和常量三个概念:,符号:,在指令系统中,符号是一个字符串,它由字母字符(AZ,az)、数字字符(09)和特殊字符(?.$_(下划线)构成。,首字符可以是字母字符和特殊字符,;,符号的字符个数不大于80,但只前31个有效;对于字母字符不区分大小写;单独一个?不能作为一个符号。,正确的符号:ABCDX1、aBCdx1和abcdx1表示同一符号;LOOP、$1、L123、?459。,错误的符号:L 1、X=CT、34AB和AB.B4,因符号中有空格、有“=”、数字为首字符和“.”为非首字符。,11,8086/8088指令概述,符号、变量和常量三个概念:,变量:,在汇编语言中,变量是存储器中一个数据或多个数据(一个数据区)的符号表示.,当表示数据区时,变量的指针仅指向该数据区的第一个数据项。变量的构成法同符号。,常量:,常量表示固定的值,通常又分为数值常量和符号常量。,数值常量就是以值的形式表示常量,如355、46AH等。,符号常量就是用符号表示常量,如用TWO表示2,TWO就是符号常量,表示常数2。,12,3,.1,寻址方式,寻址:寻找操作数的过程称为寻址。,寻址方式:寻找操作数的方法称为寻址方式。,8086/8088的寻址方式,可分为三类:,1.立即数寻址,2.寄存器寻址,3.存储器寻址,直接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址,寄存器间接寻址,8086/8088指令寻址方式,13,3,.1,寻址方式,立即数寻址(,Immediate Addressing):,操作数紧跟在指令操作码之后,与操作码一起存放在代码段区域中,指令取出后,其操作数也就被取出了。(可以是位的也可以是位的),例1:MOV AX,3102H,8086/8088指令寻址方式,14,立即数寻址,例2:MOV AL,05H,指令执行后:,(AL)=05H,例3:MOV AX,3064H,指令执行后:(AX)=3064H,特点:,这类指令执行速度快,因,指令取出后,,,其操作数也就被取出了,。,用途:,主要用来给寄存器或存储单元送初值。,15,立即数寻址,立即数可以送到寄存器中,还可送到一个存储单元,(8,位,),中或两个连续的存储单元,(16,位,),中去。,立即数只能作源操作数,不能作目的操作数。,以,AF,打头的,16,进制数字出现在指令中时,前面一定要加一个数字,0,。,例如,,将,FF00H,送到,AX,的指令必须写成:,MOV AX,,,0FF00H,16,3,.1,寻址方式,寄存器寻址:,(Register Addressing):,操作数存在指定的寄存器中.,对于位操作数,寄存器有,AX,BX,CX,DX,SI,DI,SP,BP。,对于位操作数,寄存器可以是,AH,BH,CH,DH,AL,BL,CL,DL,。,例,:ADD AX,5;,AX为目的操作数,为寄存器寻址方式;,5为源操作数,为立即寻址方式。,对于双操作数指令,每个操作数都有各自的寻址方式,它们可以相同也可以不同。立即寻址方式的操作数只能作为源操作数。,8086/8088指令寻址方式,17,3,.1,寻址方式,存储器寻址方式:,操作数在存储器中。通过存储器寻址找到存储器的物理地址或逻辑地址。,任一存储单元都有一个物理地址和一个或多个逻辑地址。,物理地址=段地址*16(或*10H)+偏移地址,段地址的确定规则如下:,有段前缀时,由该前缀决定段地址;,有变量名无段前缀时,由变量名所在段决定段地址;,既无段前缀也无变量名时,由存取类型决定段地址;,代码段默认CS段;数据段默认DS段;堆栈段默认SS段。,8086/8088指令寻址方式,18,3,.1,寻址方式,存储器寻址方式:,操作数在存储器中。通过存储器寻址找到存储器的物理地址或逻辑地址。,逻辑地址由段地址和偏移地址两部分构成。,偏移地址,亦称有效地址,由寻址方式获得,。,8086/8088指令寻址方式,直接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址,寄存器间接寻址,19,3,.1,寻址方式,直接寻址:,在直接寻址中,有效地址(操作数的偏移地址)就在指令中,它存放在代码段中指令操作码之后,但操作数一般存放在数据段中。所以必须先求出操作数的物理地址,然后再访问存储器,才能取得操作数。,例1,:MOV AX,3102H,如果(DS)=2000H ,则执行结果是(AX)=3040H,8086/8088指令寻址方式,20,3,.1,寻址方式,直接寻址:,段超越前缀:(或称段跨越),如果要对代码段、堆栈段或附加段寄存器所指出的存储区域进行直接寻址,应在指令中指定段超越前缀。,例如:数据若放在附加段中,则应在有效地址前加“ES:”这里的冒号“:”称为修改属性运算符,计算物理地址时,要用ES作基地址,而不是默认值DS,例2,:MOV AX,ES:500H,该指令的源操作数的物理地址16*ES+500H。,8086/8088指令寻址方式,21,3,.1,寻址方式,直接寻址:,符号地址:,在汇编语言指令中,可以用符号地址代替数值地址。,例如,:,MOV AX,VALUE,;,VALUE,为存放操作数单元的符号地址。,执行后,将从有效地址为,VALUE,的存储单元中取出一个字送到AX中。,从形式上看,,VALUE,不仅可以代表符号地址,也可以代表一个位立即数,主要看伪指令是如何说明的,。,8086/8088指令寻址方式,22,3,.1,寻址方式,直接寻址:,符号地址:,例3:,AREA1 EQU 0867H;,等值伪指令,EQU,给常数,0867H,定义一个符号,AREA1,MOV AX,AREA1;,AX=0867H,例4:,AREA1 DW 0867H;,DW伪指令用来定义变量,,,变量用来表示存储器中的数据。变量名AREA1表示内存中一个数据区的名字,也就是符号地址,该地址单元存放一个字数据0867H,。,MOV AX,AREA1,;,将名字为AREA1的字存储单元的内容送AX。结果,AX=0867H,8086/8088指令寻址方式,23,3,.1,寻址方式,8086/8088指令寻址方式,寄存器间接寻址:,操作数的有效地址EA在基址寄存器BX中,基址指针寄存器BP,或变址寄存器SI、DI中,而操作数在存储器中。,1、若指令中指定的寄存器是BX,SI,DI,则操作数在数据段中,所以用DS的内容为段地址,即操作数的物理地址为:,物理地址=16d*DS+BX 或,物理地址=16d*DS+SI 或,物理地址=16d*DS+DI,24,例1:,MOV BX,DI,设 DS=6000H,DI=2000H,操作数的物理地址,=62000H,(62000H)=50A0H,BX=50A0H,3,.1,寻址方式,8086/8088指令寻址方式,25,3,.1,寻址方式,寄存器间接寻址:,操作数的有效地址EA在基址寄存器BX中,基址指针寄存器BP,或变址寄存器SI、DI中,而操作数在存储器中。,2、若指令中指定的寄存器是BP,则操作数在堆栈段中,段地址在SS中,操作数的物理地址为:,物理地址=16d*SS+BP,例2:,MOV AX,BP,8086/8088指令寻址方式,26,若选择BP寄存器作为间接寻址,例2:MOV AX,BP,执行前:SS=1000H,BP=3000H,操作数的物理地址,=13000H,(13000H)=1234H,执行后:,(AX)=1234H,3,.1,寻址方式,8086/8088指令寻址方式,27,3,.1,寻址方式,寄存器间接寻址:。,例3,:MOV BX,SI,若DS=1000H,SI=2000H,(12000H)=318BH,则物理地址=16*DS+SI=10000H+2000H=12000H,如图所示:,8086/8088指令寻址方式,28,3,.1,寻址方式,寄存器间接寻址:。,为了和寄存器寻址区别,规定如下:,寄存器用作间接寻址时必须把寄存器名放在方括号中,即用,BX、BP、SI、DI,来表示。,特点:,只要对,SI、DI、BX、BP,的内容作适当的修改,一条指令就可以对许多不同的存储单元进行访问,指令代码长度短,一般只占两个单元,编程时占用计算机的资源少。,8086/8088指令寻址方式,29,3,.1,寻址方式,段寄存器隐含规定:,SI、DI、BX,寄存器隐含DS段,,BP,隐含SS段。,例4:,MOV AX,DI,;,功能是将当前数据段偏移地址为,DI,的字存储单元的内容送,AX。,如果数据不在相应的间址寄存器隐含的段中,应在指令中指定段跨越前缀,如:,MOV AX,ES:DI,;,功能是将附加段偏移地址为DI的字存储单元的内容送AX。,8086/8088指令寻址方式,寄存器间接寻址:。,30,3,.1,寻址方式,指令中可以指定段跨越前缀来取得其他段中的数据。,例:MOV ES:DI,AX,操作数的物理地址=16 d,ES+DI,MOV DX,DS:BP,操作数的物理地址=16 d,DS+BP,8086/8088指令寻址方式,寄存器间接寻址:。,31,3.1,寻址方式,寄存器相对寻址:,操作数的有效地址,EA为基址寄存器的内容或变址寄存器的内容和指令中指定的8位或16位位移量之和。即,8086/8088指令寻址方式,1、,寄存器是,BX,、,SI,、,DI,时,段寄存器用,DS,2、,寄存器是,BP,时段寄存器用,SS,则物理地址,=16d*DS+BX(,或,SI,或,DI)+8,位(或,16,位)位移量。或,物理地址,=16d*SS+BP+8,位(或,16,位)位移量,32,3,.1,寻址方式,例1,:,MOV BX,COUNTSI,设:DS=3000H,SI=2000H,位移量COUNT=4000H,(36000H)=5678H,则物理地址=16*DS+SI+COUNT=30000H+2000H+4000H=36000H,结果:BX=5678H,8086/8088指令寻址方式,33,3,.1,寻址方式,上述指令也可用,MOV BX,COUNT+SI,表示。,也可用段超越:,MOV DH,,,ES,:,ARRAYSI,(物理地址,=16*ES+SI+ARRAY,),8086/8088指令寻址方式,34,3,.1,寻址方式,基址加变址寻址:,操作数的有效地址EA是一个基址寄存器(BX或BP)和变址寄存器(SI或DI)的内容之和,两个寄存器均由指令指定。,1、,基址寄存器用,BX,时,段寄存器用,DS,,,2、,基址寄存器用,BP,时,段寄存器用,SS,,物理地址=16*DS+BX+SI 或,物理地址=16*DS+BX+DI 或,物理地址=16*SS+BP+SI 或,物理地址=16*SS+BP+DI,8086/8088指令寻址方式,35,3,.1,寻址方式,例:,MOV AX,BXSI,设DS=3000H,BX=1200H,SI=0500H,(31700H)=ABCDH,则物理地址=16*DS+BX+SI=3000H+1200H+0500H=31700H,结果:AX=ABCDH,8086/8088指令寻址方式,用段跨越时的格式为:MOV AX,ES:BXSI,36,3,.1,寻址方式,相对基址变址寻址:,操作数的有效地址,EA,是一个基址寄存器和变址寄存器的内容和8位或16位位移量之和。,1、,基址寄存器用,BX,时,段寄存器用,DS,2、,基址寄存器用,BP,时,段寄存器用,SS,物理地址=16*,DS+BX+SI(,或,DI)+8,位位移量(16位位移量),物理地址=16*,SS+BP+SI(,或,DI)+8,位位移量(16位位移量,),8086/8088指令寻址方式,37,3,.1,寻址方式,例:,MOV AX,,,MASKBXSI,设,DS=2000H,BX=1500H,SI=0300H,MASK=0200H,(21A00H)=26BFH,则物理地址=16*,DS+BX+SI+MASK,=20000,H+1500H+0300H+0200H=21A00H,结果:,AX=26BFH,8086/8088指令寻址方式,38,3,.1,寻址方式,下面几种书写方式均是等价的地址表达式:,DELTA BX SI 5 等价于,DELTA 5 BX SI 等价于,DELTA 5 SI BX 等价于,DELTA BX+SI 5 等价于,DELTA BX+SI+5。,若地址表达式既无变量名也无常量名,则数值常量可不加方括号放在地址表达式的起始处。下述地址表达式也是等价的;,5 BX DI,等价于,BX DI 5,等价于,BX 5 DI,等价于,5 BX+DI,等价于,5 DI+BX。,非法的地址表达式:,BX BP 5、DI SI 5,,原因是BX与BP和DI与SI是互斥的,不能同时出现在同一地址表达式中。,8086/8088指令寻址方式,39,3,.1,寻址方式,其它:,1、,隐含寻址:,指令中不指明操作数,但有隐含规定的寻址方式,例如:,DAA,它的含义是对寄存器,AL,中的数据进行十进制调整,结果仍保留在,AL,中,2、,I/O端口寻址,、,直接端口寻址:,端口地址由指令直接提供,它是一个8位,立即数能访问端口号为00,-,FFH,即256个端口。,例:IN AL,63H ;将端口63H中内容送进AL寄存器,。,、,间接端口寻址:,端口号由寄存器DX提供,能访问64K个I/O,端口0000,-,FFFFH。,例,:MOV DX,213H;DX=端口地址号213H,IN AL,DX ;AL端口213H中的内容。,8086/8088指令寻址方式,40,3,.1,寻址方式,3、一条指令有几种寻址方式:,以上介绍的各种寻址都是针对源操作数的,目的操作,数均用寄存器来表示。,实际上,目的操作数也可以用除立即寻址方式以外的,所有寻址方式指定。,例:MOV BX,AL,设BX=3600H,DS=1000H,AL=05H,则目的操作数的物理地址,=16*DS+BX=10000H+3600H=13600H,结果:(13600H)=05H,8086/8088指令寻址方式,41,MOV AX,1000H,MOV BX,AX,MOV AX,1000H,MOV BX,AX,MOV AX,BX+10H,MOV AX,BXDI,MOV AX,TABLEBPDI,MOV AX,SI,MOV AX,BX+20H,MOV DX,213H,IN AL,DX,指出下列指令中源和目标操作数的寻址方式:,42,3,.,2,指令的机器码表示方法,指令的机器码表示方法,一、,机器语言指令的编码目的和特点,、机器语言指令的编码目的,、汇编语言源程序,用汇编语言(即主要由指令系统组成的语言)编写的程序称为汇编语言。,若直接将它送到计算机,机器并不认识那些构成程序的指令和符号的含义,还必须由汇编程序将源程序翻译成计算机能识别的二进制机器语言指令(机器码),才能被计算机识别和执行。,43,3,.,2,指令的机器码表示方法,指令的机器码表示方法,一、,机器语言指令的编码目的和特点,、机器语言指令的编码目的,、机器语言指令由操作码和地址码两部分组成,是多字节指令,一条指令可以由个字节组成。,通常,计算机用户采用汇编语言编写程序时,一般可以不必了解每条指令的机器码。不过,若要透彻了解计算机的工作原理,及能看懂包含机器码的程序清单,对程序进行正确的调试、排错等,就需要熟悉机器语言。所以我们要介绍一下机器语言指令的基本概念和编码方式。,44,3,.,2,指令的机器码表示方法,指令的机器码表示方法,一、,机器语言指令的编码目的和特点,2、,机器语言指令的编码特点,8086指令的二进制编码非常多,很难列出指令与机器语言的对照表。但若为每种基本指令给出一个,指令,编码格式,,对照填上不同的寻址方式,数据类型等,就能求得每条指令的机器码。,45,3,.,2,指令的机器码表示方法,指令的机器码表示方法,二、,机器语言指令代码的编制,、,编码格式说明:以寄存器之间或寄存器与存储器之间的MOV指令为例,说明指令的编码方式。,其中:,、,第一字节高,6,位是操作码,,100010,、W位说明传递数据的类型是字还是字节。,W=0为字节,W=1为字,46,3,.,2,指令的机器码表示方法,指令的机器码表示方法,二、,机器语言指令代码的编制,、,编码格式说明:以寄存器之间或寄存器与存储器之间的MOV指令为例,说明指令的编码方式。,其中:,、D位标明数据传送方向。,D=0寄存器为源操作数(数据从寄存器传出),,D=1寄存器用于目的操作数(数据传至寄存器),47,3,.,2,指令的机器码表示方法,指令的机器码表示方法,二、,机器语言指令代码的编制,、,编码格式说明:以寄存器之间或寄存器与存储器之间的MOV指令为例,说明指令的编码方式。,其中:、REG寄存器号,1)、用3位编码可寻址8种不同的寄存器,再由W=1还是0,选择8位或16位寄存器。,2)对使用段寄存器指令,REG字段占2位。,48,3,.,2,指令的机器码表示方法,指令的机器码表示方法,二、,机器语言指令代码的编制,其中:,、REG寄存器号,1)、用3位编码可寻址8种不同的寄存器,再由W=1还是0,选择8位或16位寄存器。,2)对使用段寄存器指令,REG字段占2,位。,49,3,.,2,指令的机器码表示方法,指令的机器码表示方法,二、,机器语言指令代码的编制,其中:,、MOD和R/M来指定另一个操作数是寄存器还是存储器单元。如表所示:,50,3,.,2,指令的机器码表示方法,指令的机器码表示方法,二、,机器语言指令代码的编制,例:求指令MOV SP,BX 的机器码 ;SP,BX 8BE3H,51,3,.,2,指令的机器码表示方法,指令的机器码表示方法,二、,机器语言指令代码的编制,例:立即数寻址指令的编码,对于立即数寻址的指令,除了操作码外,还要有一到两个字节用于存放立即数据本身。,立即数传送给寄存器指令编码格式:,如:求指令,MOV DX,,,5678H,的机器码。(立即寻址),1011,1,010,01111000,01010110,BA7856H,52,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服