Перестановки (сдвиги) - Assembler
Формулировка задачи:
Помогите написать, в формате .com и отладить в debug'е (dosbox).
Ввести строку символьных данных, задавая буфер равный 18 байт. Переставить символы в строке следующим образом: первый символ и второй оставить без изменения на место третьего поставить "1", четвертый и пятый оставить без изменения, а на место шестого поставить "2" и т. д. Выдать полученный буфер символов в 6 строку экрана, начиная с 10 позиции.
Решение задачи: «Перестановки (сдвиги)»
textual
Листинг программы
;.386 ; раскомментируй для тасма + ;.model tiny ; ^ | ;.stack 100h ; ^ | ;.code ; ^------------------------+ ; fasm code...... org 100h ; делаем комку jmp start ; mess1 db 13,10,' String: $' buff db 18 dup(0),'$' ; буфер для строки start: mov ah,9 ; запрос на ввод строки mov dx,mess1 ; int 21h ; mov cx,18 ; символов для ввода mov di,buff ; адрес приёмника строки mov ah,1 ; ввод с эхом! input: int 21h ; stosb ; сохраняем символ в DI loop input ; мотаем СХ-раз.. mov di,buff ; адрес буфера со-строкой mov bx,di ; add bx,18 ; ВХ будет указывать на конец строки mov al,'1' ; символ для записи cycle: add di,2 ; пропускаем в буфере 2 символа stosb ; запись AL в DI inc al ; меняем символ на следующий cmp bx,di ; конец строки? jnz cycle ; нет - на повтор.. mov ah,2 ; курсор на позицию! xor bx,bx ; mov dh,6 ; строка mov dl,10 ; столбец int 10h ; mov ah,9 ; выводим буфер на экран! mov dx,buff ; int 21h ; exit: xor ax,ax ; ждём клавишу.. int 16h ; int 20h ; на выход! ;end start ; раскомментируй для тасма ; а так-же измени MOV на LEA все DX/DI
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д