Переставить символы в строке, поменяв местами первый символ с последним, второй с предпоследним и т.д. - Assembler
Формулировка задачи:
Ребят, нужна ваша помощь. Вот у меня задание
Ввести с клавиатуры строку. Переставить в ней символы, поменяв местами первый символ с последним, второй с предпоследним и т.д. Вывести результаты на экран.
Программу я написал. Вот программный код. Только при запуске у меня идет зацикливание. Подскажите, что я сделал не так. И можете по возможности исправить. Буду очень благодарен.
data segment schet dw 1 OLD_CS dw ? OLD_IP dw ? data ends code segment assume cs:code, ds:data START: mov ax, DATA mov ds, ax mov ah, 35h mov al, 1Ch int 21h mov OLD_IP, bx mov OLD_CS, es push ds mov dx, offset NEW_1C mov ax, seg NEW_1C mov ds, ax mov ah, 25h mov al, 1Ch int 21h pop ds mov ax, 0B800h mov es, ax xor bx,bx mov di,0 lb: mov cx,1000 beg: call OBR loop beg inc bx cmp bx,1000 jne lb mov dx, OLD_IP mov ax, OLD_CS mov ds, ax mov ah, 25h mov al, 1Ch int 21h xor dx,dx mov dl,0ah mov ah,02h int 21h mov ax, di push -1 mov bx,10 l: mov dx,0 div bx push dx cmp ax,0 jne l l2: pop dx cmp dx,-1 je exit add dl,'0' mov ah,02h int 21h inc di mov [di], dl jmp l2 EXIT: mov ax, 4C00h int 21h NEW_1C proc far push ax push bx push cx push dx push ds push es mov ax, DATA mov ds, ax mov ax, 40h mov es, ax add di,1 pop es pop ds pop dx pop cx pop bx pop ax iret NEW_1C endp OBR proc rat push bp mov bp, sp push ax push si push di mov di, si add di,si mul si pop di pop si pop ax mov sp,bp pop bp ret OBR endp code ends end START
Решение задачи: «Переставить символы в строке, поменяв местами первый символ с последним, второй с предпоследним и т.д.»
textual
Листинг программы
org 100h jmp start mess0 db 13,10,'String: $' mess1 db 13,10,'Result: $' start: mov ah,9 mov dx,mess0 int 21h mov di,500h xor cx,cx mov ah,1 @@: int 21h cmp al,13 je @print stosb inc cx jmp @b @print: mov ah,9 mov dx,mess1 int 21h xchg si,di dec si std ; revers @@: lodsb int 29h loop @b exit: xor ax, ax int 16h int 20h
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д