80x86汇编语言--计算 S = 1 + 2*3 + 3*4 + 4*5 + …… + N*(N + 1)


;汇编语言编程

;计算 S = 1 + 2*3 + 3*4 + 4*5 +...+ N*(N + 1)

;N由用户输入,将结果在屏幕显示


;题目链接:http://zhidao.baidu.com/question/553029754823605812.html


;---------------------------

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

;---------------------------


本程序所求和的最大值,定为 65535,超过此数值,程序就会显示 OVER !



程序执行时,人机交互界面如下:


C:\MASM>ww

Please  input  n : 3

SUM = 19

Press any key to continue ...


C:\MASM>ww

Please  input  n : 7

SUM = 167

Press any key to continue ...


C:\MASM>ww

Please  input  n : 20

SUM = 3079

Press any key to continue ...


C:\MASM>

Please  input  n : 50

SUM = 44199

Press any key to continue ...


C:\MASM> ww

Please  input  n : 51

SUM = 46851

Press any key to continue ...


C:\MASM>ww

Please  input  n : 100

OVER !

Press any key to continue ...


C:\MASM>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值