汇编语言中的一些问题
2021/9/11 12:34:46
本文主要是介绍汇编语言中的一些问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
总结一下关于汇编的一些问题:
首先,汇编的最终目标是转换为机器码,所以其实所有操作都是对逻辑内存的操作。
1.寄存器寻址和间接寻址:
设寄存器rax,rdx。rdx中储存的地址为0x11,rax中储存的地址为0xaa,0xaa中储存的值为0xbb
%rax //代表寄存器寻址,即返回寄存器rax的地址 (寄存器中的值) (Adress) //()代表取Adress地址中值的引用,Adress为寄存器时代表间接寻址,Adress为操作数组合时代表变址寻址 (%rax) //代表间接寻址,即返回存储在寄存器rax中的地址的值的引用(寄存器中值所代表的地址的值 ) movb %rdx,%rax //将寄存器rdx中的值复制到寄存器rax中,rax中值为0x11,地址0xaa中的值为0xbb movb %rdx,(%rax) // //将寄存器rdx中的值,转移到寄存器rax中值所对应的地址,rax中储存值为0xaa,0xaa中储存值为0x11
2.leaq指令
leaq指令是加载有效地址load effective address的缩写,q代表四字8个字节。是一个二元操作符,指令的作用类似于C++中的取地址&。
leaq S,D //相当于取S的地址加载到D,相当于C++中的取地址&,D=&S //如果寄存器rax中存储的是地址,即相当于存储器是个指针,则下面两个指令等效 movq %rax,%rbx; //将rax中的值赋值给rbx leaq (%rax),%rbx; //将rax中地址所对应值的地址赋值给rbx
这篇关于汇编语言中的一些问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器