问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编语言顺序程序设计:从键盘输入一个字符串,讲其中的小写字母转换为大写字母,然后原样输出。

发布网友 发布时间:2022-04-24 02:44

我来回答

2个回答

热心网友 时间:2023-10-22 17:48

1. 首先题目就有问题,不可能“接收从键盘输入的字符,以CTR+C 结束”。对于命令提示符来说,按下CTRL+C,就会强行退出这个程序,所以不可能以CTRL+C结束的。应该是按回车结束输入。
2. DATA里有中文标点符号。
3. 输入字符后,按下回车,在C语言里运行的时候会自动换行,但是在汇编里不会,所以你要自己换行。
4. 用MOV AH, 0AH; INT 21H中断输入后,输入的有效字符数存放在BUF1单元里,所以循环的时候应该把CX设置为BUF1单元里的值,而不是COUNT
5. 输入的有效字符从BUF2单元开始存储,所以做大小写转换的时候,应该从BUF2单元开始,而不应该从BUF单元开始
6. 61H和7AH都是小写字母,所以跳转指令中不应该有E。同时,有符号、无符号不要混用,所以JBE改为JB,JGE改为JA。
7. 输入字符时,是以回车符作为结束;而输出字符时,是以'$'作为结束,所以对输入的字符,你要把最后一个回车符转为‘$'。
修改后的程序如下:
DATA SEGMENT
MESS1 DB 'INPUT: ',13,10,'$' 
NEWLINEDB 13, 10, '$' ;这行是专门用来换行的
MESS2 DB 'OUTPUT:',13,10,'$'
BUF DB 20
BUF1 DB ?
BUF2 DB 20 DUP(?)
COUNT EQU $-BUF
DATA ENDS

CODE SEGMENT 
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX 
MOV SI, 0
LEA DX,MESS1
MOV AH,09H
INT 21H
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H

LEA DX, NEWLINE ;专门用来换行
MOV AH, 9
INT 21H

MOV CL, BUF1
MOV CH, 0 ;BUF1单元中存放的是有效输入字符数

LOOP1:MOV AL,BUF2[SI] ;从BUF2单元开始才是有效字符
CMP AL,61H
JB NEXT ;JBE改为JB
CMP AL,7AH
JA NEXT ;JGE改为JA
SUB AL,20H
MOV BUF2[SI],AL ;从BUF2单元开始才是有效字符

NEXT: INC SI
LOOP LOOP1
MOV BUF2[SI], '$' ;循环结束,把当前的字符修改为'$'

LEA DX,MESS2
MOV AH,09H
INT 21H

MOV DX,OFFSET BUF2 ;从BUF2单元开始才是有效字符
MOV AH,09H
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
END START

热心网友 时间:2023-10-22 17:48

汇编语言程序设计:

由键盘输入一个字符串,回车结束。

将其中的小写字母转换为大写输出。

其它符号不变。

热心网友 时间:2023-10-22 17:48

1. 首先题目就有问题,不可能“接收从键盘输入的字符,以CTR+C 结束”。对于命令提示符来说,按下CTRL+C,就会强行退出这个程序,所以不可能以CTRL+C结束的。应该是按回车结束输入。
2. DATA里有中文标点符号。
3. 输入字符后,按下回车,在C语言里运行的时候会自动换行,但是在汇编里不会,所以你要自己换行。
4. 用MOV AH, 0AH; INT 21H中断输入后,输入的有效字符数存放在BUF1单元里,所以循环的时候应该把CX设置为BUF1单元里的值,而不是COUNT
5. 输入的有效字符从BUF2单元开始存储,所以做大小写转换的时候,应该从BUF2单元开始,而不应该从BUF单元开始
6. 61H和7AH都是小写字母,所以跳转指令中不应该有E。同时,有符号、无符号不要混用,所以JBE改为JB,JGE改为JA。
7. 输入字符时,是以回车符作为结束;而输出字符时,是以'$'作为结束,所以对输入的字符,你要把最后一个回车符转为‘$'。
修改后的程序如下:
DATA SEGMENT
MESS1 DB 'INPUT: ',13,10,'$' 
NEWLINEDB 13, 10, '$' ;这行是专门用来换行的
MESS2 DB 'OUTPUT:',13,10,'$'
BUF DB 20
BUF1 DB ?
BUF2 DB 20 DUP(?)
COUNT EQU $-BUF
DATA ENDS

CODE SEGMENT 
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX 
MOV SI, 0
LEA DX,MESS1
MOV AH,09H
INT 21H
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H

LEA DX, NEWLINE ;专门用来换行
MOV AH, 9
INT 21H

