资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第二章 实模式下存储器组织与寻址方式,2.1,实模式下存储器组织,2.2,寻址方式,第二章 实模式下存储器组织与寻址方式,本章重点:,1,、实模式下存储器组织,2,、,8086,数据寻址方式,3,、,8086,程序寻址方式,一、存储单元的地址和内容,存储器以字节为单位存储信息,为了访问存储器,每个字节单元给的一个编号。,2,、存储单元的内容,存储单元中存放的信息。,1,、存储单元的地址,0000H,0001H,0002H,0003H,0004H,数据以字节为单位:(,0002H,),34H,数据以字为单位:(,0002H,),1234H,20H,68H,34H,12H,56H,2.1,实模式下存储器组织,数据以字节为单位:(,0001H,),68H,16,位字长机器可访问的最大存储空间是,2,16,64K,,,而实模式下最大存储容量为,2,20,1M,,,20,位地址才能访问,1M,空间。,1,、分段原因,二、存储器的段结构,机器规定:,1),从,0,开始,,16,字节为,1,小段,,1M,空间共分,2,16,个段。,2),程序员编程时要把存储器分段,每个段大小可从,0,64K,,但起始地址不能任意,必须从一小段首址开始。,2,、段的划分,00000H,,,00001H,,,00002H,,,,,0000EH,,,0000FH,00010H,,,00011H,,,00012H,,,,,0001EH,,,0001FH,00020H,,,00021H,,,00022H,,,,,0002EH,,,0002FH,00030H,,,00031H,,,00032H,,,,,0003EH,,,0003FH,00040H,,,00041H,,,00042H,,,,,0004EH,,,0004FH,.,.,.,FFFC0H,,,FFFC1H,,,FFFC2H,,,,,FFFCEH,,,FFFCFH,FFFD0H,,,FFFD1H,,,FFFD2H,,,,,FFFDEH,,,FFFDFH,FFFE0H,,,FFFE1H,,,FFFE2H,,,,,FFFEEH,,,FFFEFH,FFFF0H,,,FFFF1H,,,FFFF2H,,,,,FFFFEH,,,FFFFFH,1,、逻辑地址,程序中使用的地址,由,16,位段地址和,16,位的偏移地址组成。,3,、物理地址(,PA,),存储单元的实际地址。,在,1M,的存储器器里,每个存储单元都有一个唯一的,20,位地址,称该存储单元的物理地址。,2,、有效地址(,EA,),三、存储单元的地址,16,位的偏移地址。,物理地址,16,位段地址左移,4,位,16,位偏移地址。,注:,1,),16,位段地址:段起始地址的高,16,位值。 每一段的起始地址必须是小段的首址,故低,4,位为,0,。,2,),16,位偏移地址:段内相对于段起始地址的偏移量。,3,)每一存储单元都有唯一的物理地址,它可由不同的段地址加不同的偏移地址组成。,例:,若,CS,1000H,,,IP,2051H,,,PA,10000H+2051H=12051H,若CS1100H,IP1051H,,PA,=11000H 1051H12051H,注:,改变段和偏移寄存器的缺省组合,须在指令中说明。,例:,MOV AX, BX,;,DS,段中,,BX,寻址的单元内容送,AX,段,偏移,用途,CS,IP,指令寻址,SS,SP或BP,堆栈寻址,DS,BX,DI,SI,或,16,位数,数据寻址,ES,DI,目标串寻址,MOV AX, ES:BX,;,ES,段中,,BX,寻址的单元内容送,AX,4,、隐含段和偏移寄存器,5,、实际应用中段之间可以互相重叠。,代码段,64KB,数据段,堆栈段,64KB,64KB,代码段,8KB,数据段,堆栈段,2KB,2KB,6,、分段编址的优点,1,)使指令系统中的大部分指令只涉及,16,位地址,减少了指令的长度,提高了程序的执行速度。,2,)为程序的浮动装配创造了条件。,(2),程序本身是可浮动的,即程序不涉及物理地址,也就是和,段地址,无关系,只与,偏移地址,相关。,浮动装配要求,(1),系统能根据内存使用情况将软件自动装配在合适的地方,由操作系统实现。,一、,指令,2.2.1,基本概念,1,、概念:,指出计算机要进行的操作和操作对象 的一组代码。,例:,MOV AX, BX,2.2,寻址方式,:说明操作对象。,2,、组成,操作码,操作数,:说明计算机要进行的操作。,二、,指令系统,一台计算机全部指令的集合,构成指令系统。,三、寻址方式,数据寻址方式,:寻找指令中操作数的方式。,程序寻找方式,:寻找指令转移目的地址的方式。,注:,1,、完成运算后,结果放进目标操作数,源操作数一般不改变,仅提供操作对象之一。,操作码,目标操作数, ,源操作数,例:,ADD BX, AX,2,、双操作数指令:目标和源操作数都有;,单操作数指令:只有目标操作数;,例:,INC AX,例:,RET,单字节指令:目标和源操作数都没有。,四、汇编语言指令书写格式,与数据有关的寻址方式,:,以,MOV,指令为例,立即数寻址,MOV AX , 3069H,寄存器寻址,MOV AL , BH,直接寻址,MOV AX , 2000H ,寄存器间接寻址,MOV AX , BX ,基址变址寻址,MOV AX , BP DI ,寄存器相对寻址,MOV AX , COUNT SI ,相对基址变址寻址,MOV AX , MASK BX SI ,2.2.2,数据寻址方式,特点:,1,、操作数在指令中给出,作为指令的一部分在代码段中。,例:,MOV AL, 5,MOV AX, 3064H,注:,1,)主要用于对寄存器赋值。,2,)立即数可以是,8,位、,16,位。,3,),只能用于,源操作数。,MOV 5, AL (,),一、立即数寻址,数据,指令,2,、执行速度快 操作数直接从指令取得,不需使用总线周期。,特点:,1,、操作数位于,CPU,内部寄存器中,指令指定寄存器号。,例:,MOV AL, AH,MOV AX, BX,注:,1,)目的和源操作数都可用寄存器寻址方式。,2,),目的和源操作数长度一致。,MOV BL, AX (,),二、寄存器寻址,2,、执行速度快操作数在,CPU,内部,不需使用总线周期。,寄存器,指令,数据,寄存器,特点:,1,、操作数位于内存,指令指定数据在内存中的有效地址。,2,、如未指明操作数所在的段,默认为数据段。,例,:,MOV AX, 2000H ,假设,DS=3000H,则,PA=30000H + 2000H =32000H,AX = 3050H,50H,30H,32000H,AH AL,30H,50H,32001H,三、直接寻址,EA,指令,数据,内存,例:,MOV AX, ES: 2000H,;,将,ES,段,2000H,和,2001H,两单元的内容送,AX,寄存器。,3,、,可使用段前缀指明段寄存器。,4,、,操作数地址可由变量(符号地址)表示,VALUE DB 10,MOV AH, VALUE,三、直接寻址,特点:,1,、操作数位于内存,操作数的有效地址在,BX,、,BP,、,SI,或,DI,中。,2,、如未指明操作数所在的段,指令中指定的寄存器是,BX,、,SI,或,DI,时,默认为,数据段,;指令中指定的寄存 器是,BP,时,默认为,堆栈段,。,例:,MOV AX, BX,; PA = 16d, DS+ BX,MOV AX, BP,; PA = 16d, SS + BP,四、寄存器间接寻址,寄存器,指令,EA,寄存器,数据,内存,例:,MOV AX, BX,如果,DS,2000H,,,BX,1000H,,,则,PA,20000H,1000H,21000H,AX,508AH,例:,MOV AX, ES:BX,;,PA = 16d, ES + BX,3,、,可使用段前缀指明段寄存器。,四、寄存器间接寻址,20000H,21000H,21001H,8AH,50H,DS,2,、源操作数,和目的操作数的字长一致,MOV DL, BX ,; BX,指示一个字节单元,MOV DX, BX ,; BX,指示一个字单元,注:,1,、不允许使用,AX,、,CX,、,DX,存放,EA,MOV AX, CX,四、寄存器间接寻址,特点:,1,、操作数的有效地址是一个基址寄存器和,一个变址寄存器的和。,有效地址,=,BX SI,BP DI,+,五、基址变址寻址,基址寄存器 变址寄存器,指令,数据,内存,基址值,变址值,EA,2,、如未指明操作数所在的段,指令中指定的基址寄存器是,BX,,,默认为,数据段,;基址寄存器是,BP,时,默认为,堆栈段,。,例:,MOV AX, BX DI,;,PA = 16d, DS + BX+DI,MOV AX, BP SI,;,PA = 16d, SS + BP +SI,五、基址变址寻址,例:,MOV AX, BX SI,等价于,MOV AX, BX+SI,如果,DS,2100H,,,BX,0158H,,,SI=10A0H,则,PA,21000H,0158H+ 10A0H,221F8H,例:,MOV AX, ES:BX SI,;,PA = 16d, ES + BX + SI,3,、,可使用段前缀指明段寄存器。,注:,必须是一个基址寄存器和一个变址寄存器的组合,MOV AX, BXBP,MOV AX, SIDI,数组首址存放在基址寄存器中,变址寄存器访问数组中的元素。,4,、,适于数组、字符串、表格的处理,例:,在数据段有一数组,ARR,,,编程取出第十六个元素。,MOV BX, OFFSET ARR,MOV DI, 0010H,MOV AL,BX+DI,特点:,1,、操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的位移量之和。,有效地址,=,BX,BP 8,位,SI 16,位,DI,+,位移量,六、寄存器相对寻址,寄存器 位移量,指令,数据,内存,地址,EA,2,、物理地址计算,物理地址,=,BX,16d, DS + SI +,DI,16d, SS + BP +,位移量,8,位,16,位,位移量,8,位,16,位,例:,MOV AX, DI+0100H,如果,DS,2000H,,,DI=3000H,则,PA,20000H+3000H+ 0100H,23100H,六、寄存器相对寻址,例:,MOV AX, ES:STRING SI,;,PA = 16d, ES + STRING+ SI,3,、,可使用段前缀指明段寄存器。,4,、,适于数组、字符串、表格的处理,例,:,MOV AX, COUNTSI,六、寄存器相对寻址,若,DS=3000H, SI=2000H, COUNT=3000H, 35000H=1234H,则,PA = 30000H,2000H+3000H=35000H,MOV AX, COUNT+SI,AX=1234H,特点:,1,、操作数的有效地址是一个基址寄存器的内容、 一个变址寄存器的内容和指令中指定的位移量之和。,有效地址,=,BX SI,BP DI,+,位移量,+,七、相对基址变址寻址,基址寄存器 变址寄存器 位移量,指令,数据,内存,基址值,变址值,EA,2,、物理地址计算,例:,MOV AX, STRBX+SI,MOV AX, STRBX SI,MOV AX, STR+BX+SI,若,DS,3000H,,,BX=2000H,,,SI=1000H,,,STR=0250H,则,PA,30000H,2000H+ 1000H,0250H,33250H,物理地址,=,16d, DS + BX,+,16d, SS + BP + +,位移量,8,位,16,位,位移量,8,位,16,位,SI,DI,SI,DI,七、相对基址变址寻址,段内寻址,段内直接寻址,JMP NEAR PTR NEXT,段内间接寻址,JMP TABLE BX ,段间寻址,段间直接寻址,JMP FAR PTR NEXT,段间间接寻址,JMP DWORD PTR BX ,用来确定,转移指令,及,CALL,指令,的转向地址。,2.2.3 8086,的程序寻址方式,特点:,转向的有效地址,=,当前,IP,+,位移量,(8bit/16bit),注:,NEXT,为转向的符号地址,一、 段内直接寻址,例,:,JMP,SHORT,NEXT,;,短转移,,转移范围,-128 +127,JMP,NEAR PTR,NEXT,;,近转移, 转移范围,-32768 +32767,短转移:,当位移量为,1,个字节时,称短转移,,符号地址前加操作符,SHORT,;,近转移:,当位移量为,2,个字节时,称近转移,,符号地址前加操作符,NEAR PTR,。,特点:,1,、转向的有效地址是一个寄存器或存储单元的内容。,例:,BX=1000H,,,SI=5280H,,,TABLE=2000H,DS=2000H,,,23000H=3280H,,,26280H=2450H,2,、有效地址送,IP,寄存器,JMP BX,JMP TABLEBX,JMP,WORD PTR,TABLEBX,JMP BXSI,JMP,WORD PTR,BXSI,; IP=1000H,; IP=3280H,; IP=2450H,注:,存储单元的地址可用除立即数以外的任何一种数据 寻址方式得到。,二、 段内间接寻址,code1 segment,jmp,far,ptr,next,code1 ends,code2 segment,next: .,code2 ends,特点,:,用指令中提供的,转向段地址,和,偏移地址,取代,CS,和,IP,。,注:,FAR PTR,:,段间转移操作符。,三、 段间直接寻址,特点:,用存储器中的两个相继字的内容取代,CS,和,IP,。,例:,JMP,DWORD PTR,BX,;,BX,、,BX,1,所指的内存单元内容送,IP,;,BX,2,、,BX,3,所指的内存单元内容送,CS,注:,存储单元的地址可用除立即数和寄存器以外的任何一种 数据寻址方式得到。,CALL,DWORD PTR,DI,;,调用地址在,DIDI+3,所指的内存单元,四、段间间接寻址,1,、对于以下,CS,:,IP,组合,计算每条指令的存储器地址。,1,),CS=1000H, IP=2000H,2,),CS=1234H, IP=1000H,2,、实模式下存储器管理采用分段方式,每段最大的寻址空间为,,,20,位的物理地址由,加,形成。,3,、设,BX,1000H,,,DI,0010H,,,DS,2100H,,在指令,MOV AX,,,BX+DI,中,源操作数的寻址方式为,;物理地址为,。,思考题,
展开阅读全文