汇编指令
时间:2020-03-24
本文章向大家介绍汇编指令,主要包括汇编指令使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
数据传送指令
数据交换指令
完成两个操作数间的数据交换,操作数可以是寄存器和存储单元,但是不能两个都是存储单元(与MOV指令一样,可以用寄存器作为中间媒介)。并且,段寄存器不能作为操作数。下面代码需注意VAR1的默认段是CS,而VAR1[BP]默认是SS段,如果这两个段偏移不同,则变量VAR1最终不能还原到0012H。
MOV BP,0000H; XCHG BX,[BP+SI]; XCHG BX,VAR1; //交换VAR1和BX的值 XCHG BX,VAR1[BP];//交换SS:BP+VAR1地址内容和BX的值 ret VAR1 DW 0012H;
地址传送指令
把源操作数的偏移地址传到目的操作数,相当于MOV OFFSET。对于[寄存器值]类似的形式,就是去括号的过程;对于变量,尤其注意传送的不是变量的值。
LEA BX, [BP];//把BP赋给BX LEA AX,VAR1;//把VAR1的偏移地址赋给AX MOV AX,OFFSET VAR1;
地址指针传送指令
该类指令获取双字的存储内容,将内容的高16位送入段寄存器,低16位送给目的寄存器。其中,LDS将高16位送入DS段寄存器,LES则送入ES段寄存器。源操作数为变量或者寄存器间接寻址方式(这里狭义地将出现方括号和寄存器的所有寻址方式统称为寄存器间接寻址)。
下例中首先将变量VAR1的低16位0012H送到BX,高16位0100H送到DS;之后用LES指令对AX赋值0012H,并且将ES改为了0100H;
LDS BX,VAR1; MOV [BX],0012H; MOV [BX+2],0100H; LES AX,[BX]; ret VAR1 DD 01000012H;
堆栈操作指令
堆栈是存储器的一部分,其地址由SS段和SP段管理。栈底地址较大,栈顶地址较小。初始化一个空堆栈后,SP指向栈底,当压入数据后,SP指向栈顶,堆栈结构如下图所示(栈底永远都是空的)。
PUSH操作时,先修正SP的值(减2),再将字型数据填入SP所指位置;POP操作相反,先将栈顶的字型数据送出,然后修正SP的值(加2)。下例三次压入后,SP值为00F9H,三次弹出以后,SP又回到00FFH。
MOV AX,0100H; MOV SS,AX; MOV SP,00FFH;//初始化堆栈 PUSH AX;//压入0100H PUSH 0202H;//压入0202H PUSH VAR1;//压入0303H POP BX;//弹出0303H POP BX;//弹出0202H POP BX;//弹出0101H ret VAR1 DW 0303H;
未完待续···
原文地址:https://www.cnblogs.com/kensporger/p/12509366.html
- 百度人脸识别API Java调用
- Java Socket Timeout总结
- 求一个数组中子数组的最大和算法(Java实现)
- JDBC批量提交SQL的几点问题解答
- 工具推荐: 汽车CAN总线分析框架CANToolz
- Windows下jps, jconsole无法查看本地java进程问题解决
- DateFormat 线程不安全
- zip文件操作导致JVM crash
- 如何搭建你自己的“深度学习”机器?
- MySQL INSERT INTO...ON DUPLICATE KEY UPDATE的使用
- 通过Java代码来模拟乘法器
- INET_ATON()函数在MySQL5.6版本和5.7版本的差异
- Linux主机之间ssh免密登录配置
- 远控木马Posion Ivy开始肆虐缅甸和其它亚洲国家
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法