MOV CL, BUF1
MOV CH, 0 ;BUF1单元中存放的是有效输入字符数

LOOP1:MOV AL,BUF2[SI] ;从BUF2单元开始才是有效字符
CMP AL,61H
JB NEXT ;JBE改为JB
CMP AL,7AH
JA NEXT ;JGE改为JA
SUB AL,20H
MOV BUF2[SI],AL ;从BUF2单元开始才是有效字符

NEXT: INC SI
LOOP LOOP1
MOV BUF2[SI], '$' ;循环结束,把当前的字符修改为'$'

LEA DX,MESS2
MOV AH,09H
INT 21H

MOV DX,OFFSET BUF2 ;从BUF2单元开始才是有效字符
MOV AH,09H
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
END START

热心网友 时间:2023-10-22 17:48

汇编语言程序设计:

由键盘输入一个字符串,回车结束。

将其中的小写字母转换为大写输出。

其它符号不变。

热心网友 时间:2023-10-22 17:48

1. 首先题目就有问题,不可能“接收从键盘输入的字符,以CTR+C 结束”。对于命令提示符来说,按下CTRL+C,就会强行退出这个程序,所以不可能以CTRL+C结束的。应该是按回车结束输入。
2. DATA里有中文标点符号。
3. 输入字符后,按下回车,在C语言里运行的时候会自动换行,但是在汇编里不会,所以你要自己换行。
4. 用MOV AH, 0AH; INT 21H中断输入后,输入的有效字符数存放在BUF1单元里,所以循环的时候应该把CX设置为BUF1单元里的值,而不是COUNT
5. 输入的有效字符从BUF2单元开始存储,所以做大小写转换的时候,应该从BUF2单元开始,而不应该从BUF单元开始
6. 61H和7AH都是小写字母,所以跳转指令中不应该有E。同时,有符号、无符号不要混用,所以JBE改为JB,JGE改为JA。
7. 输入字符时,是以回车符作为结束;而输出字符时,是以'$'作为结束,所以对输入的字符,你要把最后一个回车符转为‘$'。
修改后的程序如下:
DATA SEGMENT
MESS1 DB 'INPUT: ',13,10,'$' 
NEWLINEDB 13, 10, '$' ;这行是专门用来换行的
MESS2 DB 'OUTPUT:',13,10,'$'
BUF DB 20
BUF1 DB ?
BUF2 DB 20 DUP(?)
COUNT EQU $-BUF
DATA ENDS

CODE SEGMENT 
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX 
MOV SI, 0
LEA DX,MESS1
MOV AH,09H
INT 21H
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H

LEA DX, NEWLINE ;专门用来换行
MOV AH, 9
INT 21H

MOV CL, BUF1
MOV CH, 0 ;BUF1单元中存放的是有效输入字符数

LOOP1:MOV AL,BUF2[SI] ;从BUF2单元开始才是有效字符
CMP AL,61H
JB NEXT ;JBE改为JB
CMP AL,7AH
JA NEXT ;JGE改为JA
SUB AL,20H
MOV BUF2[SI],AL ;从BUF2单元开始才是有效字符

NEXT: INC SI
LOOP LOOP1
MOV BUF2[SI], '$' ;循环结束,把当前的字符修改为'$'

LEA DX,MESS2
MOV AH,09H
INT 21H

MOV DX,OFFSET BUF2 ;从BUF2单元开始才是有效字符
MOV AH,09H
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
END START

热心网友 时间:2023-10-22 17:48

汇编语言程序设计:

由键盘输入一个字符串,回车结束。

将其中的小写字母转换为大写输出。

其它符号不变。

热心网友 时间:2023-10-22 17:48

1. 首先题目就有问题,不可能“接收从键盘输入的字符,以CTR+C 结束”。对于命令提示符来说,按下CTRL+C,就会强行退出这个程序,所以不可能以CTRL+C结束的。应该是按回车结束输入。
2. DATA里有中文标点符号。
3. 输入字符后,按下回车,在C语言里运行的时候会自动换行,但是在汇编里不会,所以你要自己换行。
4. 用MOV AH, 0AH; INT 21H中断输入后,输入的有效字符数存放在BUF1单元里,所以循环的时候应该把CX设置为BUF1单元里的值,而不是COUNT
5. 输入的有效字符从BUF2单元开始存储,所以做大小写转换的时候,应该从BUF2单元开始,而不应该从BUF单元开始
6. 61H和7AH都是小写字母,所以跳转指令中不应该有E。同时,有符号、无符号不要混用,所以JBE改为JB,JGE改为JA。
7. 输入字符时,是以回车符作为结束;而输出字符时,是以'$'作为结束,所以对输入的字符,你要把最后一个回车符转为‘$'。
修改后的程序如下:
DATA SEGMENT
MESS1 DB 'INPUT: ',13,10,'$' 
NEWLINEDB 13, 10, '$' ;这行是专门用来换行的
MESS2 DB 'OUTPUT:',13,10,'$'
BUF DB 20
BUF1 DB ?
BUF2 DB 20 DUP(?)
COUNT EQU $-BUF
DATA ENDS

