Скопировать в строку s2 каждый 3-ий символ из строки s1 - Assembler
Формулировка задачи:
;Помогите пожалуйста , код может выводить только один третий символ , а мне нужно , что бы мог выводить каждый .model small .data c1 db 'Enter the text',0Dh,0Ah,'$' s1 db 255,?,255 dup (?) s2 db 0Dh,0Ah,7 dup ('$') nl db 10,13,'$' .code start: mov ax,@data mov ds,ax mov es,ax mov ax,3 int 10h mov ah,9 mov dh,0 mov dx,offset c1 int 21h mov ah,0Ah mov dx,offset s1 int 21h lea dx,nl mov ah,09h int 21h mov si,offset [s1+4] mov di,offset s2 lodsb stosb inc si mov ah,9 mov dx,offset s2 int 21h mov ah,0 int 16h mov ah,4Ch int 21h end start
Решение задачи: «Скопировать в строку s2 каждый 3-ий символ из строки s1»
textual
Листинг программы
;Помогите пожалуйста , код может выводить только один третий символ , а мне нужно , что бы мог выводить каждый .model small .stack 100h .data c1 db 'Enter the text',0Dh,0Ah,'$' s1 db 255,?,255 dup (?) s2 db 0Dh,0Ah,7 dup ('$') nl db 10,13,'$' .code start: mov ax,@data mov ds,ax mov es,ax mov ax,3 int 10h mov ah,9 mov dh,0 mov dx,offset c1 int 21h mov ah,0Ah mov dx,offset s1 int 21h lea dx,nl mov ah,09h int 21h mov cx,0 mov cl,[s1+1] jcxz @@SkipCopy mov ax,cx mov cl,3 div cl mov cx,0 mov cl,al jcxz @@SkipCopy lea si,[s1+2+2] lea di,[s2] @@For: mov al,[si] mov [di],al add si,3 add di,1 loop @@For @@SkipCopy: mov ah,9 mov dx,offset s2 int 21h mov ah,0 int 16h mov ah,4Ch int 21h end start
Объяснение кода листинга программы
В этом коде происходит следующее:
- Строка ввода запрашивается с помощью
mov ah,9
(функция ввода строки) и выводится в консоль с помощьюmov dx,offset c1 int 21h
(первая строка ввода). - Затем происходит чтение строки с помощью
mov dx,offset s1 int 21h
(функция ввода строки). - Далее начинается цикл, который проходит по каждому третьему символу в строке.
- Если символ найден, он копируется в строку
s2
с помощьюlea si,[s1+2+2] lea di,[s2] mov al,[si] mov [di],al add si,3 add di,1 loop @@For
. - После завершения цикла выводится строка
s2
с помощьюmov ah,9 mov dx,offset s2 int 21h
. - Затем программа завершается с помощью
mov ah,0 int 16h
(выход из программы).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д