Выделение подстроки из строки (выводит ответ и ещё множество ненужных символов) - Assembler

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

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

Написать программу выделения из исходной строки символов заданной длины с указанного номера позиции.
dseg segment public para 'data'
str1 db "vlesyrodilaselo4ka$"
l equ $-str1
a db ?
b db ?
mes db 10,13,"Vvedite pozitsiu  $"
mes1 db 10,13,"vvedite koli4estvo $"
str2 db ?
dseg ends
 
cseg segment public para 'code'
assume ds:dseg, es:dseg, cs:cseg
start:
    mov ax,dseg
    mov ds,ax
    mov es,ax

        mov ah,09h
mov dx,offset mes
int 21h
mov ah,01h
int 21h
sub al,30h
mov a,al
 
mov ah,09h
mov dx,offset mes1
int 21h
mov ah,01h
int 21h
sub al,30h
mov b,al
cld
lea di,str2
lea si,es:str1
xor ax,ax
xor bx,bx
mov al,a
mov bl,b
add si,ax
mov cx,bx
rep movs str2,str1

    mov dl,' '
mov ah,02h
int 21h
 
    mov ah,09h
        mov dx,offset str2
int 21h
    mov ax,4c00h
    int 21h
cseg ends 
end start

Решение задачи: «Выделение подстроки из строки (выводит ответ и ещё множество ненужных символов)»

textual
Листинг программы
; tasm dos exe #
.286
.model small
.code
start:  mov ax,@data
    mov ds,ax
    mov es,ax 
        mov ah,9
    mov dx,offset mes
    int 21h
    mov ah,1
    int 21h
    sub al,30h
    mov byte ptr a,al 
    mov ah,9
    mov dx,offset mes1
    int 21h
    mov ah,1
    int 21h
    sub al,'0'
        test al,al
        jz exit
    mov byte ptr b,al
    lea di,str2+2
    lea si,str1
    add si,a
    mov cx,b
    rep movsb 
    mov ah,9
    mov dx,offset str2
    int 21h
    mov ah,0
    int 16h
exit:   mov ah,4Ch
    int 21h
.data
str1 db "В лесу родилась ёлочка$"
a dw 0
b dw 0
mes db 10,13,"Нажмите от 0 до 9 и получите позицию в строке  $"
mes1 db 10,13,"Нажмите от 1 до 9 и получите количество символов для вывода $"
str2 db 10,13,20 dup ('$')
end start

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

В этом коде выполняется следующая последовательность действий:

  1. Устанавливаются сегменты данных и кода.
  2. Выводится сообщение с просьбой ввести число от 0 до 9.
  3. Пользователь вводит число, код проверяет, что это число от 0 до 9, и сохраняет его в переменной a.
  4. Выводится сообщение с просьбой ввести число от 1 до 9.
  5. Пользователь вводит число, код проверяет, что это число от 1 до 9, и сохраняет его в переменной b.
  6. Код копирует строку из 20 символов '$' в строку str2.
  7. Код выделяет подстроку из строки str1, используя введённые пользователем числа как смещение и длину.
  8. Выводится выделенная подстрока.
  9. Код завершается.

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


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

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

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