Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Вставку слова перед заданным словом?
@DobriyParen

Удалить слово в строке, стоящее перед заданным словом?

помогите исправить код по моей задумке он должен удалить слово в строке, стоящее перед заданным словом.
но у меня что то не получается написать без ошибок помогите исправить срочно
.model small
.stack 100h

.data
    msg db 'This is a sample string', '$'
    keyword db 'sample', '$'

.code
main proc
    mov ax, @data
    mov ds, ax

    lea si, msg
    lea di, msg
    mov cx, 0
    mov bx, 0

    ; находим позицию ключевого слова в строке
    mov al, keyword[bx]
    mov ah, 0
    inc bx
    mov cx, 0
    ; считаем количество символов в ключевом слове
    while_loop:
        cmp al, 0
        je found
        inc cx
        mov al, keyword[bx]
        inc bx
        jmp while_loop
    found:
        dec cx

    ; ищем позицию слова, стоящего перед ключевым словом
    find_word:
        mov al, [si]
        cmp al, 0
        je finish
        cmp al, ' '
        jne next_char
        ; проверяем, является ли следующее слово ключевым
        cmp_word:
            mov bx, 0
            mov dx, si
            mov al, msg[si+1]
            cmp al, keyword[bx]
            jne next_char
            inc bx
            inc dx
            cmp_loop:
                cmp al, 0
                je delete_word
                mov al, keyword[bx]
                inc bx
                inc dx
                cmp al, msg[dx]
                jne next_char
                jmp cmp_loop
        delete_word:
            ; копируем строку на одно слово влево
            mov cx, si
            mov dx, si
            inc dx
            next_char:
                mov al, [dx]
                mov [cx], al
                inc cx
                inc dx
            jmp find_word

    finish:
        mov [cx], '$'

    ; выводим измененную строку
    lea dx, msg
    mov ah, 09h
    int 21h

    mov ah, 4ch
    int 21h
main endp
end main
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 1 комментарий
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы