注意事项
主要注意求平均数的模块,在此模块中有几点要注意:
(1)初始化定义di=0,cx=1,dx=0
,三者分别存负数的个数,数的总数,及进位的累加
(2)在最后,因为利用idiv
指令要进行有符号扩展,因此要进行dx-di
,消除有符号数符号位对进位的影响,
(3)利用有符号除法idiv cx
,得到存在ax
中的商,将其移入ave
中。(idiv指令详解)
(4)注意对si
进行更新
代码
;一个有符号字数组以0为结束标志,
;编程求这个数组的最大值、 最小值、平均值
DATAS SEGMENT
;此处输入数据段代码
buf dw 100,-120,50,0
max dw 0
min dw 0
ave dw 0
buf1 db 'The maximum number is: ','$'
buf2 db 0ah,'The minimum number is: ','$'
buf3 db 0ah,'The average number is: ','$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
main proc far
MOV AX,DATAS
MOV DS