计算机系统-汇编基础
2022/2/28 1:23:44
本文主要是介绍计算机系统-汇编基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一.寄存器&数据传送mov指令
1.80386通用寄存器
16位:AX,BX,CX,DX;SI,DI;SP,BP;
8位:AH,AL;BH,BL;CH,CL;DH,DL
32位:EAX,EBX,ECX,EDX;ESI,EDI;ESP,EBP
段寄存器:DS,ES,SS等
2.AT&T汇编代码
格式:指令 源操作数,目的操作数 (源操作数与目的操作数顺序与intel相反)
movl $8,%eax
3.示例代码
.section .data .section.text .global _start _start: nop movl $4,%eax movl $1,%ebx movl $1,%eax movl $0,%ebx int $0x80
4.数据传输
mov自动识别;movl:32位;movw:16位;movb:8位
5.寻址方式
movl $1,%eax #立即数寻址
movl %ebx,%eax #寄存器寻址
movl 0x08048054,%eax #绝对寻址
movl (%ebx),%eax #间接寻址
movl 0x8(%ebx),%eax #基址偏移量寻址
movl (%eax,%ebx),%edx #变址寻址
movl 0x8(%eax,%ebx),%edx #变址基址寻址
movl (%eax,%ebx,0x2),%edx #比例变址寻址
movl 0x8(%eax,%ebx,0x2),%edx #比例变址基址寻址
6.含变量的数据传输
movl $value1,%eax #将value1的地址写入寄存器eax
lea value1,%edi
7.调试
x/4bt(4字节2进制),x/4bx(4字节16进制)查看内存内容,注意高低位,字节数
二.其他指令
1.栈操作指令
栈操作向低地址方向进行压栈操作
sp,esp寄存器存放栈顶地址
push/pop进行压栈出栈操作
2.跳转指令
eip寄存器存放下一指令地址
jmp 行数
jmp 0x(直接指定跳转地址)
jmp *%eax(跳转到寄存器中保存的地址)
条件跳转在eflags寄存器中:SF符号位,ZF零标志位,CF进位,OF溢出位
这篇关于计算机系统-汇编基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-20测试人员都是画画大神,让我看看谁还不会用代码图?
- 2024-05-20年薪百万的程序员都在用的摸鱼方式……
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了