`
隐形的翅膀
  • 浏览: 484756 次
  • 性别: 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的数据寻址方式 说明的比较详细,是我偶然得到的,和大家共享

    微机原理数据寻址方式

    这是我学习数据寻址的时候整理的7中寻址方式,希望对大家有帮助

    汇编语言数据寻址方式

    汇编语言中数据的寻址方式总结。某大学的教学用课件。

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

    学习汇编过程中写的一个程序,仅供参考 配套书:汇编语言第2高清版(完全版)--王爽 著

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

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

    Python算法-寻址算法

    写贪吃蛇AI时候用到的一些路径算法,含BFS,DFS及AStar算法,供大家学习参考。运行具体算法后按空格键开始

    与数据有关的寻址方式

    自己整理的有关汇编程序中与数据相关的寻址方式的资料

    计算机系统基础第二次作业(1).doc

    计算机系统基础第二次作业 3、对于以下AT&T格式汇编指令,根据操作数的长度确定对应指令助记符中的长度后缀, 并说明每个操作数的寻址方式。 (1)mov 8(%ebp, %ebx, 4), %ax (2)mov %al, 12(%ebp) (3)add ( , %...

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

    1. 掌握各种寻址方式的使用 2. 掌握汇编语言中复杂数据结构的定义和使用 3. 掌握正确分配与使用寄存器与存储单元 4. 掌握 div 指令的使用 5. 掌握

    汇编语言课程设计源代码

    该压缩包里有用汇编编写的学生成绩管理系统源代码和调试结果

    计算机系统基础寻址方式汇报PPT

    寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。PPT讲解常见的几种寻址方式,并将其类比生活实际场景方便理解

    关于VB中数据的存储格式和寻址方式.doc

    关于VB中数据的存储格式和寻址方式

    TMS320C54x DSP CPU与外设(三)

    主要讲解数据寻址中的绝对地址寻址、直接寻址和间接寻址等。

    ARM指令集 寻址

    ARM指令的寻址方式: 立即寻址、寄存器寻址、寄存器间接寻址、基址...跳转指令、数据处理指令、乘法指令与乘加指令、程序状态寄存器访问指令、加载/存储指令、批量数据加载/存储指令、数据交换指令、移位指令(操作)

    西门子间接寻址(高级编程用,直接操作DB块地址)

    西门子PLC的间接寻址。 用指针的方式进行寻址,大大简化了程序,尤其是对于大量数据进行操作的场合。

    可编程控制器的应用(ppt)

    主要内容包括三菱FX2N系列可编程控制器基本指令、步进指令、功能指令、特殊功能模块及通信,S7-200系列可编程控制器的数据寻址与基本指令、顺序控制指令、功能指令,以及可编程控制器系统设计。每章在开头有应掌握的...

    基于微程序控制器的简单计算机系统设计与实现.doc

    " "支持立即数寻址、直接寻址、隐含寻址、寄存器寻址等几种基本数据寻址方式和" "顺序寻址、跳跃寻址方式; " "支持10条以上的指令; " "能运行由自己设计的指令系统构成的一段程序,程序执行功能正确。 " "四、...

    直接寻址法

    直接寻址法是一种比较简单的寻址方法,对数据的键值直接映射进行寻址,删除,插入,查询操作都可以在O(1)的时间之内完成

    微机原理及应用

    3.2 数据寻址方式 3.3 指令格式及指令执行时间 3.4 8086/8088指令系统 思考题与习题 第4章 汇编语言程序设计 4.1 汇编语言语法 4.2 汇编语言程序实现 4.3 汇编语言程序设计方法及应用 4.4 汇编语言程序设计举例 ...

Global site tag (gtag.js) - Google Analytics