Перестановки (сдвиги) - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите написать, в формате .com и отладить в debug'е (dosbox).
Ввести строку символьных данных, задавая буфер равный 18 байт. Переставить символы в строке следующим образом: первый символ и второй оставить без изменения на место третьего поставить "1", четвертый и пятый оставить без изменения, а на место шестого поставить "2" и т. д. Выдать полученный буфер символов в 6 строку экрана, начиная с 10 позиции.

Решение задачи: «Перестановки (сдвиги)»

textual
Листинг программы
  1. ;.386                    ; раскомментируй для тасма +
  2. ;.model tiny             ; ^                        |
  3. ;.stack 100h             ; ^                        |
  4. ;.code                   ; ^------------------------+
  5.  
  6. ; fasm code......
  7. org 100h                       ; делаем комку
  8. jmp start                      ;
  9.  
  10. mess1   db  13,10,' String: $'
  11. buff    db  18 dup(0),'$'      ; буфер для строки
  12.  
  13. start:  mov   ah,9             ; запрос на ввод строки
  14.         mov   dx,mess1         ;
  15.         int   21h              ;
  16.         mov   cx,18            ; символов для ввода
  17.         mov   di,buff          ; адрес приёмника строки
  18.         mov   ah,1             ; ввод с эхом!
  19. input:  int   21h              ;
  20.         stosb                  ; сохраняем символ в DI
  21.         loop  input            ; мотаем СХ-раз..
  22.  
  23.         mov   di,buff          ; адрес буфера со-строкой
  24.         mov   bx,di            ;
  25.         add   bx,18            ; ВХ будет указывать на конец строки
  26.         mov   al,'1'           ; символ для записи
  27. cycle:  add   di,2             ; пропускаем в буфере 2 символа
  28.         stosb                  ; запись AL в DI
  29.         inc   al               ; меняем символ на следующий
  30.         cmp   bx,di            ; конец строки?
  31.         jnz   cycle            ; нет - на повтор..
  32.  
  33.         mov   ah,2             ; курсор на позицию!
  34.         xor   bx,bx            ;
  35.         mov   dh,6             ; строка
  36.         mov   dl,10            ; столбец
  37.         int   10h              ;
  38.  
  39.         mov   ah,9             ; выводим буфер на экран!
  40.         mov   dx,buff          ;
  41.         int   21h              ;
  42.  
  43. exit:   xor   ax,ax            ; ждём клавишу..
  44.         int   16h              ;
  45.         int   20h              ; на выход!
  46. ;end start                     ; раскомментируй для тасма
  47.                                ; а так-же измени MOV на LEA все DX/DI

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут