Образовать строку, повторив фрагмент исходной строки требуемое число раз - Assembler
Формулировка задачи:
Добрый вечер.
Ребят прошу помощи, голову уже сломали с напарником. Не знаем как выполнить задания. Может кто подскажет или поможет.
1. Образовать строку, повторив фрагмент исходной строки с заданной позиции данной длины требуемое число раз.
2. Написать программу, которая бы инвертировала исходную строку
Решение задачи: «Образовать строку, повторив фрагмент исходной строки требуемое число раз»
textual
Листинг программы
model tiny .code org 100h start: mov ah,9 lea dx,dbMes int 21h ; mov ah,10 lea dx,dbMax int 21h ;I lea si,dbMax+2 lea di,dbBuf+2 xor cx,cx mov cl,dbIndex add si,cx mov cl,dbCount cld @@00: push cx push si mov cl,dbLen rep movsb pop si pop cx loop @@00 mov byte ptr[di],'$' mov ah,9 lea dx,dbBuf int 21h ;II lea si,dbMax lodsw xor cx,cx mov cl,ah mov di,si add di,cx mov byte ptr[di],'$' @@01: dec di mov al,[si] xchg al,[di] mov [si],al inc si cmp si,di jb @@01 mov word ptr[dbMax],': ' mov ah,9 lea dx,dbRes int 21h ret dbIndex db 5 dbLen db 10 dbCount db 6 dbMes db 10,13,'Enter string:$' dbRes db 10,13,'Result ' dbMax db 200,?,200 dup(?) dbBuf db 10,13 end start
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Код считывает строку, введенную пользователем, и сохраняет ее в буфере.
- Затем код повторяет определенный фрагмент строки, используя этот буфер, пока не будет достигнута требуемая длина.
- После этого код выводит полученную строку на экран. Список действий:
- Код подготавливает модель памяти и определяет точку входа в программу.
- Код считывает строку, введенную пользователем, и сохраняет ее в буфере.
- Код повторяет определенный фрагмент строки, используя этот буфер, пока не будет достигнута требуемая длина.
- Код выводит полученную строку на экран.
- Код завершает программу.