Пользователь вводит их в строку, например 54321, а программа выводит 12345. Поиск не помог, сам тоже пока не могу разобраться как это сделать т.к. только начал изучать. Сейчас программа выводит какой-то мусор и не выдает результат сортировки... data segment para public PRINT MACRO STR ; макроподстановка для печати сообщений lea DX, STR mov AH, 9h ; 09h - функция вывода на экран int 21h ENDM message db 'Введите строку из чисел: $' message2 db 'По возрастанию: $' Max db 5 len db 0 massiv db 6 dup (?) data ends stck segment para stack dw 32 dup(?) stck ends code segment para public assume cs:code, ds:data, ss:stck start: PRINT message mov ax, data mov ds, ax mov dx, offset max mov ah, 10 int 21h mov bl, len xor bh, bh mov byte ptr massiv, '$' C: mov cx, data dec cx lea bx, max xor si, si B: mov ax, [bx + si] mov di, si A: add di, 2 mov dx, [bx + di] cmp ax, dx jl davaytuda mov [bx+di], ax mov [bx+si], dx davaytuda: mov dx, data shl dx, 1 cmp di, dx jnl A add si, 2 loop B xor si, si xor di, di dec bp cmp bp,0 jne c mov ah,1 int 21h mov ax, 4c00h int 21h PRINT message2 code ends end start
В чем собственно проблема? Не знаешь, как реализовать цикл или сам алгоритм? Алгоритм ведь простой: 1. Есть массив байт mas 2. Есть (переменная, регистр, стек) счетчик 3. Сначала она считает количество введенных символов например (регистр cx) 4. Далее просто делаешь условие пока не ноль cx, dec cx - и выводишь из памяти mas[cx] в теле цикла. Чтобы было с циклами проще по первой загоняй регистры в стек, перед циклом.