汇编中整数和字符串数组的差异b / w地址

时间:2015-12-16 05:24:19

标签: arrays assembly x86

我正在写一个子程序显示(Z,n,flag),其中Z是一个int / string数组,n是数组的长度,flag表示Z是否是字符串或整数数组的地址。

根据标志的值,子程序将Z显示为长度为n的字节数组,将每个字节显示为字符,或者将Z显示为整数数组。

这就是混乱的地方。我很难理解如何区分2地址。我觉得这是非常基本的东西,但我似乎无法弄明白。任何/所有的想法将不胜感激!

1 个答案:

答案 0 :(得分:1)

  

其中Z是一个int / string数组

如果 Z 是整数数组的地址,则地址指向包含这些整数的实际数值的dwords。

mov ebx, Z
mov eax, [ebx]    ;value of 1st integer
mov eax, [ebx+4]  ;value of 2nd integer

如果 Z 是字符串数组的地址,则地址指向每个指向内存中字符串的地址列表。

mov ebx, Z
mov esi, [ebx]    ;address of 1st string
mov al,  [esi]    ;1st character of 1st string
mov al,  [esi+1]  ;2nd character of 1st string
...
mov esi, [ebx+4]  ;address of 2nd string
mov al,  [esi]    ;1st character of 2nd string
mov al,  [esi+1]  ;2nd character of 2nd string
  

n是数组的长度

n 表示这些数组中有多少元素。在字符串数组的情况下,通过查找终止零来确定单个字符串的长度。