当前位置:文档之家› 汇编语言求和。1+2+3+++n=sum

汇编语言求和。1+2+3+++n=sum

DATA SEGMENT
SBOUTPUT DB 'INPUT MAX NUM!', 0DH, 0AH, '$'
SBNEXT_LINE DB 0DH, 0AH, '$'
SBRESULT DB 'RESULT', 0DH, 0AH, '$'

MAX DW 0
NUM DW 0

INDEX DW 10
B_INDEX DB 10
DATA ENDS

STACK SEGMENT
DB 100 DUP (0)
STACK ENDS

CODE SEGMENT
ASSUME CS : CODE, DS : DATA, SS : STACK
START:
MOV AX, DATA
MOV DS, AX

H:
MOV MAX, 0
MOV NUM, 0

LEA DX, SBOUTPUT
MOV AH, 9
INT 21H

MOV AH, 1
INT 21H
SUB AL, 30H
XOR AH, AH
MOV MAX, AX
INPUT:
MOV AH, 1
INT 21H
CMP AL, 0DH
JE NEXT
SUB AL, 30H

XOR AH, AH
PUSH AX

MOV AX, MAX
IMUL B_INDEX;
MOV MAX, AX
POP AX
ADD MAX, AX
JMP INPUT

NEXT:
LEA DX, SBNEXT_LINE
MOV AH, 9
INT 21H

MOV CX, MAX
XOR AX, AX
LOOP_ADD:
ADD AX, CX
LOOP LOOP_ADD

XOR DX, DX
LOOP_T:
DIV INDEX;商在AX,余数DX
;DH 是零
PUSH DX
INC NUM
XOR DX, DX

CMP AX, 1
JAE LOOP_T

LEA DX, SBRESULT
MOV AH, 9
INT 21H
MOV CX, NUM
LOOP_P:
POP DX
CALL PRINT_NUM
LOOP LOOP_P

LEA DX, SBNEXT_LINE
MOV AH, 9
INT 21H

JMP H

MOV AH, 4CH
INT 21H

;参数在DL中,并将其显示
PRINT_NUM PROC NEAR
PUSH AX
PUSH DX

ADD DL, 30H
MOV AH, 2
INT 21H

POP DX
POP AX
RET
PRINT_NUM ENDP

CODE ENDS
END START


相关主题
文本预览
相关文档 最新文档