Как написать программу - Assembler
Формулировка задачи:
Привет всем. В Assemblere Я новичек и хочу чтобы вы мне помоглибы написать такую программу. Есть такие слова допустим как МОЙ ДОМ МОСКВА. Мне надо написать такую программу чтобы эти три слова былибы написаны с другой стороны. ОЙМ МОД АБКСОМ. Как понемаю это надо делать с помощью цикла?
Пожалуйста помогите.
Решение задачи: «Как написать программу»
textual
Листинг программы
.model small .386 dos_inp macro lbl, sz _ib_ struc max db sz ; наибольшая длина строки len db ? ; сюда вернется настоящая длина bf db sz dup(?) ; тут будет то, что ввели _ib_ ends lbl _ib_ <> endm .stack 100 .data req db 'Enter string:$' dos_inp buf, 80 .code start: mov ax, @data mov ds, ax mov es, ax ; Вывод на экран mov ah, 09h lea dx, req int 21h ; ввод строки mov ah, 0Ah lea dx, buf int 21h ; новая строка mov ax, 0D0Ah int 29h xchg al, ah int 29h lea si, buf.bf ; movzx cx, buf.len add si, cx dec si std @@: lodsb int 29h loop @B cld xor ax, ax int 16h ; выход mov ah, 4Ch int 21h end start
Объяснение кода листинга программы
Этот код на языке Assembler, и он осуществляет ввод строки с клавиатуры. Вот список действий, которые он выполняет:
- Дефинирует структуру данных для ввода строки, используя макрос
dos_inp. - Определяет буфер ввода-вывода, используя переменную
buf. - Выводит приглашение для ввода строки на экран.
- Осуществляет ввод строки с клавиатуры в буфер.
- Выводит новую строку на экран.
- Перемещает указатель начала строки в буфере в начало строки и устанавливает счетчик символов в 0.
- Пока счетчик символов не превышает длину строки, осуществляет вывод символа в буфер.
- Увеличивает счетчик символов на 1.
- Если счетчик символов равен 0, выходит из цикла.
- Устанавливает указатель начала строки в буфере на начало строки и осуществляет вывод строки на экран.
- Выполняет выход из программы.