iamir4g
شنبه 08 آذر 1393, 10:39 صبح
با عرض سلام
استاد برنامه ای به شرح : 20عدد حداقل 4 رقمی از ورودی بگیرید و در ارایه ذخیره کنید و سپس ان ها را sortکنید.
من این برنامه رو نوشتم ضمیمه کردم ولی اشکالی دارد
خواهشا راهنمایی کنید ممنون
اینم کدش
; multi-segment executable file template.
data segment
; add your data here!
Arr DW 20 dup(?)
pkey db "press any key...$"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov cl,20
nextnumber:mov si,0
mov ch,4
getdigit:mov ah,7h
int 21h
cmp al,0Dh
jnz checkdigit
cmp ch,4
je getdigit
jmp putinarr
checkdigit:cmp al,30h
jb getdigit
cmp al,39h
ja getdigit
mov dl,al
mov ah,02
int 21h
sub al,30h
mov bl,al
mov ax,10
mul si
mov si,ax
mov bh,0
add si,bx
dec ch
jnz getdigit
putinarr:mov arr[di],si
add di,2
dec cl
jnz nextnumber
;sort
mov ch,19
mov si,0
l2:mov cl,ch
mov di,si
l1:add di,2
mov ax,arr[si]
cmp ax,arr[di]
jbe nochange
xchg ax,arr[di]
mov arr[si],ax
nochange: dec cl
jnz l1
add si,2
dec ch
jnz l2
;show
mov bx,10
mov ch,20
mov si,0
t3:mov cl,0
t1:mov dx,0
mov ax,arr[si]
div bx
push dx
inc cl
cmp ax,0
jnz t1
t2:pop dx
add dl,30
mov ah,02h
int 21h
dec cl
jnz t2
add si,2
dec ch
jnz t3
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
استاد برنامه ای به شرح : 20عدد حداقل 4 رقمی از ورودی بگیرید و در ارایه ذخیره کنید و سپس ان ها را sortکنید.
من این برنامه رو نوشتم ضمیمه کردم ولی اشکالی دارد
خواهشا راهنمایی کنید ممنون
اینم کدش
; multi-segment executable file template.
data segment
; add your data here!
Arr DW 20 dup(?)
pkey db "press any key...$"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov cl,20
nextnumber:mov si,0
mov ch,4
getdigit:mov ah,7h
int 21h
cmp al,0Dh
jnz checkdigit
cmp ch,4
je getdigit
jmp putinarr
checkdigit:cmp al,30h
jb getdigit
cmp al,39h
ja getdigit
mov dl,al
mov ah,02
int 21h
sub al,30h
mov bl,al
mov ax,10
mul si
mov si,ax
mov bh,0
add si,bx
dec ch
jnz getdigit
putinarr:mov arr[di],si
add di,2
dec cl
jnz nextnumber
;sort
mov ch,19
mov si,0
l2:mov cl,ch
mov di,si
l1:add di,2
mov ax,arr[si]
cmp ax,arr[di]
jbe nochange
xchg ax,arr[di]
mov arr[si],ax
nochange: dec cl
jnz l1
add si,2
dec ch
jnz l2
;show
mov bx,10
mov ch,20
mov si,0
t3:mov cl,0
t1:mov dx,0
mov ax,arr[si]
div bx
push dx
inc cl
cmp ax,0
jnz t1
t2:pop dx
add dl,30
mov ah,02h
int 21h
dec cl
jnz t2
add si,2
dec ch
jnz t3
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.