汇编语言上机考试26题(***)现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改

汇编语言上机考试26题(***)

题目

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

思路

把BUF1中的数据,一位一位的与BUF2比较

代码

DATAS SEGMENT
    ;此处输入数据段代码
    BUF1 db 'data,name,file,code,path,user,exit,quit,text','$'
    BUF2 db 'BIT_XWK'
    Len_BUF1 equ $-BUF1
    Len_BUF2 equ $-BUF2
DATAS ENDS

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

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX
    
    ;数据输入
    LEA DX,BUF2
    MOV AH,0AH
    INT 21H
    
    ;回车换行
    MOV DL,0AH
    MOV AH,02H
    INT 21H

    ;把SI,DI初始化
    MOV SI,0
    MOV DI,2
    
COM:
    ;比较
    MOV AL,BUF1[SI]
    MOV BL,BUf2[DI]
    CMP AL,BL
      
    ;相等跳转 
     JE L1   
    ;不相等跳转
     JNE L2

L1:
	INC SI
	INC DI
	;看是否比较到BUF2的最后一位
	CMP DI,6
	
	JE EXIT0
	JMP COM
	 
L2:
    MOV DI,2   
    INC SI
    ;看是否到达BUF1的最后一位
    CMP SI,Len_BUF1
    JE  EXIT1
    JMP COM
    
EXIT0:
	;替换字符
    MOV BUF1[SI-4],'d'
    MOV BUF1[SI-3],'i'
    MOV BUF1[SI-2],'s'
    MOV BUF1[SI-1],'k'

EXIT1: 
	;打印输出  
    LEA DX,BUF1
    MOV AH,09H
    INT 21H
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

结果

输入quit的结果
输入quit的结果
错误输入的结果
错误输入的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值