Вывод на экран упорядоченной строки - сначала цифры потом буквы - Assembler

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

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

Здравствуйте ребята. Искал пример работы со строкой. (выводить на екран нужно сначала буквы потом числа ) Никак не могу найти толкового примера. Если вдруг будет под руками - закиньте сюда. Буду очень благодарен.

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

textual
Листинг программы
stk segment stack
  db 256 dup (?)
stk ends
 
assume cs: code, ds:data
 
data segment
    buffer db 254,0,254 dup ('$')
    str1 db 'enter  string:', 0Dh, 0Ah, '$'
    str3 db 0Dh, 0Ah, '$'
    str2 db 'result:', 0Dh, 0Ah, '$'
data ends
 
code segment
start:
    mov ax, data
    mov ds, ax
    
    mov ah,09h
    mov dx, offset str1 
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer  
    int 21h
 
    mov ah,09h
    mov dx, offset str3
    int 21h
 
    mov cl,Buffer[1]
    xor ch,ch
    mov si,offset Buffer+2
    call Sort
 
    mov ah,09h
    mov dx, offset str2
    int 21h
 
    mov ah,09h
    lea dx, buffer+2
    int 21h
 
quit:
    mov ax, 4c00h
    int 21h
 
Sort    proc
        push    bx
        push    cx
        push    si
        push    di
 
        cmp     cx,     1
        jbe     @@End
 
        mov     di,     si    
        add     di,     cx
        dec     di
        mov     bx,     di
 
        dec     cx
@@ForI:                        
        mov     di,     bx
@@ForJ:                     
        cmp     byte ptr [di],  '9'+1  
        rcl     al,     1
        cmp     byte ptr [di-1],'9'+1  
        rcl     al,     1
        and     al,     03h           
 
        cmp     al,     01h     
        jne     @@Skip
        xchg    al,     [di-1]  
        xchg    [di],   al
        xchg    al,     [di-1]
 
@@Skip:
        sub     di,     1
        cmp     di,     si
        ja      @@ForJ
 
        add     si,     1
        loop    @@ForI
@@End:
        pop     di
        pop     si
        pop     cx
        pop     bx
        ret
Sort    endp
 
    code ends
    end start

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

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