`
隐形的翅膀
  • 浏览: 498417 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据寻址

 
阅读更多
1. move

move target source

单条move指令不能把数据从一个内存位置移到另一个内存位置,可以先把数据送到一个寄存器中

mov ax var1

mov var2 ax

var1 and var2 都是内存位置,不能 mov var2 var1

在复制数据到寄存器时,必须考虑到它需要的最少字节数

2. movzx and movsx

3. LAHF 指令将EFLGS寄存器的低字节复制到AH寄存器,被复制的标志包括符号标志,零标志,进位标志,奇偶标志和进位标志

.data

lahf                ;状态标志送至AH
mov saveflags,ah    ;状态标志保存在变量中

3. SAHF 指令复制AH寄存器的值到 EFLAGS 寄存器的低字节

move ah,saveflags
sahf

4. XCHG 交换两个操作数的内容

XCHG reg,reg

5. 直接偏移操作数

arrayB BYTE 10h,20h,30h

mov al,arrayB ; AL=10H

mov al,[arrayB+1] AL=20H


arrayB+1, 被称为有效地址, 有效地址以方括号括起来时 表示要对方括号内的表达式寻址以获取该有效地址内存的内容

MASM并不要求一定要使用方括号,因此下面是等价

mov al, [arrayB+1]
mov al, arrayB+1

5. INC DEC 加1或减1

6. ADD SUB

7. NEG 将数字转换为对应的补码而求其相反数

8. 标志位

ZF,CF,AC,PF,SF,DF


9. 和数据相关的操作符和伪指令

OFFSET
PRT
TYPE 返回数组中每个元素的大小(以字节计算)

LENGTHOF 操作数返回数组内元素的数组

sizeof 操作符返回数组初始化占用的字节数

10,

假设bVal位于00404000处

mov esi, offset bVal   ; ESI = 00404000

esi 一般用来保存小一条指令的地址,

mov esi, OFFSET myArray + 4

11 ALIGN

对齐指令

12, PTR

myDouble DWORD 12345678h

mov ax, myDouble 错误, 32 不能送到 16位寄存器中

但word PRT可以将低字节5678H送到AX

mov ax,WORD PTR [myDouble+2] ; 1234h
mov bl,bypte ptr mydouble; 78h

将两个较小值送到较大的目的操作数


wordList WORD 5678h,1234h

mov eax, DWORD PRT wordList; EAX= 12345678H

13. TYPE

var1 BYTE ?
var2 WORD ?
var3 DWORD ?

TYPE var1 ; 1
TYPE var2 ; 2
TYPE var3 ; 4



14, LENGTHOF 数组中的元素的数组

15, sizeof 返回值等于 LENGTHOF 和 TYPE 返回值的 乘积

intArray WORD 32 DUP(0)

mov eax,SIZEOF intArray                   ; EAX = 64


16, 间接寻址

处理数组唯一可行的方法是用寄存器作为指针并操作寄存器的值,这称为间接寻址

var1 BYTE 10H

mov esi,OFFSET var1
mov al, [esi]                     ;AL = 10h

inc [esi]   ; 错误 编译器不知道ESI是指向一个字节,一个字

inc BYTE PTR [esi]



17,


arrayW WORD 1000H,2000H,3000H

mov esi, OFFSET arrayW

mov ax, [esi]                             ;AX = 1000h
 
add esi,2                                 ; 因为是WORD类型,所以要加2 才能指向下一个元素

mov ax,[esi]                              ;AX = 2000h

add esi,2

mov ax, [esi]                             ;AX = 3000h



18 变址操作数

把常量和寄存器相加得到一个有效地址

arrayB BYTE 10h,20h,30h

mov esi, 0
mov al, [arrayB + esi]               ; AL = 10h

arrayB WORD 1000h,2000h,3000h

mov esi, OFFSET arrayW
mov ax,[esi]                          ;AX = 1000h
mov ax,[esi+2]                        ;AX = 200H             



19. TYPEDEF

创建了一种新的数据类型--指向字节的指针PBYTE

PBYTE TYPEDEF PRT BYTE

20 jmp

21 LOOP


mov ax,0
mov ecx,5

L1:

inc ax
loop L1



循环结束时 AX =5, ECX = 0;

22 数组求和

intarry WORD 100H,200H,300H,400H

mov edi,OFFSET intarry                  ; 首地址
mov ecx,LENGTHOF intarray               ; 循环计数器 设置 循环次数
mov ax,0                                ; 累加器清零

L1:

add ax,[edi]                             ;取一个数组值,加上
add edi, TYPE intarray                   ;指向下一个整数
loop L1



23 在JAVA中,如果向ArrayList添加元素时超过了容量,运行系统会重新分配一块新的内存,并把原来的数据复制到新地址,同事删除原来的数据
分享到:
评论

相关推荐

    TMS320C54x的数据寻址方式

    TMS320C54x的数据寻址方式 TMS320C54x DSP 提供了 7 种基本数据寻址方式,分别是立即寻址、绝对寻址、累加器寻址、直接寻址、间接寻址、存储器映象寄存器寻址和堆栈寻址。每种寻址方式都有其特点和应用场景。 3.1 ...

    微机原理数据寻址方式

    微机原理数据寻址方式 微机原理中,数据寻址方式是指指令中寻找操作数的方法。操作数可以是立即数、寄存器操作数或存储器操作数。寻址方式决定了操作数的地址信息,从而影响了指令的执行速度和效率。下面是七种常见...

    汇编语言数据寻址方式

    在汇编语言中,数据的存取和指令的执行都涉及到数据的寻址方式。寻址方式是确定操作数或指令在内存中位置的方法,这对理解和优化程序执行效率至关重要。 4.3.1 指令的寻址方式: 1. **顺序寻址方式**:这是最基本的...

    西门子S7-200寻址

    对于S7-200而言,了解其存储器的管理方式和数据寻址机制至关重要,这不仅关乎编程效率,还直接影响控制系统的响应速度和数据处理能力。 #### 直接寻址与间接寻址 **直接寻址**是S7-200中最基本也是最直观的寻址...

    第2章_数据表示和寻址习题答案.pdf

    - 数据寻址方式:查找操作数的过程称为数据寻址,因为它涉及到通过存储器地址或 I/O 地址来获取数据。 3. 数值表达式和常量: - 汇编语言中,数值表达式如"(34+67H)*3"在汇编时会被计算,生成一个确定的数值,...

    微机原理-汇编语言不同寻址方式运用-实验报告.pdf

    数据寻址方式涉及获取操作数的方式,而转移寻址方式则涉及到程序跳转的目标地址。具体而言,数据寻址方式又可分为以下几种: 1. 立即寻址方式:指令中的操作数直接给出,例如MOV AX, 5这样的指令,操作数5直接嵌入...

    西门子间接寻址

    然而,间接寻址也要求编程人员对PLC存储结构和数据寻址机制有深入的理解,以避免指针错误和逻辑错误。 总而言之,西门子间接寻址是PLC编程中的一项高级技术,它通过指针变量来动态访问和操作存储地址。熟悉这一技术...

    微机原理第3章寻址方式与指令系统.pdf

    - 数据寻址方式包括直接寻址、间接寻址、寄存器寻址、相对寻址等,它们决定了数据如何被加载到处理器中进行处理。 在这个章节中,读者会了解到指令系统和寻址方式对于微机运行的重要性,它们是程序设计和计算机硬件...

    基于三菱PLC间接寻址的循环结构与排序算法实现.pdf

    间接寻址是PLC编程中一种灵活的数据寻址方式,它通过使用变址寄存器和一个基准地址来动态指定数据存储的位置。变址寄存器的内容可以改变,因此可以访问一系列连续的数据元素,而无需单独指定每个元素的地址。间接...

    X寻址方式和指令系统PPT课件.pptx

    在80X86体系结构中,数据寻址方式主要分为三种:立即寻址、寄存器寻址和存储器寻址。 立即寻址是指操作数直接包含在指令中,常用于初始化或赋值操作。例如,`MOV EAX, 80000000H`将立即数80000000H加载到EAX寄存器...

    与数据有关的寻址方式

    ### 与数据有关的寻址方式 #### 一、立即寻址方式 立即寻址方式是一种最简单且直观的寻址方式,在这种寻址模式下,操作数直接包含在指令中,作为指令的一部分出现。例如: - `MOVAL,5` - `MOVAX,3064H` - `MOVAL,...

    王爽《汇编语言》第二版习题答案

    (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位。 (2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。 (3)1KB的存储器可以存储 8192(2^13) 个bit, 1024个Byte。 (4)1GB是 ...

    实验三:寻址方式在结构化数据访问中的应用1

    1. **寻址方式**:8086CPU 提供了多种寻址方式,这些方式是计算机能够有效访问内存中数据的基础。包括: - **直接寻址**:直接给出内存单元的偏移地址。 - **寄存器间接寻址**:通过寄存器来间接访问内存地址。 -...

    微机原理第3章寻址方式与指令系统.ppt

    数据寻址又细分为立即数寻址、寄存器寻址和存储器寻址。立即数寻址是将操作数直接包含在指令中,这种方式快速但不适用于所有的指令类型,如单操作数指令。寄存器寻址则利用CPU内部的寄存器来存放数据,效率较高。...

    寻址方式与指令系统PPT学习教案.pptx

    寻址分为数据寻址和程序地址寻址两种类型。以数据传送指令MOV为例,它的格式为`MOV 目的操作数, 源操作数`,用于将源操作数的内容传送到目的操作数。 1. **立即寻址方式**:操作数直接写在指令中,称为立即数,例如...

    第4章 8086寻址方式与指令系统.ppt

    8086 微处理器有七种基本的数据寻址方式:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址。 8086 寻址方式 立即寻址 在立即寻址方式中,操作数直接出现在指令...

    物理寻址和虚拟寻址的区别

    物理寻址是指程序直接使用物理内存地址来访问数据。这种寻址方式的特点是内存地址直接对应到实际物理内存单元,没有中间转换环节。在物理寻址模式下,CPU访问内存时发出的就是实际的物理地址,处理器直接根据该地址...

    TMS320C54x DSP CPU与外设(三)

    ### TMS320C54x DSP CPU与外设(三)—— 数据寻址详解 #### 一、概述 本篇文章将深入探讨TMS320C54x数字信号处理器(DSP)中的数据寻址机制,特别是针对绝对地址寻址、直接寻址和间接寻址这三种重要的寻址方式。 #...

    微机原理与接口技术:第4章 8086寻址方式与指令系统.ppt

    8086支持七种基本的数据寻址方式: 1. **立即寻址**:操作数直接在指令中给出,例如`MOV AX, 2010H`。立即数只能作为源操作数,不能作为目标,且需与目标操作数长度匹配。它可以是十六进制(如2010H)、八进制(如...

    寻址方式在结构化数据访问中的应用

    在计算机科学领域,寻址方式是访问存储器中数据的关键技术,它决定了处理器如何找到内存中的数据或指令。本主题将深入探讨寻址方式在结构化数据访问中的应用,以及其在汇编语言编程中的重要性。《汇编语言第2高清版...

Global site tag (gtag.js) - Google Analytics