⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 22.asm

📁 汇编程序源码,实现了输入n个数的相加,并输出总和
💻 ASM
字号:
data segment
	ten	db	10
	N	dw	?
	buf 	dw	100 dup(?)
	sum	db	13,10,'The sum is:',?,?,13,10,'$'
	mess1	db	'please input a number(N):','$'
	mess2	db	13,10,'please input N numbers separated by space:',13,10,'$'
data ends
prognam segment
main proc far
	assume	cs:prognam,ds:data
start:
	push 	ds
	sub 	ax,	ax
	push	ax
	mov	ax,	data
	mov	ds,	ax

	lea	dx,	mess1
	mov	ah,	09
	int	21h
	call	input
	mov	N,	ax
	mov	cx,	N
	mov	si,	0
	lea	dx,	mess2
	mov	ah,	09
	int	21h
again:
	push	cx
	call	input
	mov	buf[si],	ax
	add	si,	2
	pop	cx
	loop	again

	sub	ax,	ax
	lea	di,	buf
	mov	cx,	N
next:
	add	ax,	[di]
	add	di,	2
	loop	next
;----------输出总和----------------------------
	mov	bl,	10d
	div	bl
	add	ax,	3030h
	mov	sum[13],al
	mov	sum[14],ah
	lea	dx,	sum
	mov	ah,	09
	int	21h	
	ret
main endp
;----------数据输入函数------------------------- 
input   proc   near       
  	mov   	ax,	0   
  	push   		ax   
again1:   
	mov   	ah,	01h                 ;键盘输入   
  	int   		21h   
  	cmp   	al,	30h                   ;当输入不是数字的时候(如空格),跳出,一个成绩输入完成,   
  	jl   	exit   
  	cmp  	al,	39h   
  	jg  	exit   
 	sub   	al,	30h                       ;将ASCII码值转化为数值   
  	mov   	bl,	al   
  	mov   	bh,	0   
  	pop   	ax      
  	imul   	ten                       ;将已有的数乘10,加上新输入的数   
  	add   	ax,	bx   
  	push   	ax   
  	jmp   	again1   
exit:   
 	pop   	ax   
    
  	ret       
input   endp  
;----------------------------------------------- 
prognam ends
end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -