【问题标题】:Passing values from one array to another in assembler在汇编程序中将值从一个数组传递到另一个数组
【发布时间】:2013-11-13 23:01:31
【问题描述】:

我用两个这样的 C char 数组输入汇编函数:

EncryptAsm(arr1,arr2)

两者都是char*类型,一个包含文本,第二个充满'#'符号,它的作用类似于二维数组,两者的长度相同。

我正在尝试将一些值从第一个数组传递到 asm 过程中的第二个数组:

mov ecx,row ;calculating index of arr2   index=[row*inputLength+column]
imul ecx,ebx
add ecx,column

mov eax,1 ;calculating index of arr1
imul eax,iterator

mov esi,arr1[eax]
mov edi,arr2[ecx]

movsb

当两个数组的索引都等于 0(eaxecx 为 0)时,一切都很好,但如果它更大,它就不起作用并引发错误(例如,eax==1)。

在 asm 代码中,数组的类型为:

arr1:ptr byte, arr2:ptr byte

我做错了什么?

【问题讨论】:

    标签: c assembly x86


    【解决方案1】:

    你能检查一下 movsb 的组装指南吗?如果是普通的英特尔 movsb, 它应该像这样编码:

    CLD
    MOV ECX ,100
    LEA ESI,FIRST
    LEA EDI,SECOND
    REP MOVSB
    

    另外,还有一些事情需要检查:

    1,SI/DI的段,如果写权限和段长度是对的

    2、REP MOVSB期间的中断保护

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-23
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多