80x86 汇编语言编程:求和

要求:通过键盘输入一个数字,求 1 加到该数的和,并将结果显示在屏幕上。


做而论道编写的程序如下:


下列程序,可以使用,并具有排错功能。

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

ASSUME  CS:C, DS:D

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

D  SEGMENT

   N  DB  4, ?, 4 DUP(?)

 SUM  DW  ?

 MSG1 DB  'Input a number (1~361): $'

 MSG2 DB  13, 10, 'Sum is : '

 MSG3 DB  '     .$'

 MSG4 DB  13, 10, 'Input Error.', 13, 10, 36

D  ENDS

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

C  SEGMENT

BEG:

    MOV   AX, D

    MOV   DS, AX

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

    LEA   DX, MSG1

    MOV   AH, 9

    INT   21H

    LEA   DX, N

    MOV   AH, 10      ;输入字符串

    INT   21H

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

    MOV   SI, 0

    MOV   SUM, 0

    MOV   BX, 10

LP1:

    CMP   BYTE PTR N[SI + 2], 13

    JE    L1_E

    CMP   BYTE PTR N[SI + 2], '0'

    JB    ERROR

    CMP   BYTE PTR N[SI + 2], '9'

    JA    ERROR

    MOV   AX, SUM

    MUL   BX

    MOV   SUM, AX

    MOV   AL, N[SI + 2]

    SUB   AL, '0'

    MOV   AH, 0

    ADD   SUM, AX

    INC   SI

    JMP   LP1

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

L1_E:

    MOV   CX, SUM

    MOV   SUM, 0

LP2:ADD   SUM, CX

    JC    ERROR

    LOOP  LP2

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

    MOV   AX, SUM

    MOV   BX, 10

    MOV   CX, 5

    MOV   SI, 0

LP3:MOV   DX, 0

    DIV   BX

    ADD   DL, '0'

    MOV   MSG3[SI + 4], DL

    DEC   SI

    CMP   AX, 0

    JZ    DISP

    LOOP  LP3

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

DISP:

    LEA   DX, MSG2

    MOV   AH, 9

    INT   21H

    JMP   EXIT

ERROR:

    LEA   DX, MSG4

    MOV   AH, 9

    INT   21H

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

EXIT:

    MOV   AH, 4CH

    INT   21H

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

C  ENDS

    END  BEG

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


执行后,显示如下:


c:\masm510>XX

Input a number (1~361): 0

Input Error.


c:\masm510>XX

Input a number (1~361): 7

Sum is :    28.

c:\masm510>XX

Input a number (1~361): 361

Sum is : 65341.

c:\masm510>


c:\masm510>XX

Input a number (1~361): 100

Sum is :  5050.

c:\masm510>XX

Input a number (1~361): 367

Input Error.



后记:


提问者选择了另一个答案。


在那个答案中,程序罗嗦了不少,却还没有排除错误的功能。


如果输入了非法的数字,程序并不给出提示,而是继续计算,然后显示出来莫名其妙的结果。


大家可以去看看,和做而论道编写的程序对比一下。


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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值