作业帮 > 综合 > 作业

求助一道汇编语言问题!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 03:14:50
求助一道汇编语言问题!

3、从无序数列中删除一个元素

 

实验内容

在BUFFER为首址的内存区中存放了一个无序字符串,其长度存放在第一个字节单元,在KEY单元内存放了要删除的一个字符,查找此无序字串,若找到则删除并作相应调整,若字串中无此字符则在FLAG单元内置FFH标志.

data segment

buffer db 0cH,'wcsegmentend'

key db 'm'

flag db ?

error db -1

data ends

stack segment para stack 'stack'

      db 100 dup(0)

stack ends

code segment

     assume cs:code,ds:data,ss:stack

main proc far

start: push ds

       mov ax,0

       push ax

       mov ax,data

       mov ds,ax

       mov ax,stack

       mov ss,ax

       lea bx,key

       mov al,[bx]

       lea bx,buffer

       mov cx,[bx]

       jmp A4

A5:    dec cx

       jne A4

       jmp A2

A4:    inc bx

       cmp [bx],al

       jne A5

       jmp A3

A2:    mov dl,error

       mov flag,dl

       ret

A3:    mov ah,[bx+1]

       mov [bx],ah

       inc bx

       dec cx

       jne A3

       ret

main endp

code ends

     end main

题目和编程如图所示,可我运行的时候却又跳出了dubug,这是怎么回事?


DATA SEGMENT
BUFFER DB 0CH, 'WCSEGMENTEND'
KEY DB 'A'
FLAG DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN PROC FAR
START:
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
;-------------------------
MOV AL, KEY
LEA BX, BUFFER
MOV CL, [BX]
A4:
INC BX
CMP [BX], AL
JE A3
DEC CL
JNE A4 ;循环查找
MOV FLAG, -1
RET
;-------------------------
A3:
MOV AH, [BX + 1]
MOV [BX], AH
INC BX
DEC CL
JNE A3
MOV FLAG, 0
RET
;-------------------------
MAIN ENDP
CODE ENDS
END MAIN