مرتب کردن یک آرایه به زبان اسمبلی ( با روش Indexing و Indirect)
(فورییییییی)
سلام
برنامه ی مرتب کردن آرایه رو با دو روش Indexing و Indirect میخوام
يه توضيح كوچولو :
Indexing یا همون شاخص بندی همونطور که می دونید یعنی این که مثلا" از این ایندکس استفاده کنیم...
و indirect یا همون غیر مستقیم هم یعنی این که از [BX] استفاده کنیم یا هر ایندکس دیگری بدون این که پشتش اسم بگذاریم...
فرض کنیم که آرایه هم این باشه ...
کد:
a dw 7,1,12,21,48
dw 71,3,10,5,35
خيلي خيلي ممنونم:11:
خودمان مینویـــــسیم ...شما تصحیح کنید !!!
سلام...
خوب گویا اینقدر این برنامه سخت بوده که کسی نتونست جواب بده !!!
عیبی نداره ...
خودم برنامه ای رو که وشتم و برای استادم فرستادم رو اینجا مینویسم...شاید این سوال خیلی های دیگه باشه .... پس مینویسمش و شما تصحیحش کنید اگر ایرادی داره ... تا به درد دیگران هم بخوره ...
ممنون :11:
این برنامه ی مرتب کردن آرایه با روش ایندکسه
کد:
.MODEL small
.STACK 100
.DATA
a dw 7,1,12,21,48
dw 71,3,10,5,35
count dw 10
.CODE
main proc far
mov ax,@data
mov ds,ax
mov cx,count
dec cx ;choon agar 10 ta khone darim, 9 ta moghayese anjam midim
loop1:mov si,0
loop2:mov ax,a[si]
mov bx,a[si+1]
cmp ax,bx
ja change ;jump Greater
loop3:add si,2
cmp si,cx
jnz loop2 ;jump not Equal
loop loop2
jmp finish
change:mov a[si+1],ax
mov a[si],bx
jmp loop3
mov AH,09h
LEA DX,a
INT 21h
mov ax,4c00h
INT 21h
finish:
main endp
end main
با روش غیر مستقیم رو هم نوشتم ولی فکر میکنم خیلی ایراد دشته باشه !!!
کد:
.MODEL small
.STACK 100
.DATA
a dw 7,1,12,21,48
dw 71,3,10,5,35
count dw 10
.CODE
main proc far
mov ax,@data
mov ds,ax
mov cx,count
dec cx ;choon agar 10 ta khone darim, 9 ta moghayese anjam midim
LEA SI,a
loop2:mov ax,[SI]
mov bx,[SI+1]
cmp ax,bx
ja change ;jump Greater
loop3:add SI,2
cmp SI,cx
jnz loop2 ;jump not Equal
loop loop2
jmp finish
change:mov [SI+1],ax
mov [SI],bx
jmp loop3
mov AH,09h
LEA DX,a
INT 21h
mov ax,4c00h
INT 21h
finish:
main endp
end main