与数据相关的运算符和伪指令

offset

  • 数据标号的偏移量,按字节计算,表示数据标号到数据段开始的距离
.data
bVal byte ?
wVal word ?
dVal dword ?
dVal2 dword ?.code
mov esi, offset bVal ; esi = 00404000h
mov esi, offset wVal ; esi = 00404001h
mov esi, offset dVal ; esi = 00404003h
mov esi, offset dVal2 ; esi = 00404007h.data
myArray word 1, 2, 3, 4, 5
.code
mov esi, offset myArray + 4.data
bigArray dword 500 dup(?)
pArray dword bigArray
.code
mov esi, pArray

align

  • 将一个变量对齐到字节边界、字边界、双字边界或段落边界
  • align bound[1, 2, 4, 8, 16]
  • 1:下一个变量对齐于1字节边界(默认);2:下一个变量对齐于偶数地址;4:下一个变量地址为4的倍数;…
bVal byte ? ; 00404000h
Align 2
wVal word ? ; 00404002h
bVal2 byte ? ; 00404004h
align 4
dVal dword ? ; 00404008h
dVal2 dword ? ; 004000ch

ptr

  • 重写一个已经被声明过的操作数的大小类型
.data
myDouble dword 12345678h
.code
mov ax, word ptr myDouble ; ax = 5678h
mov ax, word ptr [myDouble + 2] ; ax = 1234h
mov al, byte prt myDouble ; al = 78h
; 将较小的值送入较大的目的操作数
.data
wordList word 5678h, 1234h
.code
mov eax, dword ptr wordList ; eax = 12345678h

type

变量单个元素的大小,按字节计算

.data
var1 byte ? ; type var1: 1
var2 word ? ; type var2: 2
var3 dword ? ; type var3: 4
var4 qword ? ; type var4: 8

lengthof

  • 计算数组中元素的个数,元素是由数组标号同一行出现的数值定义的
.data
byte1 byte 10, 20, 30 ; lengthof byte1: 3
array1 word 30 dup(?), 0, 0 ; lengthof array1: 30 + 2
array2 word 5 dup(3 dup(?)) ; lengthof array2: 5 * 3
array3 dword 1, 2, 3, 4 ; lengthof array3: 4
digitStr byte "12345678", 0 ;lengthof digitStr: 9
;;;
myArray byte 10, 20, 30, 40, 50byte 60, 70, 80, 90, 100 ; lengthof myArray: 5myArray byte 10, 20, 30, 40, 50,byte 60, 70, 80, 90, 100 ; lengthof myArray: 10

sizeof:lengthof与type的乘积

.data
intArray word 32 dup(0)
.code
mov eax, sizeof intArray ; eax = 64

label

  • 插入一个标号,并定义它的大小属性,但不为其分配存储空间
.data
val16 label word
val32 dword 12345678h
.code
mov ax, val16 ; ax = 5678h
mov ax, [val16 + 2] ; ax = 1234h
; val16与val32共享一个内存位置.data
LongValue lable dword
val1 word 5678h
val2 word 1234h
.code
mov eax, LongValue ; eax = 12345678h

间接寻址

间接操作数

.data
byteVal byte 10h
.code
mov esi, offset byteVal
mov al, [esi] ; al = 10h
; mov [esi], bl
;; ptr 与间接操作数一起使用
; inc [esi] ; 操作数必须有大小
inc byte ptr [esi]

数组

.data
arrayB byte 10h, 20h, 30h
.code
mov esi, offset arrayB
mov al, [esi] ; al = 10h
inc esi
mov al, [esi] ; al = 20h
inc esi
mov al, [esi] ; al = 30h.data
arrayW word 1000h, 2000h, 3000h
.code
mov esi, offset arrayW
mov ax, [esi] ; ax = 1000h
add esi, 2
mov ax, [esi] ; ax = 2000h
add esi, 2
mov ax, [esi] ; ax = 3000h.data
arrayD dword 10000h, 20000h, 30000h
.code
mov esi, offset arrayW
mov ax, [esi] ; ax = 10000h
add esi, 4
mov ax, [esi] ; ax = 20000h
add esi, 4
mov ax, [esi] ; ax = 30000h

变址操作数

constant[reg]

[constant + reg]

.data
arrayB byte 10h, 20h, 30h
.code
mov esi, 0
mov al, arrayB[esi] ; al = 10h; 增加位移量
.data
arrayW word 1000h, 2000h, 3000h
.code
mov esi, offset arrayW
mov ax, [esi] ; ax = 1000h
mov ax, [esi + 2] ; ax = 2000h
mov ax, [esi + 4] ; ax = 3000h;;; 使用16位寄存器:si, di, bx, bp
mov al, arrayB[si]
mov ax, arrayW[di]
mov eax, arrayD[bx]
; 避免使用bp,除了寻址堆栈数据; 变址操作数中的比例因子
.data
arrayD dword 100h, 200h, 300h, 400h
.code
mov esi, 3 * type arrayD ; arrayD[3]的偏移量
mov eax, arrayD[esi] ; eax = 400h
; mov esi, 3
; mov eax, arrayD[esi * 4]
; mov esi, 3
; mov eax, arrayD[esi * type arrayD]

指针

.data
arrayB byte 10h, 20h, 30h, 40h
arrayW word 1000h, 2000h, 30000h
; ptrB dword arrayB
; ptrW dword arrayW
ptrB dword offset arrayB
ptrW dword offset arrayW
  • 使用typedef 运算符

    • 创建用户定义类型,包含了变量时内置类型的所有状态
    pbyte typedef ptr byte.data
    arrayB byte 10h, 20h, 30h, 40h
    ptr1 pbyte ? ; 未初始化
    ptr2 pbyte arrayB ; 指向一个数组
    

