微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Intel x86 Assembly,从内存中返回奇怪的值

如何解决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 举报,一经查实,本站将立刻删除。