我正在尝试查找此数组的 AVG:1742,1065,-67,-2988,-796,-1000,31,-67,-100,1180 我相信我将数字从 POS 更改为 NEG 的方法是磨损。我的编需要计算上面的数组,然后打印 massege,如果 AVG 是 NEG 或 POS,它总是打印 AVG 是 POS,即使它不是。到目前为止,这是我的代码:
; lab56.asm ; .模型小 .STACK 100h 。数据 AVG_NEG DB '平均值为负值',13,10,'$' AVG_POS DB 'THE AVG IS POS',13,10,'$' INDEX DB '大于平均值的数字在索引中:',13,10,'$' RES 数据库 '','$' ARR DW 1742,1065,-67,-2988,-796,-1000,31,-67,-100,1180 十 DW 10 平均深度 0 模板数据库'','$' ;程序从这里开始: 。代码 移动 AX,@DATA ; DS 只能通过寄存器写入 MOV DS,AX ; 设置 DS 指向数据段 LEA SI, ARR ; ; 总结 MOV CX,10 ;10 个变量在数组中 和: MOV AX,[SI] CMP AX,0 JG Pos_label 异或 AX,0000000000000000b 添加 AX,0000000000000001b 位置标签: 添加平均,AX ADD SI,2 ;移动到下一个数字 循环总和 ; 除以 10 得到 AVG 顺时针; AX -> DX:AX IDIV 十 MOV AVG,AX ; 打印 ; 检查是 NEG 还是 POS CMP 平均,0 JG Avg_label MOV 啊,9;设置 int 21h 的打印选项 MOV DX,OFFSET AVG_NEG ; 将 DS:DX 设置为指向 AVG_NEG INT 21 小时 JMP 继续 平均标签: MOV 啊,9;设置 int 21h 的打印选项 MOV DX,OFFSET AVG_POS ; 将 DS:DX 设置为指向 AVG_POS INT 21 小时 继续: ; ;程序结束在这里: MOV AH,4Ch ; 为 int 21h 设置终止选项 INT 21 小时;返回 DOS(终止程序) 结尾