如何解决Intel x86 Assembly,从内存中返回奇怪的值
我目前正在为学校做一个汇编作业,我需要声明一个 10 元素的数组,用从 1 到 10 的整数的连续平方初始化数组,然后计算这些值的平均值并将它们存储到一个变量。但是,当我从内存中检索第一个值以计算平均值而不是按预期返回 0001 时,它在 AX 寄存器中返回 0401,这比应有的值高得多。有人能够快速查看我的代码并指出我做错了什么吗?代码如下,谢谢:
.model small
.stack 32
.data
arr DW 10 DUP(0)
RES DW ?
.code
MAIN proc FAR
MOV AX,@data
MOV DS,AX
CALL INIT
CALL AVG
MOV RES,AX
MOV AX,4C00H
INT 21H
MAIN endp
INIT proc NEAR
MOV CX,10
LEA BX,arr
MOV SI,1
A: MOV AX,SI
MUL SI
MOV [BX],AX
INC SI
INC BX
LOOP A
RET
INIT endp
AVG proc NEAR
MOV CX,10
LEA BX,arr
MOV AX,0
MOV DX,10
B: ADD AX,[BX]
INC BX
LOOP B
DIV DX
RET
AVG endp
end MAIN
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。