CODE SEGMENT 
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX 
MOV SI, 0
LEA DX,MESS1
MOV AH,09H
INT 21H
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H

LEA DX, NEWLINE ;专门用来换行
MOV AH, 9
INT 21H

MOV CL, BUF1
MOV CH, 0 ;BUF1单元中存放的是有效输入字符数

LOOP1:MOV AL,BUF2[SI] ;从BUF2单元开始才是有效字符
CMP AL,61H
JB NEXT ;JBE改为JB
CMP AL,7AH
JA NEXT ;JGE改为JA
SUB AL,20H
MOV BUF2[SI],AL ;从BUF2单元开始才是有效字符

NEXT: INC SI
LOOP LOOP1
MOV BUF2[SI], '$' ;循环结束,把当前的字符修改为'$'

LEA DX,MESS2
MOV AH,09H
INT 21H

MOV DX,OFFSET BUF2 ;从BUF2单元开始才是有效字符
MOV AH,09H
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
END START

热心网友 时间:2023-10-22 17:48

汇编语言程序设计:

由键盘输入一个字符串,回车结束。

将其中的小写字母转换为大写输出。

其它符号不变。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...像是个小女生唱的歌词有 滴答滴滴滴滴滴滴滴滴滴,滴答滴滴滴_百度知 ... ...青纯的外国女孩唱了一首歌只记得高潮是啊啊啊啊啊啊啊啊啊 啊啊... ...唱的 歌词好像是 啊呀嚓嚓 啊滴嗒嗒 滴滴滴滴 ``` 从自助湖北宜昌到凤凰古城的最佳路线以及价钱??到凤凰古城重点景观都... 2024进出口许可证申请条件及办理流程(通用) lookattheelephant是什么意思 梦见一只大鸟落在手上 刘亮和白鸽离过婚吗 山西有什么好的技校 山西省有哪些好的职业高中和技校 用汇编怎样实现从键盘输入一串字符至内存(利用DOS功能调用)? 汇编语言输入一个字符串 汇编语言,从键盘输入一字符串 汇编 输入字符串 白开水的是什么意思? 汇编语言,怎么从键盘输入字符串呢? 白开水和面汤的区别? 白开水是什么水, 自来水煮沸吗 是用什么水煮的才是白开水 白开水的意思是热水还是冷水? 如何理解白开水的含义? 美的空调移机怎样收费,美的空调移机怎么收费 2010年6月1.25匹格力和美的空调价格分别是多少? 请问美的空调2P价格是多少? 美的新空调1P的要多少钱一台? 怎样移动文件到另一个文件夹里 WIN7怎样随意移动文件和文件夹的位置? 如何将文件夹中的文件移动到另一个文件夹 怎样移动文件在同一个磁盘中的位置 怎么移动文件夹位置 怎么借到钱 [汇编语言]由键盘输入任意字符串 然后显示出来 汇编 从键盘输入一字符串 汇编编程题目从键盘上输入一串字符串 汇编 从键盘上输入一个字符串,然后加上某些字符一起显示出来 用汇编语言在键盘输入一个字符串,并将其从左向右滚动显示,求完整程序 如何使同汇编语言编写从键盘输入一段字符串然后逆序输出? 从键盘输入一个字符串在下一行逆序输出用汇编语言如何实现 用汇编语言实现键盘输入一段字符串,统计小写字母个数并显示。 编写汇编语言程序段:从键盘输入一个字符串“please input a number”存入BUFF 汇编语言,从键盘上输入一串字符串,当输入字符是回车时,显示输入的所有字符 汇编怎样编写从键盘接收字符串的程序呢? 汇编语言:从键盘输入一个字符串,再从键盘输入一个字符,如果在原字符串中有这个字符就把它移到最后, 汇编如何输入字符,再把它输出? 紫薯发苦是怎么回事 紫薯有点苦怎么回事 紫薯为什么有点微微发苦 紫薯吃起来苦怎么回事 紫薯为什么吃起来有点苦 紫薯发苦还可以吃么 紫薯有苦味能吃吗我用紫薯,红枣,糯米一起