一、寄存器
32位CPU通用寄存器如下图所示:
因为教材依照的是32位CPU寄存器,而我安装的是64位寄存器,所以找了一下64位的寄存器的资料
PS:一般来说,Intel处理器字节存储顺序为小端法存储,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中
二、MOV指令
mov
指令在汇编中表示传送
movl
mov long ,传送字长 : 32位,把32位立即数放到寄存器
movw
mov word,传送字 :16位;,把 16 位立即数放到寄存器的底16位,高16位清0
movb
mov byte,传送字节 :8位,把8位立即数放到寄存器
三、汇编调试案例
案例文件:1005.s
.section .text
.global _start
_start:
nop
movl $4, %eax
movl $1, %ebx
movl $5, %ecx
movl $13, %edx
movl %eax,%ebx
movl $1, %eax
int $0x80
(1)查看文件内容
其中,cat -n表示查看文件内容,并在文件中显示行号。当然,换成vim也可以
(2)汇编、链接和执行
-g表示产生调试信息
更多as命令内容见【Linux】一步一步学Linux——as命令(260)_linux as汇编教程-CSDN博客
(3)反汇编
objdump -d表示反汇编应用程序
更多objdump命令内容见Linux objdump命令(反汇编、查看符号)_objdump查看符号表-CSDN博客
(4)gdb调试
gdb 1005 表示启动调试1005
b(break) 表示打断点
r(run) 表示运行
n(next) 表示执行下一行语句
i r 表示查看所有寄存器
i r $edx 表示查看edx寄存器的值