Вывести строку в обратном порядке - 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)
Объяснение кода листинга программы
- Переменная
AL
используется для хранения символа, который считывается из памяти по адресуsymbols2(DI)
. - Значение переменной
DI
используется для индексации массиваsymbols2
, чтобы получить конкретный символ. - Символы в массиве
symbols2
считываются в обратном порядке, поэтому адресsymbols2(DI)
будет указывать на последний символ в строке. - При считывании символа в переменную
AL
он автоматически инвертируется, поэтому он будет в обратном порядке. - Код не сохраняет символ в переменной
AL
, поэтому этот символ не будет отображаться. - Код не выполняет никаких других действий после считывания символа, поэтому он просто останавливается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д