急求汇编语言问题!!!
答案:4 悬赏:10 手机版
解决时间 2021-02-25 16:16
- 提问者网友:原来太熟悉了会陌生
- 2021-02-25 12:23
急求汇编语言问题!!!
最佳答案
- 五星知识达人网友:酒醒三更
- 2021-02-25 13:23
;==============================================
;从键盘输入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之内,请输入者人工控制。
;从键盘输入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之内,请输入者人工控制。
全部回答
- 1楼网友:毛毛
- 2021-02-25 16:33
提问的有点抽象
- 2楼网友:渡鹤影
- 2021-02-25 15:24
接收从键盘输入9个小于100的正整数,根据输入的一个序号(1-9),输出对应的数。输入0结束。
- 3楼网友:纵马山川剑自提
- 2021-02-25 14:59
说下具体要求可以不 ?
1.输入的序号需不需要有提示?
2.输出的数时是十进制输出还是十六进制输出?
3.数的输入时你需要什么来分隔两个数(空格?或者其他符号?)
清楚了需求写程序任意写。
若你不说需求,那么写程序的人可能按照自己的想法写,但不一定满足你的需求了哦~~~~~~~~~~
1.输入的序号需不需要有提示?
2.输出的数时是十进制输出还是十六进制输出?
3.数的输入时你需要什么来分隔两个数(空格?或者其他符号?)
清楚了需求写程序任意写。
若你不说需求,那么写程序的人可能按照自己的想法写,但不一定满足你的需求了哦~~~~~~~~~~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