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

简介: .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

.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,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

 

目录
打赏
0
0
0
0
9
分享
相关文章
"解锁计算机语言的神秘面纱:一探究竟,汇编语言基础命令如何操纵硬件世界!
【8月更文挑战第21天】汇编语言是最贴近硬件的编程语言,对理解计算机系统至关重要。它允许直接控制硬件执行底层操作。本文概览了汇编语言,介绍其基础命令,包括数据传输(如`MOV`, `PUSH`, `POP`)、算术逻辑(如`ADD`, `SUB`, `AND`, `OR`, `XOR`)及程序控制指令(如`JMP`, `JE`, `JNE`, `LOOP`)。这些命令为深入硬件世界奠定基础,帮助优化程序性能并激发底层编程兴趣。
72 0
计算机语言分为三种:机器语言、汇编语言和高级语言
计算机语言分为三种:机器语言、汇编语言和高级语言
777 0
汇编语言----X86汇编指令
汇编语言----X86汇编指令
330 2
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
371 0
几组汇编指令的比较
几组汇编指令的比较
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等