📄 22.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 + -