汇编语言上机考试题三星题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

你可能感兴趣的:(汇编语言上机考试题三星题4(二刷))