汇编寻址方式
2009-06-27 16:50
162 查看
一、寄存器
8位寄存器有: AH、AL、BH、BL、CH、CL、DH和DL等;
16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;
32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
内存中的变量存储的是其偏移地址
二、寻址方式
1.立即寻址:
MOV AH, 80H
MOV ECX,123456H
2.寄存器寻址
MOV EAX, EBX
MOV VARD, EAX
3.直接寻址
MOV BX, [1234H] ,执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么
-->由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;
-->访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;
-->取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。
由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。
MOV ES:[1000H], AX
4.寄存器间接寻址
MOV BX,[DI]
-->若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
-->有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。
5. 基址加变址寻址
MOV BX, [BX+SI]
-->操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和
6.相对基址加变址寻址
MOV AX, [BX+SI+200H]
MOV AX, 1000H[BX+SI]
-->操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和
7. 32位地址的寻址方式
-->但在用32位寄存器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可以是地址偏移量的一个组成部分。
32位基址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP;
32位变址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI和EBP(除ESP之外)。
1、地址中寄存器的书写顺序决定该寄存器是基址寄存器,还是变址寄存
[EBX+EBP]中的EBX是基址寄存器,EBP是变址寄存器,而[EBP+EBX]中的EBP是基址寄存器,EBX是变址寄存器;
2、默认段寄存器的选用取决于基址寄存器;
3、基址寄存器是EBP或ESP时,默认的段寄存器是SS,否则,默认的段寄存器是DS
三、其他
1.在没有寄存器名存在的情况下,用操作符 X ptr 指明内存单元的长度,X在汇编指令中可以为word或byte
mov word ptr [1000H],1
8位寄存器有: AH、AL、BH、BL、CH、CL、DH和DL等;
16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;
32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
内存中的变量存储的是其偏移地址
二、寻址方式
1.立即寻址:
MOV AH, 80H
MOV ECX,123456H
2.寄存器寻址
MOV EAX, EBX
MOV VARD, EAX
3.直接寻址
MOV BX, [1234H] ,执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么
-->由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;
-->访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;
-->取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。
由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。
MOV ES:[1000H], AX
4.寄存器间接寻址
MOV BX,[DI]
-->若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
-->有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。
5. 基址加变址寻址
MOV BX, [BX+SI]
-->操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和
6.相对基址加变址寻址
MOV AX, [BX+SI+200H]
MOV AX, 1000H[BX+SI]
-->操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和
7. 32位地址的寻址方式
-->但在用32位寄存器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可以是地址偏移量的一个组成部分。
32位基址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP;
32位变址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI和EBP(除ESP之外)。
1、地址中寄存器的书写顺序决定该寄存器是基址寄存器,还是变址寄存
[EBX+EBP]中的EBX是基址寄存器,EBP是变址寄存器,而[EBP+EBX]中的EBP是基址寄存器,EBX是变址寄存器;
2、默认段寄存器的选用取决于基址寄存器;
3、基址寄存器是EBP或ESP时,默认的段寄存器是SS,否则,默认的段寄存器是DS
三、其他
1.在没有寄存器名存在的情况下,用操作符 X ptr 指明内存单元的长度,X在汇编指令中可以为word或byte
mov word ptr [1000H],1
相关文章推荐
- 【汇编语言学习01】寻址方式
- ARM汇编编程基础之三 —— 基本寻址方式与基本指令
- IBM-PC汇编_寻址方式
- 汇编语言实验3-寻址方式
- 汇编语言入门:几种寻址方式之比较
- X86 寻址方式、AT&T 汇编语言相关知识、AT&T 与 Intel 汇编语言的比较、gcc 嵌入式汇编
- 汇编语言之不同寻址方式的灵活运用
- 汇编语言的七种寻址方式
- Linux下汇编学习-3寻址方式
- 网易云课堂《Linux内和分析》汇编分析和寻址方式小结(一)
- 汇编语言学习笔记之与转移地址有关的寻址方式
- 汇编语言之寻址方式
- 汇编试验七:寻址方式在结构化数据访问中的应用
- 通俗理解:汇编七大寻址方式
- 汇编(三)——8086的寻址方式
- 汇编的8种寻址方式,以及2个默认段寄存器
- 汇编语言(王爽)--实验7寻址方式在结构化数据访问中的应用
- 一步步学汇编(六)内存寻址方式
- ARM六种寻址方式的汇编实现
- 16位汇编 使用word ptr和byte ptr的寻址方式