用80x86汇编语言编程--输入、储存与输出

来源:互联网 发布:js导出excel表格兼容 编辑:程序博客网 时间:2024/06/05 15:41

这个问题,是很久很久以前回答的,最近,才被提问者采纳,所以,拖到现在才发表。


链接:http://zhidao.baidu.com/question/351836527.html


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

;从键盘输入9个十进制数(数与数之间用空格隔开)

;再输入的一个序号(1-9),输出对应的数。输入0结束。

;输入的序号最好有提示,输出当然是十进制。

;以上要求均已满足。

;程序如下:

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

DISP_STR  MACRO  X     ;宏定义.

    MOV  DX, OFFSET X

    MOV  AH, 9

    INT  21H

ENDM

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

DATA  SEGMENT          ;数据段.

  MSG1  DB  13, 10, 'Please Input N$'

  MSG2  DB  13, 10, 'I can not count so much ! $'

  MSG3  DB  13, 10, 'Please Input NUM (1~9, 0 end):$'

  IN_N1 DB  9 DUP (?,?,?,'$')


     N  DB  30H        ;序数.

DATA  ENDS

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

CODE   SEGMENT         ;代码段.

    ASSUME   CS: CODE, DS: DATA

START:

    MOV  AX, DATA

    MOV  DS, AX

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

    MOV  BX, OFFSET IN_N1;数据

    MOV  CX, 9

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

IN_X:

    PUSH CX

    MOV  CX, 3

    DISP_STR  MSG1     ;宏调用,提示 Please Input :

    INC  N

    MOV  DL, N

    MOV  AH, 2

    INT  21H

    MOV  DL, ':'

    MOV  AH, 2

    INT  21H

    MOV  DX, BX

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

IN_LOOP:

    MOV  AH, 1         ;输入字符.

    INT  21H

    CMP  AL, ' '       ;空格?

    JZ   IN_Y          ;本数字结束.

    CMP  AL, 30H

    JB   _IN_ERR       ;小于'0',输入错误.

    CMP  AL, 3AH

    JNB  _IN_ERR       ;大于'9',输入错误.

    MOV  [BX], AL

    INC  BX

    MOV  AX, BX

    SUB  AX, 2

    SUB  AX, DX

    JA   IN_Y

    JMP  IN_LOOP       ;继续输入.

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

IN_Y:

    ADD  DX, 4

    MOV  BX, DX

    POP  CX

    LOOP IN_X

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

IN_END:

    DISP_STR  MSG3     ;宏调用,提示  NUM is :


    MOV  AH, 1         ;输入字符.

    INT  21H

    CMP  AL, 30H

    JE   EXIT          ;'0',结束.

    JB   _IN_ERR       ;小于'0',输入错误.

    CMP  AL, 3AH

    JNB  _IN_ERR       ;大于'9',输入错误.


    PUSH AX


    MOV  DL, 13

    MOV  AH, 2

    INT  21H

    MOV  DL, 10

    MOV  AH, 2

    INT  21H


    POP  AX

    SUB  AL, 31H

    MOV  BL, 4

    MUL  BL

    MOV  DX, OFFSET IN_N1

    ADD  DX, AX

    MOV  AH, 9

    INT  21H


    JMP  IN_END

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

_IN_ERR:

    DISP_STR  MSG2     ;宏调用,提示 can not count so much !

EXIT:    

    MOV  AH, 4CH

    INT  21H

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

CODE  ENDS

    END  START

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


程序运行的屏幕显示如下:


c:\masm510>Z2


Please Input N1:342

Please Input N2:45

Please Input N3:25

Please Input N4:21

Please Input N5:566

Please Input N6:32

Please Input N7:12

Please Input N8:563

Please Input N9:2

Please Input NUM (1~9, 0 end):3

25

Please Input NUM (1~9, 0 end):2

45

Please Input NUM (1~9, 0 end):1

342

Please Input NUM (1~9, 0 end):6

32

Please Input NUM (1~9, 0 end):0

c:\masm510>



要求输入数据在100之内,请输入者人工控制。


提问者评价:谢谢~


0 0
原创粉丝点击