;汇编语言编程
;计算 S=1+2*3+3*4+4*5+……+N*(N+1),N由用户输入,将结果在屏幕显示
;---------------------------
ASSUME CS:CC, DS:QW
;---------------------------
QW SEGMENT
M1 DB 13, 10, 'Please input n : $'
M2 DB 13, 10, 'SUM = $'
M3 DB 13, 10, 'OVER ! $'
M4 DB 13, 10, 'Press any key to continue ... $'
N DW ?
N2 DW 2
S DW 1
QW ENDS
;---------------------------
CC SEGMENT
START:
MOV AX, QW
MOV DS, AX
;
LEA DX, M1
MOV AH, 9
INT 21H
CALL INPUT
CMP CX, 1
JB EXIT
INC CX
MOV N, CX
L_ADD:
MOV AX, N2
CMP AX, N
JE DISP
INC N2
MUL N2
CMP DX, 0
JNZ YICHU
ADD S, AX
JC YICHU
JMP L_ADD
DISP:
LEA DX, M2
MOV AH, 9
INT 21H
MOV AX, S
CALL OUTPUT
JMP EXIT
YICHU:
LEA DX, M3
MOV AH, 9
INT 21H
EXIT:
LEA DX, M4
MOV AH, 9
INT 21H
MOV AH, 7
INT 21H
MOV AH, 4CH
INT 21H ;返回DOS
;---------------------------
INPUT:
MOV BL, 10
MOV CX, 0
IN_X:
MOV AH, 7
INT 21H
CMP AL, 13
JE IN_END
CMP AL, '0'
JB IN_X
CMP AL, '9'
JA IN_X
MOV DL, AL
MOV AH, 2
INT 21H
MOV AL, DL
SUB AL, 30H
MOV AH, 0
XCHG AX, CX
MUL BL
ADD CX, AX
CMP CH, 0
JNZ IN_END
JMP IN_X
IN_END:
RET
;---------------------------
OUTPUT:
MOV BX, 10
MOV CX, 0
OL1:MOV DX, 0
DIV BX
ADD DL, '0'
PUSH DX
INC CX
CMP AX, 0
JNZ OL1
MOV AH, 2
OL2:POP DX
INT 21H
LOOP OL2
RET
;---------------------------
CC ENDS
END START
;---------------------------
追问谢谢。那第二个怎么做、
追答我正在编写。
先采纳这个,另外的,再提问吧。