用80x86汇编语言:键入十个数,算出正数之和,并统计负数的个数

要求:键盘输入十个数,算出正数之和,并统计负数的个数。

求完整程序。

输入一个位数就行,用 80x86 汇编语言编程解决。


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

---------------------------------

程序编好了,如下:

;================================

ASSUME   CS: C, DS: D

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

D  SEGMENT 

    MSG1  DB  10, 13, 'Please input a num: $'

    MSG2  DB  10, 13, 'Zheng  Sum = $'

    MSG3  DB  10, 13, ' FU    Num = $'

      FU  DB  0

      ZH  DB  0

D  ENDS

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

C  SEGMENT              ;代码段

START:

    MOV   AX, D

    MOV   DS, AX

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

    MOV   CX, 10

IN_X:

    LEA   DX, MSG1

    MOV   AH, 9         ;显示字符串

    INT   21H


    MOV   AH, 7         ;输入单个字符

    INT   21H


    CMP   AL, '-'

    JE    IN_F          ;负数

    CMP   AL, '0'

    JB    IN_X          ;小于'0',不是数字

    CMP   AL, '9'

    JA    IN_X


    MOV   DL, AL

    MOV   AH, 2         ;显示

    INT   21H

    MOV   AL, DL

   

    SUB   AL, '0'       ;还原为数字

    ADD   ZH, AL        ;求和

    JMP   IN_E

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

IN_F:

    MOV   DL, AL

    MOV   AH, 2         ;显示

    INT   21H

    MOV   AH, 7         ;输入单个字符.

    INT   21H

    CMP   AL, '0'

    JB    IN_X          ;小于'0',不是数字.

    CMP   AL, '9'

    JA    IN_X

    MOV   DL, AL

    MOV   AH, 2         ;显示

    INT   21H

    INC   BYTE PTR FU   ;个数加一

IN_E:

    LOOP  IN_X

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

    LEA   DX, MSG2

    MOV   AH, 9         ;显示字符串

    INT   21H

    MOV   AL, ZH

    MOV   AH, 0

    CALL  DISP


    LEA   DX, MSG3

    MOV   AH, 9         ;显示字符串

    INT   21H

    MOV   AL, FU

    MOV   AH, 0

    CALL  DISP


    MOV   AH, 4CH       ;到此结束

    INT   21H

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

DISP:

    MOV   BX, 10

    MOV   CX, 0

D_1:MOV   DX, 0

    DIV   BX

    ADD   DL, '0'

    PUSH  DX

    INC   CX

    CMP   AX, 0

    JNE   D_1

    MOV   AH, 2

D_2:POP   DX

    INT   21H

    LOOP  D_2

    RET

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

C  ENDS

    END  START

;================================


程序执行后,显示如下:


c:\masm510>M2


Please input a num: 2

Please input a num: 5

Please input a num: -5

Please input a num: -8

Please input a num: 6

Please input a num: 9

Please input a num: 4

Please input a num: 6

Please input a num: 0

Please input a num: 2

Zheng  Sum = 34

 FU    Num = 2


;================================

另一个题目的链接:http://zhidao.baidu.com/question/2009998411881238548.html

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值