x86访问数组元素(访问数据表)

本文详细解析了x86汇编语言中for循环的实现方式及数组元素的访问方法,展示了如何通过寄存器操作来完成循环计数与数组元素的读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. x86 对数组元素的访问。
2. for 循环的实现。
; ---------------------------------------------------------------------------
9:        int i;
10:       for(i=0; i< 5; i++)
00401268   mov         dword ptr [ebp-4],0
0040126F   jmp         main+2Ah (0040127a)
00401271   mov         eax,dword ptr [ebp-4]
00401274   add         eax,1
00401277   mov         dword ptr [ebp-4],eax
0040127A   cmp         dword ptr [ebp-4],5
0040127E   jge         main+4Ah (0040129a)
11:       {
12:           printf("data is %d/n",array[i]);
00401280   mov         ecx,dword ptr [ebp-4]
00401283   mov         edx,dword ptr [ecx*4+442DC0h]    // 取到全局数组array中的元素
0040128A   push        edx
0040128B   push        offset string "data is %d/n" (0043e024)
00401290   call        printf (004086e0)
00401295   add         esp,8
13:       }
00401298   jmp         main+21h (00401271)
14:
15:       system("pause");
。。。。。。
.data:00442DC0 array           dd 1                    ; DATA XREF: main+33r
.data:00442DC4                 dd 2
.data:00442DC8                 dd 3
.data:00442DCC                 dd 4
.data:00442DD0                 dd 5

; ---------------------------------------------------------------------------
1. 对数组元素的访问采用了与地址跳转表一样的指令。基地址+偏移量。(偏移量是寄存器变量)
   但是数组元素的访问用mov 指令。
   00401283   mov         edx,dword ptr [ecx*4+442DC0h]
2. for 循环先做判断,可以一次都不进入循环体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值