Выделение подстроки из строки (выводит ответ и ещё множество ненужных символов) - 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
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Устанавливаются сегменты данных и кода.
- Выводится сообщение с просьбой ввести число от 0 до 9.
- Пользователь вводит число, код проверяет, что это число от 0 до 9, и сохраняет его в переменной a.
- Выводится сообщение с просьбой ввести число от 1 до 9.
- Пользователь вводит число, код проверяет, что это число от 1 до 9, и сохраняет его в переменной b.
- Код копирует строку из 20 символов '$' в строку str2.
- Код выделяет подстроку из строки str1, используя введённые пользователем числа как смещение и длину.
- Выводится выделенная подстрока.
- Код завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д