如何扩展此代码以接受两位数或更多的数字进行排序

时间:2018-12-24 10:59:49

标签: assembly x86-16 emu8086

嘿,我在下面的代码中对一些条目号进行了排序,它只接受1位数字,我想扩展它以接受2位或更多位数进行排序 有没有人对此有解决方案?我的作业 它必须从用户那里获取数字

其数据段:

 data segment
 ; add your data here!
 data1 dw 10 dup(?) 
 temp dw dup(0)
 pe db '        hi          '
 pea db 'Enter some 1 digit numbers$'
 ends

其堆栈段:

 stack segment
 dw   128  dup(0)
 ends

及其代码段:

 code segment
 start:
 ; set segment registers:
 mov ax, data
 mov ds, ax
 mov es, ax     
 mov dh,1    


  ;////////////////////////////////  
             mov cx,18
             lea di,pe
             mov ah,02h
             loo:
             mov dl,[di]
             int 21h
             inc di
             loop loo
             ;
  ;///////////////////////////////
             ;
                 call mahdi
             ;
  ;////////////////////////////// 
             mov ah,02h
             mov cx,40
             lea di,pea
  loor:
             mov dl,[di]
             int 21h
             inc di
             loop loor
  ;/////////////////////////////
             ;        
             call mahdi
             ;
             ;
             call mahdi
             ;
             ;
   ;////////////////////////////         
            lea si,data1
            mov bl,10
            call mahdi
            call mahdi    
  ;////////////////////////////
  looot:                 
                call mahdi
                mov ah,01h
                int 21h
                sub al,48
                mov [si],al
                inc si
                dec bl
                jnz looot
  ;/////////////////////////////
             call mahdi
             call mahdi
  ;////////////////////////////              
     mov di,offset data1+9
     mov si ,offset data1  
   ;///////////////////////////
             dec si
     amh:
             inc si

    mov di,offset data1+9

            cmp si,di
            ja az  
  ;///////////////////////////// 
  back: 
            mov al,[si]
            cmp al,[di] 
            jb jump
            dec di 
            cmp si,di 
            jae amh 
            jmp back 
  ;/////////////////////////////
  jump:
            xchg al,[di]
            mov [si],al
            dec di
            cmp si,di 
            jae amh
            jmp back
   az:  
     mov dh,10
     lea si,data1 
   amin:
     mov ah,0eh
     mov al,[si]
     add al,48
     mov cx,1
     mov bh,00h
     mov bl,07h
     int 10h  
     ;
     ;
     mov ah,0eh
     mov al,22
     mov cx,1
     mov bh,00h
     mov bl,07h
     int 10h
     inc si
     dec dh
     jz  asd
     jmp amin
   asd: 
     mov ah,1
     int 21h
     mov ax, 4c00h 
     int 21h 
   ;/////////////////////////////////////

和排序过程:

  mahdi proc 
             mov ah,02
             mov bh,00h
             inc dh
              mov dl,0
             int 10h  
             ret
             endp    


  ends

   end start ; set entry point and stop the assembler.

0 个答案:

没有答案