ASM帮助-不匹配块设置

时间:2019-04-26 22:31:05

标签: visual-studio assembly masm

编写一个程序,该程序使用ArraySum Sub过程计算给定数组中的值之和。 数组DWORD 8,3,12,9,9,2,20,15,6,5 -将该子例程命名为ArraySumProc。 -将上面定义的数组和数组大小传递给子例程ArraySum。 -要访问呼叫者框架中的值,请使用EBP(请记住EBP是在被呼叫者一方创建的)。 -需要将计算出的总和结果分配给调用方的val1存储变量。 -计算出的表达式结果需要从主子例程显示在控制台屏幕上。 -使用适当的寄存器和循环指令。 -使用调试器运行程序以验证答案。 ▪使用单步执行而不是单步执行来在调试过程中跟踪堆栈,ESP,EBP,EIP。 ▪要访问堆栈存储器,请从寄存器窗口复制ESP的值,然后将其粘贴到存储器窗口的搜索文本框中。

我已经输入了数据和代码部分,但是不知何故出现了错误。有人知道为什么吗?

.386
.model flat, stdcall
.stack 4096
ExitProcess PROTO, dwExitCode: DWORD

.data
    array DWORD 8, 3, 12, 9, 2, 20, 15, 6, 5
    theSum DWORD?

.code
    mov esi,OFFSET array
    mov ecx,LENGTHOF array
    call ArraySum
    mov theSum,eax
INVOKE ExitProcess,0
main ENDP

ArraySum PROC
    push esi
    push ecx
    mov eax,0
L1: add eax,[esi]
    add esi,TYPE DWORD
    loop L1
    pop ecx
    pop esi
    ret
ArraySum ENDP
END main

错误: 1> AddTwo.asm(9):错误A2008:语法错误:theSum 1> AddTwo.asm(17):致命错误A1010:不匹配的块嵌套:主要

0 个答案:

没有答案