jmp, loop

  • 无条件转移
  • 条件转移

jmp destination

top:

jmp: top

loop destination

  • 循环目标与当前地址在-128到127字节之间
  • 实地址模式中,cx是loop使用的计数器,loopd使用ecx, loopw使用cx
mov ax, 0
mov ecx, 5
L1:inc axloop L1; 循环中修改ecx
.data
count dword ?
.code
mov ecx, 100
top: mov count, ecxmov ecx, 20mov ecx, countloop top; 循环嵌套
.data
count dword ?
.code
mov ecx, 100
L1: mov count, ecxmov ecx, 20
L2:loop L2mov ecx, countloop L1

与数据相关的运算符和伪指令 offset align ptr type lengthof sizeof label 间接寻址 间接操作数 数组 变址操作数 指针 jmp, loop相关推荐

  1. 数据库学习day_02:表格相关sql语句 / 表格数据相关sql语句 / sql中的数据类型 / 导入外部sql文件 / 去重.是否为null.and与or.in.[x,y]

    1.表相关的SQL语句 操作表相关的SQL 必须先使用某个数据库 create database mydb1; show create database mydb1; use mydb1; 如果默认不 ...

  2. Pacbio 数据相关的几个重要概念

    Pacbio 数据相关的几个重要概念 pacbio 基本概念 Polymerase Read, Subreads,Circular Consensus Sequence 的概念和相互关系 Pacbio ...

  3. python学习-知识点回顾(Python3的安装,编译器、一些关键知识点、数据类型、数据类型转换、运算符优先级)

    文章目录 说明 python特点 Python3下载 PyCharm 标识符 python保留字 行与缩进 基本数据类型 Python数据类型转换 Python运算符优先级 说明 首先说明:本篇博文知 ...

  4. 自己动手写CPU(2)流水线数据相关问题

    自己动手写CPU(2)流水线数据相关问题 问题定义 流水线中经常有一些被称为"相关"的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行,这些"相关" ...

  5. Tensor数据相关的运算、函数讲解及与numpy区别

    Tensor tensorflow 中使用它来表示数据.可以看做多维数组或者list. 标量是张量,向量是张量,矩阵是张量,矩阵的矩阵是张量. 常用几种定义方法 1. variable变量,一般是可以 ...

  6. 大数据相关从业_如何在组织中以数据从业者的身份闪耀

    大数据相关从业 Build bridges, keep the maths under your hat and focus on serving. 架起桥梁,将数学放在脑海中,并专注于服务. 通过协 ...

  7. 分享几个大数据相关岗位的职责和面试问题

    现在大数据行业如此火爆,国家和企业都需要发展大数据技术,但是人才高度稀缺,企业用人难! 而大学生们有出现这样的问题:就业难.有的岗位可能面临着几百个人竞争的情况,今天小编带大家来看看大数据相关岗位的职 ...

  8. 数据相关,资源相关,控制相关的解决方法

    解决结构相关问题: 解决方法:1.后续指令停顿2.指令存储器和数据存储器分开,多部件3.指令预存技术(适用于访存周期短的情况) 解决数据相关问题: 解决方法:旁路技术 解决控制相关问题: 解决方法:分 ...

  9. 大数据人工智能物联网论文_物联网学报“大数据”相关论文汇总

    戳上面的蓝字关注我们哦! <物联网学报>"大数据"相关论文汇总  (点击题目即可跳转至指定论文) [1]龚淑蕾, 李堃, 童恩, 等. 基于蜂窝工业物联网的智能工厂解决 ...

最新文章

  1. 记一次vue2路由参数传递this指针问题
  2. UnicodeEncodeError: 'ascii' codec can't encode character
  3. Qt多线程学习:创建多线程
  4. 2016年5月份学习总结,读书《你的孤独,虽败犹荣》
  5. 数据可视化组队学习:《Task05 - 样式色彩秀芳华》笔记
  6. php7连接mongodb,批量添加数据
  7. java文件输入与输出_java文件输入和输出
  8. php:global变量解析 / function 的作用域
  9. 怎样合理设置直通车宝贝的价格?
  10. linux驱动编写(字符设备编写框架)
  11. UGUI 在面板经常使用的表格布局制作
  12. 利用Python进行游戏脚本编程,不愧是最强的脚本语言
  13. Eplan 3D安装板布局步骤(快速上手)
  14. git did not exit cleanly
  15. 用matlab2018解方程,【2018年整理】MATLAB解方程的三个实例
  16. 什么是 返点、分销、直销、代理、代销
  17. linux下TSL如何升级,glibc升级
  18. html+javascript登录注册界面源码
  19. S1M-Q 贴片整流二极管参数:1A、1000V、SMA
  20. html垂直居中走马灯,史上最全解析:4种方法制作-PPT跑马灯/走马灯图片轮播动画...

热门文章

  1. 分享产品发布的10条经验
  2. Server-Side UI Automation Provider - WinForm Sample
  3. (转)致李开复博士的一封信
  4. 前端 css+js实现返回顶部功能
  5. struts.xml 文件添加DTD文件
  6. hdu 3117 Fibonacci Numbers
  7. BZOJ 3685: 普通van Emde Boas树( 线段树 )
  8. Mysql数据库“Communications link failure due to underlying exception”问题
  9. 会话、进程组与僵死进程
  10. GARFIELD@05-04-2005