汇编实现多个数字的输入与输出

时间:2025-04-26 08:26:15
DATAS SEGMENT
    ;此处输入数据段代码
    NUM dw 10 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 cl,10
    mov bx,0
    mov si,0
    
L1: mov bx,0
	call input
    mov NUM[si],bx
    add si,2
    cmp si,20
    jb L1
    mov si,0
    
L2: mov ax,NUM[si]
    call output
    mov dl,','
    mov ah,2
    int 21h
    add si,2
    cmp si,20
    jb L2
    
    
    MOV AH,4CH
    INT 21H
    
input proc;输入函数
L0: mov ah,1
    int 21h
    cmp al,'0'
    jb over
    cmp al,'9'
    ja over
    sub al,48
    mov dl,al;暂存输入的数
    mov ax,bx;将bx存到ax中,做乘法
    mul cl
    mov dh,0
    add ax,dx;将dl里的数加到ax中
    mov bx,ax
    jmp L0
over:
ret
input endp

output proc;输出函数
    mov bl,0
    mov ax,NUM[si]
L3: div cl
    push ax;入栈
    add bl,1;计数器加一
    mov ah,0
    cmp ax,0;当被除数为0时结束循环
    jne L3
L4: pop dx;出栈
    sub bl,1;计数器减一
    mov dl,dh
    add dl,48
    mov ah,2
    int 21h
    cmp bl,0;当计数器清零时结束循环
    jne L4
ret
output endp 
    CODES ENDS
END START