- Assembly code
.386 .model flat,stdcall option casemap:noneinclude masm32.incincludelib masm32.libinclude kernel32.incincludelib kernel32.libinclude msvcrt.incincludelib msvcrt.lib.datadArray dword 12,23,34; 定义整形数组countArray=($-dArray)/4 ;结果为3szPrint byte'数组元素为:%d',0 .codemain proc ;打印数组 mov edi,offset dArray; 地址 mov ecx,countArray; 保存循环次数 L1: mov eax,[edi] invoke crt_printf, addr szPrint,eax; inc edi; 下一个元素 loop L1 invoke ExitProcess,0main endpend main
死循环,,,,,,,,
为什么是死循环
------解决方案--------------------------------------------------------
应该是 ctr_printf() 函数破坏了 ecx 的内容吧。edx/eax/ecx 在调用函数时,需要接着使用的话,都需要自己进行保护的。
------解决方案--------------------------------------------------------