查找字符串(并修改、排序、插入、删除等)-汇编语言

有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk, 并将结果在显示器上显示。

DATAS SEGMENT
    STRING0 DB 'data',0AH,0DH     
    STRING1 DB 'name',0AH,0DH     
    STRING2 DB 'time',0AH,0DH     
    STRING3 DB 'file',0AH,0DH     
    STRING4 DB 'code',0AH,0DH    
    STRING5 DB 'path',0AH,0DH     
    STRING6 DB 'user',0AH,0DH     
    STRING7 DB 'exit',0AH,0DH     
    STRING8 DB 'quit',0AH,0DH    
    STRING9 DB 'text','$'  
    BUF DB 5         
    DB ?         
    DB 5 DUP(?) ;此处输入数据段代码  
DATAS ENDS

EXTRA SEGMENT   
    STRING DB 7 DUP(?) ;此处输入堆栈段代码
EXTRA ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:EXTRA
START:
    MOV AX,DATAS
    MOV DS,AX
	MOV AX,EXTRA     
	MOV ES,AX     
	LEA DX,BUF     
	MOV AH,0AH     
	INT 21H     
	LEA SI,BUF+2     
	LEA DI,STRING
	
	MOV CX,4     
	REP MOVSB     
	LEA SI,STRING0     
	LEA DI,STRING     
	CLD     
	
	MOV CX,4     
	REPE CMPSB     
	CMP CX,0     
	JE TIHUAN     
	LEA SI,STRING1     
	LEA DI,STRING     
	CLD     
	MOV CX,4     
	REPE CMPSB     
	CMP CX,0     
	JE TIHUAN     
	LEA SI,STRING2     
	LEA DI,STRING 
    CLD     
    MOV CX,4     
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    LEA SI,STRING3     
    LEA DI,STRING     
    CLD     
    MOV CX,4     
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    LEA SI,STRING4     
    LEA DI,STRING     
    CLD     
    MOV CX,4     
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    LEA SI,STRING5     
    LEA DI,STRING     
    CLD     
    MOV CX,4     
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    LEA SI,STRING6     
    LEA DI,STRING     
    CLD     
    MOV CX,4     
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    LEA SI,STRING7     
    LEA DI,STRING     
    CLD     
    MOV CX,4     
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    LEA SI,STRING8     
    LEA DI,STRING     
    CLD     
    MOV CX,4 
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    LEA SI,STRING9     
    LEA DI,STRING     
    CLD     
    MOV CX,4     
    REPE CMPSB     
    CMP CX,0     
    JE TIHUAN     
    JMP SHUCHU 
TIHUAN:     
    SUB SI,4     
    MOV AL,'d'     
    MOV [SI],AL    
     MOV AL,'i'     
     MOV [SI+1],AL     
     MOV AL,'s'     
     MOV [SI+2],AL     
     MOV AL,'k'     
     MOV [SI+3],AL 
SHUCHU:     
     LEA DX,STRING0     
     MOV AH,09H     
     INT 21H     
     MOV AH,4CH     
     INT 21H 
     CODES ENDS 
    END START ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

比如输入user时的结果:

输入abcd时的结果:

有一组字符串为ram,yes,red,the,get,for,and,key,not,may,请编写程序将他们按ASCII大小排序,并在显示器上显示。

DATAS SEGMENT
     STR0 DB 'ram',0AH,0DH     
     STR1 DB 'yes',0AH,0DH     
     STR2 DB 'red',0AH,0DH     
     STR3 DB 'the',0AH,0DH     
     STR4 DB 'get',0AH,0DH     
     STR5 DB 'for',0AH,0DH     
     STR6 DB 'and',0AH,0DH     
     STR7 DB 'key',0AH,0DH     
     STR8 DB 'not',0AH,0DH     
     STR9 DB 'may$' 
     ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    SAVE DB 100 DUP(?) ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX
    XOR AX,AX
    MOV CX,9
    LEA DI,STR0
    LEA SI,STR1
AGAIN:
	 PUSH CX     
	 PUSH SI     
	 PUSH DI 
    
