,第3章寻址方式和指令系统 说明: ①直接寻址方式,是以数据段的地址为基础,可在多达64 KB的范围内寻找操作数。 ②缺省情况下,认为操作数有效地址的作用域是DS所指向 的数据段,但允许使用段超越前缀指定为其他段,即对于寻找操 作数来说,还允许操作数在以代码段、堆栈段或附加段为基准的 区域中,即只要在指令中指明是段超越的,则16位地址偏移量可 以与CS、SS、ES、FS或GS相加,作为操作数的地址,如 MOV AX, ES:[2000H
第3章 寻址方式和指令系统 说明: ① 直接寻址方式,是以数据段的地址为基础,可在多达64 KB的范围内寻找操作数。 ② 缺省情况下,认为操作数有效地址的作用域是DS所指向 的数据段,但允许使用段超越前缀指定为其他段,即对于寻找操 作数来说,还允许操作数在以代码段、堆栈段或附加段为基准的 区域中,即只要在指令中指明是段超越的,则16位地址偏移量可 以与CS、SS、ES、FS或GS相加,作为操作数的地址,如MOV AX, ES∶[2000H]
,第3章寻址方式和指令系统 ③指令中操作数的有效地址既可以是一个数字,也可以是 个符号地址,如例3-4中的 IBEGIN就是一个符号地址 ④直接寻址主要用于单个操作数的相对寻址场合,如简单 的标量操作数寻址和静态分配的数组的起始地址寻址等
第3章 寻址方式和指令系统 ③ 指令中操作数的有效地址既可以是一个数字,也可以是 一个符号地址,如例3-4中的BEGIN就是一个符号地址。 ④ 直接寻址主要用于单个操作数的相对寻址场合,如简单 的标量操作数寻址和静态分配的数组的起始地址寻址等
,第3章寻址方式和指令系统 4.寄存器间接寻址 操作数在存储器中,但操作数地址的偏移量包含在寄存器 中,这种寻址方式称为寄存器间接寻址。寄存器间接寻址可以 是16位寻址,也可以是32位寻址。若使用BX、SI、DI、BP4个 寄存器中的一个,则为16位寻址;若使用的是EAX、EBX、ECX、 EDX、ESⅠ、EDI、EBP、ESP中的一个,则为32位寻址。以BX、SI DI、EAX、BBX、ECX、EDX、ESⅠ、EDI间接寻址时,则默认操作 数在DS段中;以BP、EBP、ESP间接寻址时,则默认操作数在SS 段中。 寄存器的使用规定对16位寻址和32位寻址是不一样的
第3章 寻址方式和指令系统 4.寄存器间接寻址 操作数在存储器中,但操作数地址的偏移量包含在寄存器 中,这种寻址方式称为寄存器间接寻址。寄存器间接寻址可以 是16位寻址,也可以是32位寻址。若使用BX、SI、DI、BP 4个 寄存器中的一个,则为16位寻址;若使用的是EAX、EBX、ECX、 EDX、ESI、EDI、EBP、ESP中的一个,则为32位寻址。以BX、SI、 DI、EAX、EBX、ECX、EDX、ESI、EDI间接寻址时,则默认操作 数在DS段中;以BP、EBP、ESP间接寻址时,则默认操作数在SS 段中。 寄存器的使用规定对16位寻址和32位寻址是不一样的
,第3章寻址方式和指令系统 C股段 低 DS20000H +SI1000H 操作码 21000H 低 AX LAHTAL H 34H21000 12H 图3-5寄存器间接寻址示意图
第3章 寻址方式和指令系统 图3-5 寄存器间接寻址示意图 DS 20000H + S I 1000H 21000H 操作码 … … 低 高 CS段 34H 12H … … DS段 低 AH AL 21000H 高 AX
,第3章寻址方式和指令系统 (1)16位寻址时,偏移地址放在SⅠ、DⅠ、BP或BX中,段默 认有两种情况: ①若以SⅠ、DI、BX间接寻址,通常操作数在现行数据段区 域中,即数据段寄存器DS左移4位后加上SⅠ、DI、BX中的16位偏 移量作为操作数的地址。例如, MOV AX,[S∏,操作数在数据 段寄存器DS中,16位偏移量在SI中。设(DS)=2000H, (SI)=1000H,21000H单元的内容为34H,21001单元的内容为 12H,执行 MOV AX,[SI后,AX的内容为1234H。指令的执行 过程如图3-5所示
第3章 寻址方式和指令系统 (1) 16位寻址时,偏移地址放在SI、DI、BP或BX中,段默 认有两种情况: ① 若以SI、DI、BX间接寻址,通常操作数在现行数据段区 域中,即数据段寄存器DS左移4位后加上SI、DI、BX中的16位偏 移量作为操作数的地址。例如,MOV AX,[SI],操作数在数据 段寄存器DS中,16位偏移量在SI中。设(DS)=2000H, (SI)=1000H,21000H单元的内容为34H,21001H单元的内容为 12H,执行MOV AX,[SI]后,AX的内容为1234H。指令的执行 过程如图3-5所示