汇编语言上机考试题三星题4(二刷)

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

这道题有个小BUG,可能不太好解决

还是在捋一下这道题的思路

首先读一个字符串到BUF2

把SI给BUF1,DI给BUF2

CL=4开始比较,如果不相等,就把SI一直挪到逗号那一位+1,然后开始打印

打印的时候要比较最后是逗号还是美元

最后要把CH-1,把DI重新给BUF2,

如果相等且CL=0,就说明找到了,进入CHANGE

在CHANGE中把SI往后挪,然后重新给DI赋值,返回比较。

DATAS SEGMENT

    BUF1 DB 'data,name,time,file,code,path,user,exit,quit,text','$'

    BUF2 DB 5

    DB ?

    DB 5 DUP(?)

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

    MOV DL,0DH

    MOV AH,02H

    INT 21H

    MOV CH,10

    MOV CL,4

    LEA SI,BUF1

    LEA DI,BUF2[2]

L:

CMP CH,0

JZ END0

CLD

NEXT:

CMPSB

JNZ TIAOZHUAN

DEC CL

CMP CL,0

JZ CHANGE

JMP NEXT

TIAOZHUAN:

CMP CL,0

JZ DAYIN

DEC CL

INC SI

JMP TIAOZHUAN

DAYIN:

MOV DL,[SI-5]

MOV AH,02H

INT 21H

MOV DL,[SI-4]

MOV AH,02H

INT 21H

MOV DL,[SI-3]

MOV AH,02H

INT 21H

MOV DL,[SI-2]

MOV AH,02H

INT 21H

;MOV DL,[SI-1]

;MOV AH,02H

;INT 21H

MOV BL,[SI-1]

CMP BL,'$'

JZ END0

MOV DL,[SI-1]

MOV AH,02H

INT 21H

LEA DI,BUF2[2]

MOV CL,4

DEC CH

JMP L

CHANGE:

INC SI

DEC CH

MOV CL,4

LEA DI,BUF2[2]

JMP L

END0:

    ;此处输入代码段代码

    MOV AH,4CH

    INT 21H

CODES ENDS

    END START

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容