Вывести строку в обратном порядке - Assembler (249536)

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

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

Здравствуйте, вот написал следующий код, но проблема в том что не выводится 1 символ строки, а так же откуда то лишний символ *.
Text    segment 
assume CS:text,DS:data
Begin: 
mov AX,data 
mov DS,AX 
 
mov ah,9       
mov dx,offset msg
int 21h 
        
mov AH,3Fh                  
mov DX,offset symbols2              
int 21h         
mov actlen,AX 

mov SI,0
mov DI,actlen
mov AL,symbols2(DI)
mov cx,actlen
rev:
mov symbols(SI),AL  
dec DI
inc SI  
mov AL,symbols2(DI)             
loop rev
 
mov AH,40h                  
mov CX,actlen
mov DX,offset symbols
int 21h 
        
int 20h    
 
text ends 
data segment    
msg db '>$'
actlen  dw 0        
symbols db 50 dup ('*')     
symbols2 db 50 dup ('*')            
data ends
 
end begin

Решение задачи: «Вывести строку в обратном порядке»

textual
Листинг программы
mov AL,symbols2(DI)

Объяснение кода листинга программы

  1. Переменная AL используется для хранения символа, который считывается из памяти по адресу symbols2(DI).
  2. Значение переменной DI используется для индексации массива symbols2, чтобы получить конкретный символ.
  3. Символы в массиве symbols2 считываются в обратном порядке, поэтому адрес symbols2(DI) будет указывать на последний символ в строке.
  4. При считывании символа в переменную AL он автоматически инвертируется, поэтому он будет в обратном порядке.
  5. Код не сохраняет символ в переменной AL, поэтому этот символ не будет отображаться.
  6. Код не выполняет никаких других действий после считывания символа, поэтому он просто останавливается.

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


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

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

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