Заменить порядок символов во введенной строке на обратный - Assembler/TASM

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

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

Здравствуйте! Помогите, пожалуйста. Эта программа должна заменять порядок символов во введенной строке на обратный. Но я не могу скомпилировать ... Ввожу tasm.exe название.asm Но obj не появляется... Заранее спасибо
 .MODEL SMALL
            .STACK 100h
            .DATA
         MAXIMUM_STRING_LENGTH  EQU  1000
         StringToReverse        DB   MAXIMUM_STRING_LENGTH  DUP (?)
         ReverseString          DB   MAXIMUM_STRING_LENGTH  DUP (?)
            .CODE
            mov    ax,@Data
            mov    ds,ax             ; установить регистр DS таким
                                     ; образом, чтобы он указывал
            mov    ah,3fh            ; функция DOS чтения ввода
            mov    bx,0              ; описатель стандартного ввода
            mov    cx,MAXIMUM_STRING_LENGTH ; считать до максималь-
                                     ; ного числа символов
            mov    dx,OFFSET StringToReverse ; сохранить строку
            int    21h               ; получить строку
            and    ax,ax             ; были считаны символы?
            jz     Done              ; нет, конец
            mov    cx,ax             ; поместить длину строки в
                                     ; регистр СХ, который можно
                                     ; использовать, как счетчик
            push   cx                ; сохранить в стеке длину
                                     ; строки
            mov    bx,OFFSET StringToReverse
            mov    si,OFFSET ReverseString
            add    si,cx
            dec    si                ; указывает на конец буфера
                                     ; строки
         ReverseLoop:
            mov    al,[bx]           ; получить следующий символ
            mov    [si],al           ; сохранить символы в
                                     ; обратном порядке
            inc    bx                ; указатель на следующий
                                     ; символ
            dec    si                ; указатель на предыдущую
                                     ; ячейку buffer
            loop   ReverseLoop       ; переместить следующий
                                     ; символ, если он имеется
            pop    cx                ; извлечь длину строки
            mov    ax,40h            ; функция записи DOS
            mov    bx,1              ; описатель стандартного
                                     ; вывода
            mov    dx,OFFSET ReverceString ; напечатать строку
         Done:
            mov    ah,4ch            ; функция DOS завершения
                                     ; программы
            int    21h               ; завершить программу
            END

Решение задачи: «Заменить порядок символов во введенной строке на обратный»

textual
Листинг программы
 .MODEL SMALL
            .STACK 100h
            .DATA
         MAXIMUM_STRING_LENGTH  EQU  1000
         StringToReverse        DB   MAXIMUM_STRING_LENGTH  DUP (?)
         ReverseString          DB   MAXIMUM_STRING_LENGTH  DUP (?)
            .CODE
            Start:
            mov    ax,@Data
            mov    ds,ax             ; установить регистр DS таким
                                     ; образом, чтобы он указывал
            mov    ah,3fh            ; функция DOS чтения ввода
            mov    bx,0              ; описатель стандартного ввода
            mov    cx,MAXIMUM_STRING_LENGTH ; считать до максималь-
                                     ; ного числа символов
            mov    dx,OFFSET StringToReverse ; сохранить строку
            int    21h               ; получить строку
            and    ax,ax             ; были считаны символы?
            jz     Done              ; нет, конец
            mov    cx,ax             ; поместить длину строки в
                                     ; регистр СХ, который можно
                                     ; использовать, как счетчик
            push   cx                ; сохранить в стеке длину
                                     ; строки
            mov    bx,OFFSET StringToReverse
            mov    si,OFFSET ReverseString
            add    si,cx
            dec    si                ; указывает на конец буфера
                                     ; строки
         ReverseLoop:
            mov    al,[bx]           ; получить следующий символ
            mov    [si],al           ; сохранить символы в
                                     ; обратном порядке
            inc    bx                ; указатель на следующий
                                     ; символ
            dec    si                ; указатель на предыдущую
                                     ; ячейку buffer
            loop   ReverseLoop       ; переместить следующий
                                     ; символ, если он имеется
            pop    cx                ; извлечь длину строки
            mov    ax,40h            ; функция записи DOS
            mov    bx,1              ; описатель стандартного
                                     ; вывода
            mov    dx,OFFSET ReverseString ; напечатать строку
         Done:
            mov    ah,4ch            ; функция DOS завершения
                                     ; программы
            int    21h               ; завершить программу
            END Start

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


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

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

9   голосов , оценка 3.889 из 5
Похожие ответы