从屏幕上输入字符串,把字符串中所有的小写字母修改后输出在屏幕上

只为记录汇编实验(分支与循环程序设计)

题目:接收从键盘的字符,以“$”或回车结束 ,并将其中的小写字母转变为大写字母,然后在屏幕上显示。

代码如下:

;从屏幕上输入字符串,把字符串中所有的小写字母修改后输出在屏幕上
DATA SEGMENT
     BUF DB 50            ;定义缓冲区
     DB '?'
     DB 50 DUP('?')       ;开辟存储空间
     CRLF DB 0DH,0AH,'$'  ;定义换行
     STR1 DW 'INPUT STRING:','$'
     STR2 DW 'OUTPUT STRING:','$'
DATA ENDS
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX      
    
    LEA DX,STR1     ;输入提示
    MOV AH,9H
    INT 21H
    
    MOV DX,OFFSET BUF ;从键盘输入并把输入地址放入buf中
    MOV AH,0AH
    INT 21H            
    
    XOR CX,CX       ;cx初始化
    LEA SI,BUF+1    ;使si指向buf第一个位置,此处位置存储字符串长度
    MOV CL,[SI]     ;定义遍历次数
    LEA SI,BUF+2
    
X: 
    MOV AL,[SI]     ;把si中的内容放入al中
    CMP AL,'a'      ;al与小写字母a比较
    JB NEXT         ;小于则跳next
    CMP AL,'z'      ;al与小写字母z比较
    JG NEXT         ;大于则跳next
    SUB AL,20H      ;小写字母转换大写
    MOV [SI],AL     ;把修改后的大写字母赋值给[si]        
NEXT:
    INC SI          ;使si地址自增1
    LOOP X          ;做循环,cl自减1 当cl=0时执行下一条语句,否则继续循环x
    
    MOV [SI],'$'    ;存储字符串结束语句,以防出现乱码
    ;若41行代码不写则在输入字符串后边加上$符号,这样也可以输出
    ;如果题目要求字符串以$结尾,则41行代码可删除   
    
    LEA DX,CRLF     ;回车换行
    MOV AH,09H
    INT 21H 
    
    LEA DX,STR2     ;输出提示
    MOV AH,09H
    INT 21H          
    
    LEA DX,BUF+2    ;输出修改后的字符串
    MOV AH,09H
    INT 21H
    
    MOV AH,4CH      ;结束程序
    INT 21H
CODE ENDS
END START

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值