用自己的语言解释一段简单的汇编

.section .data

values:

   .int 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60

.section .text

.globl _start

_start:

   nop                        ##空格  ,固定格式 为了gdb调试        

   movl values, %eax          ## eax=values[0]=10

   movl $values, %edi         ## $values 内存地址存放到edi

   movl $100, 4(%edi)         ## 十进制立即数100到edi地址4字节之后

   movl $1, %edi              ## 十进制1到edi

   movl values(, %edi, 4), %ebx  ## 将values标签第2个的4字节到ebx

   movl $1, %eax                 ## 立即数1到eax

   int $0x80                     ##退出

 

 可以看出  本段程序最后的ebx值为100

 .int 32位     一个数据元素占 4个字节=内存一个单元

 分析:

movl values, %eax    标签values(也就是values数组中的值)到寄存器eax;

movl $values, %edi   标签values地址(数值10 的地址)到edi;也就是edi有了values数组中的地址

movl $100, 4(%edi)   edi寄存器地址后4个字节,也就是第二个元素15被100替代

movl $1, %edi        重新赋值edi=1累加器

movl values(, %edi, 4), %ebx   在标签values也就是values数组找到下标为1的4个字节的数值,实际就是100赋值到ebx

 

转载于:https://www.cnblogs.com/kool/p/6696131.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值