当前位置: 代码迷 >> 汇编语言 >> 从内存储器读1byte的时候有些疑惑
  详细解决方案

从内存储器读1byte的时候有些疑惑

热度:8406   发布时间:2013-02-26 00:00:00.0
从内存读1byte的时候有些疑惑
本帖最后由 zcsor 于 2013-01-09 16:46:23 编辑
我有一个结构数组,里面保存了一些信息,其中就包括下一个数组元素的编号,而编号是只占了一字节。
也就是说我的结构看起来像这样(为了清晰一些就写了一个数组):
nextindex struct
    next byte[4] dup (?)
nextindex ends

其中next字段就是我要读的下一个结构的编号。所以资源里面看起来就像这样:
01 02 03 04  05 06 07 08 ……
  第  一  组 | 第  二  组

于是问题就出现了:mov esi,dword prt 恐怕不行,因为我是直接从结构里面取,不想用临时变量。
若lpstructarray:WORD为资源基地址,structindex:BYTE为当前要取得结构编号
若要eax保存要取的结构地址,代码应该是
mov ecx,0
mov cl,structindex
imul ecx,4
mov eax,lpstructarray
add eax,ecx
还是怎么写?速度越快越好!

就是说我不太清楚应该怎么读写一个字节或字这样的非四字节的并且紧密排列的数组,并使用直接使用其中的元素。还请指教一二啊!
?

------解决方案--------------------------------------------------------
movzx ecx,bytr ptr structindex
lea eax,[lpstructarray+ecx*4]

------解决方案--------------------------------------------------------
lpstructarray:WORD为资源基地址

mov eax,lpstructarray 

你先得确定这样能编译过去