
用汇编语言编写一完整程序!
编写一完整程序,在存储单元中,以BUFF为首地址存放了10个无符号数(范围为0~255),求10个数的平均并存入DAT单元中。各位大哥有人给出具体的答案不?...
编写一完整程序,在存储单元中,以BUFF为首地址存放了10个无符号数(范围为0~255),求10个数的平均并存入DAT单元中。
各位大哥 有人给出具体的答案不? 展开
各位大哥 有人给出具体的答案不? 展开
6个回答
展开全部
;江西理工大学
;今天下午刚好咱们上机课,做了这个题,给你完整答案如下:
DATAS SEGMENT
;此处输入数据段代码
BUFF DW 5,25,55,115,138,159,196,163,20,255
DAT DW 0
SHOW DB 4 DUP(0),'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV DX,0
MOV AX,0
MOV CX,10 ;循环次数设置
MOV SI,OFFSET BUFF
lop1: ;求和
ADD AX,[SI]
ADD SI,2 ;由于数据是DW的,所以地址每次加2
LOOP lop1
MOV CL,10
DIV CL ;求平均,AL存储了平均值,AH存储了余数
;MOV CL,1000
MOV AH,0 ;分解for显示,求余得到从个位到千位
DIV CL
MOV SHOW+3,AH;
ADD SHOW+3,48
;MOV CL,100
MOV AH,0
DIV CL
MOV SHOW+2,AH;
ADD SHOW+2,48
;MOV CL,10
MOV AH,0
DIV CL
MOV SHOW+1,AH;
ADD SHOW+1,48
MOV SHOW+0,AL;
ADD SHOW+0,48
MOV AH,09H ;显示输出
MOV DX,offset SHOW;
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
;今天下午刚好咱们上机课,做了这个题,给你完整答案如下:
DATAS SEGMENT
;此处输入数据段代码
BUFF DW 5,25,55,115,138,159,196,163,20,255
DAT DW 0
SHOW DB 4 DUP(0),'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV DX,0
MOV AX,0
MOV CX,10 ;循环次数设置
MOV SI,OFFSET BUFF
lop1: ;求和
ADD AX,[SI]
ADD SI,2 ;由于数据是DW的,所以地址每次加2
LOOP lop1
MOV CL,10
DIV CL ;求平均,AL存储了平均值,AH存储了余数
;MOV CL,1000
MOV AH,0 ;分解for显示,求余得到从个位到千位
DIV CL
MOV SHOW+3,AH;
ADD SHOW+3,48
;MOV CL,100
MOV AH,0
DIV CL
MOV SHOW+2,AH;
ADD SHOW+2,48
;MOV CL,10
MOV AH,0
DIV CL
MOV SHOW+1,AH;
ADD SHOW+1,48
MOV SHOW+0,AL;
ADD SHOW+0,48
MOV AH,09H ;显示输出
MOV DX,offset SHOW;
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
展开全部
简单呀,首地址为BUFF,那么可以这样编写哦:
MOV R0,#BUFF
MOV R1,#0AH //设置个数
CLR A
LOOP: ADD A,@R0
INC R0
DJNZ R1,LOOP //判断10个数加完了没有
MOV B,#0AH //设置除数
DIV AB //最后得到的结果商存于A中,有余数的话存于B中
MOV DAT,A //最后在把平均值存于DAT中
END //结尾要打end符合哦,不然会报错!
------more(单片机高手)
MOV R0,#BUFF
MOV R1,#0AH //设置个数
CLR A
LOOP: ADD A,@R0
INC R0
DJNZ R1,LOOP //判断10个数加完了没有
MOV B,#0AH //设置除数
DIV AB //最后得到的结果商存于A中,有余数的话存于B中
MOV DAT,A //最后在把平均值存于DAT中
END //结尾要打end符合哦,不然会报错!
------more(单片机高手)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先读首地址然后地址递增相加,最后除以总数就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mov si,offset BUFF
MOV DI,OFFSET DAT
mov cx,0ah
lop10:
add al,[si]
adc ah,0
inc si
loop lop10
MOV CX,0AH
DIV CL
MOV [DI],AL
MOV DI,OFFSET DAT
mov cx,0ah
lop10:
add al,[si]
adc ah,0
inc si
loop lop10
MOV CX,0AH
DIV CL
MOV [DI],AL
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询