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的数据寻址方式 说明的比较详细,是我偶然得到的,和大家共享
这是我学习数据寻址的时候整理的7中寻址方式,希望对大家有帮助
汇编语言中数据的寻址方式总结。某大学的教学用课件。
学习汇编过程中写的一个程序,仅供参考 配套书:汇编语言第2高清版(完全版)--王爽 著
(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位。 (2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。 (3)1KB的存储器可以存储 8192(2^13) 个bit, 1024个Byte。 (4)1GB是 ...
写贪吃蛇AI时候用到的一些路径算法,含BFS,DFS及AStar算法,供大家学习参考。运行具体算法后按空格键开始
自己整理的有关汇编程序中与数据相关的寻址方式的资料
计算机系统基础第二次作业 3、对于以下AT&T格式汇编指令,根据操作数的长度确定对应指令助记符中的长度后缀, 并说明每个操作数的寻址方式。 (1)mov 8(%ebp, %ebx, 4), %ax (2)mov %al, 12(%ebp) (3)add ( , %...
1. 掌握各种寻址方式的使用 2. 掌握汇编语言中复杂数据结构的定义和使用 3. 掌握正确分配与使用寄存器与存储单元 4. 掌握 div 指令的使用 5. 掌握
该压缩包里有用汇编编写的学生成绩管理系统源代码和调试结果
寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。PPT讲解常见的几种寻址方式,并将其类比生活实际场景方便理解
关于VB中数据的存储格式和寻址方式
主要讲解数据寻址中的绝对地址寻址、直接寻址和间接寻址等。
ARM指令的寻址方式: 立即寻址、寄存器寻址、寄存器间接寻址、基址...跳转指令、数据处理指令、乘法指令与乘加指令、程序状态寄存器访问指令、加载/存储指令、批量数据加载/存储指令、数据交换指令、移位指令(操作)
西门子PLC的间接寻址。 用指针的方式进行寻址,大大简化了程序,尤其是对于大量数据进行操作的场合。
主要内容包括三菱FX2N系列可编程控制器基本指令、步进指令、功能指令、特殊功能模块及通信,S7-200系列可编程控制器的数据寻址与基本指令、顺序控制指令、功能指令,以及可编程控制器系统设计。每章在开头有应掌握的...
" "支持立即数寻址、直接寻址、隐含寻址、寄存器寻址等几种基本数据寻址方式和" "顺序寻址、跳跃寻址方式; " "支持10条以上的指令; " "能运行由自己设计的指令系统构成的一段程序,程序执行功能正确。 " "四、...
直接寻址法是一种比较简单的寻址方法,对数据的键值直接映射进行寻址,删除,插入,查询操作都可以在O(1)的时间之内完成
3.2 数据寻址方式 3.3 指令格式及指令执行时间 3.4 8086/8088指令系统 思考题与习题 第4章 汇编语言程序设计 4.1 汇编语言语法 4.2 汇编语言程序实现 4.3 汇编语言程序设计方法及应用 4.4 汇编语言程序设计举例 ...