汇编语言综合题-1

汇编语言综合题-1

一、题目要求

#去除字符串中的某个字符。
要求:输入和输出都要有必要的提示﹐且提示独占一行﹔输入要有边界判断。
1)输入任意大小写字母混合字符串string1 ,长度15~30个字符﹐按Enter 结束输入﹔
2)输入任意一个字符ch(大写或小写字母),Enter 结束输入;
3)将string1中字符ch进行大小写转换(例∶输入ch为小写a ,则将string1中所有小写a转换为大写A﹐其它字符内容位置不变)﹐输出变化后的字符串 string2 ;
4)将string1中的ch字符去除(例:ch为小写a ,则将string1中的所有a字符删去),输出变化后的字符串string3。在这里插入图片描述

二、代码实现

DATAS SEGMENT
;此处输入数据段代码  
MIN DW 15
MAX DW 30
char DB ?
num DW ?

shuru DB 'Please enter a mixed case string (15 <= length <= 30):$'
zifu DB 'Please enter a character ch : $'
conver DB 'Case converted String: $'
delete DB 'Delete the string after the ch character :$'
error DB 'error!$'
buf DB 30h
	DB 0
	DB 30h DUP(0)
DATAS ENDS

enterline macro  ;宏定义,完成回车换行
mov dl,13;回车
mov ah,2
int 21h
mov dl,10;换行
mov ah,2
int 21h
endm

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov dx,offset shuru
mov ah,9
int 21h;输出提示符

mov dx,offset buf
mov ah,10
int 21h			;输入字符串到buf

xor dx,dx		;边界判断
mov dl,buf+1
cmp dx,MIN
jb stop
cmp dx,MAX
ja stop
mov num,dx		;把长度给num

enterline

mov dx,offset zifu
mov ah,9
int 21h				;提示输入ch

mov ah,1			;放在al
int 21h
xor ah,ah
mov char,al			;放在char
enterline

;大小写切换
xor si,si
mov bl,-20h

;panduan char
cmp char,41h;;大写
jb next2
cmp char,5ah
ja next2
;如果是小写就减20h
mov bl,20h

next2:
mov dx,offset conver
mov ah,9
int 21h

mov si,0
next1:

mov cl,buf[si+2]    ;bl里面放字符
cmp char,cl
jne change			;如果相等就运算
add buf[si+2],bl

;输出
mov dl,buf[si+2]
mov ah,2
int 21h

sub buf[si+2],bl
;运算完之后再补齐,方便后面的计算
change:
cmp char,cl;再次判断
je tiaoguo	;相等就跳过,不相等就输出
mov dl,buf[si+2]
mov ah,2
int 21h
	
tiaoguo:	
inc si
cmp si,num
jne next1

enterline

;delete
mov dx,offset delete
mov ah,9
int 21h

mov si,0
next3:

mov cl,buf[si+2]    ;bl里面放字符
cmp char,cl
je del			;如果相等就运算
;输出
mov dl,buf[si+2]
mov ah,2
int 21h
del:	
inc si
cmp si,num
jne next3
 

jmp next

stop:  
enterline 
mov dx,offset error 
mov ah,9
int 21h

next:

MOV AH,4CH
INT 21H
CODES ENDS
END START
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值