BIJIAO:
	MOV AL,[DI]
	CMP AL,[SI]
	JE BIJIAO1
	CMP AL,[SI]
	JB JIXU
	JMP JIAOHUAN
BIJIAO1:
	MOV AL,[DI+1]
	CMP AL,[SI+1]
	JE BIJIAO2
	CMP AL,[SI]
	JB JIXU
	JMP JIAOHUAN
BIJIAO2:
	MOV AL,[DI+2]
	CMP AL,[SI+2]
	JA JIAOHUAN
	JMP JIXU
JIXU:
	 ADD SI,5     
	 ADD DI,5
	 LOOP BIJIAO
	 POP DI     
	 POP SI     
	 POP CX 
	 LOOP AGAIN
	 JMP OUTPUT
JIAOHUAN:
	MOV AL,[SI]     
	MOV BL,[DI]     
	MOV [SI],BL     
	MOV [DI],AL     
	MOV AL,[SI+1]     
	MOV BL,[DI+1]     
	MOV [SI+1],BL     
	MOV [DI+1],AL     
	MOV AL,[SI+2]     
	MOV BL,[DI+2]     
	MOV [SI+2],BL     
	MOV [DI+2],AL     
	JMP JIXU
OUTPUT:
	LEA DX,STR0
	MOV AH,09H
	INT 21H 
    
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

结果图示例:

有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其删除, 并在显示器上显示。

DATAS SEGMENT
    STR0 DB 'data',0AH,0DH     
    STR1 DB 'name',0AH,0DH     
    STR2 DB 'time',0AH,0DH     
    STR3 DB 'file',0AH,0DH     
    STR4 DB 'code',0AH,0DH     
    STR5 DB 'path',0AH,0DH     
    STR6 DB 'user',0AH,0DH     
    STR7 DB 'exit',0AH,0DH     
    STR8 DB 'quit',0AH,0DH     
    STR9 DB 'text',0AH,0DH,'$'     
    LEN EQU $-STR0     
    BUF DB 6   
    JISHU DB 00H   
    DB ? 
    DB 5 DUP(?)  ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    STRING DB 7 DUP(?);此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,ES:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
	MOV AX,STACKS    
	MOV ES,AX     
SHURU:
	LEA DX,BUF
	MOV AH,0AH
	INT 21H
	LEA DI,STRING
	LEA SI,BUF[2]
	MOV CX,4
	REP MOVSB
	
	
	LEA DI,STRING
	LEA SI,STR0
	CLD
	MOV CX,4
	;JMP JIAOHUAN
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	LEA DI,STRING
	LEA SI,STR1
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
    LEA DI,STRING
	LEA SI,STR2
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
    LEA DI,STRING
	LEA SI,STR3
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	LEA DI,STRING
    LEA SI,STR4
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	LEA DI,STRING
    LEA SI,STR5
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	LEA DI,STRING
	LEA SI,STR6
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	LEA DI,STRING
	LEA SI,STR7
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	LEA DI,STRING
	LEA SI,STR8
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	LEA DI,STRING
	LEA SI,STR9
	CLD
	MOV CX,4
	REPE CMPSB
	CMP CX,0
	JE YIDONG
	INC JISHU
	JMP SHUCHU
YIDONG:
	MOV AL,JISHU
	XOR AH,AH
	MOV BL,04H
	MUL BL
	MOV BL,AL
	MOV BX,SI
	MOV AX,LEN
	SUB AL,BL
	MOV CL,AL
	DEC SI
	DEC SI
	DEC SI
	DEC SI
JIAOHUAN:
	MOV AX,[SI+6]
	MOV [SI],AX
	INC SI
	DEC CX
	CMP CX,0
	JNE JIAOHUAN
SHUCHU:
	LEA DX,STR0	
	MOV AH,09H
	INT 21H
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

比如输入user后的结果:

有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序将上述字符串排序(升序)并插入disk使其人仍然有序, 并在显示器上显示。

参考上述几个例子结合一下即可。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值