Написать и протестировать функцию для замены символов ‘:’ на ‘.’ в заданной строке, начиная с указанной позиции - Assembler

Узнай цену своей работы

Формулировка задачи:

Написать и протестировать функцию для замены символов ‘:’ на ‘.’ в заданной строке, начиная с указанной позиции. Желательно использовать model tiny

Решение задачи: «Написать и протестировать функцию для замены символов ‘:’ на ‘.’ в заданной строке, начиная с указанной позиции»

textual
Листинг программы
.model tiny
 
.code
 
        org     100h
main    proc
 
        jmp     start
 
        ;Данные
        String          db      'asd:jkl.::gh:'
        StrLen          equ     $-String
        CrLf            db      0Dh, 0Ah, '$'
start:
        ;программа
        mov     ah,     09h
        lea     dx,     [String]
        int     21h
 
        mov     cx,     StrLen
        lea     si,     [String]
        mov     bx,     StrLen-1
        call    Replace
 
        mov     ah,     09h
        lea     dx,     [String]
        int     21h
        int     20h
main    endp
 
; замена символов ':' на '.'
; на входе:
; ds:[si] - строка
; cx      - длина строки
; bx      - начальная позиция для замены (от 0)
Replace proc
        push    ax
        push    bx
        push    cx
        push    dx
 
        jcxz    @@Break
        dec     cx
        sub     cx,     bx
        jb      @@Break
        inc     cx
        cld
        add     si,     bx
        mov     di,     si
        @@ForEachChar:
                lodsb
                cmp     al,     ':'
                jne     @@Next
                mov     al,     '.'
        @@Next:
                stosb
        loop    @@ForEachChar
@@Break:
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Replace endp
 
end     main

Объяснение кода листинга программы

  1. Объявлены переменные: — String, в которой содержится строка для обработки (длина строки вычисляется как разница между символом $ и первым символом строки, и сохраняется в переменной StrLen). — StrLen, длина строки. — CrLf, символ конца строки (0Dh = CR, 0Ah = LF, 0Dh = CR).
  2. Выполняется функция замены символов. На входе: — ds:[si] — строка. — cx — длина строки. — bx — начальная позиция для замены (от 0).
  3. Начинается выполнение функции Replace: — Начинается цикл, который выполняется до тех пор, пока не будут заменены все символы ':'. — В каждой итерации цикла выполняется следующее: — Загружается очередной символ из строки в al. — Если al не равен ':', то выполняется переход к следующей итерации цикла. — Если al равен ':', то выполняется замена на символ '.' и переход к следующей итерации цикла. — Выполняется вывод нового символа в строку.
  4. Выполняется выход из функции Replace.
  5. Выполняется возврат в основную программу.
  6. Выполняется вывод строки на экран (09h = DS:DX).
  7. Выполняется переход на следующую строку (0Dh = CR, 0Ah = LF).
  8. Выполняется возврат в основную программу.
  9. Выполняется переход на следующую строку (0Dh = CR, 0Ah = LF).
  10. Выполняется возврат в основную программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы