Перестановки (сдвиги) - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д