ورود

View Full Version : سوال: انتساب ورودی به آرایه



Save.Your_Life
دوشنبه 19 بهمن 1388, 16:35 عصر
سلام به دوستان برنامه نویس دات اورگ! ....
یه مشکل کوچیک اسمبلی داشتم اگر کسی از دوستان بتونه کمکم کنه ممنون میشم ...
میخوام 20 رشته ی عددی رو بگیرم و تو آرایه ای ذخیره کنم، خودم فکر می کنم دستور انتسابم ایراد داشته باشه
mov [si],dx
اساتید محترم اگر ایراد برنامه رو ذکر کنن ممنون میشم


.model small
.data
array db 20 dup(?)
maxlen db 10
actlen db ?
string db 10 dup(?)
enter db 13,10,'$'
str1 db "Please Enter The Number: $"
maxlen2 db 10
actlen2 db ?
string2 db 10 dup(?)
str2 db "Yes$"
str3 db "No$"
.code
main:
mov ax,@data
mov ds,ax
lea si,array
lea di,string
mov si,0
mov cx,5 ; or 20
up:
mov ah,10
lea dx,maxlen
int 21h
mov [si],dx ;; ?????
inc si
mov ah,9
lea dx,enter
int 21h
loop up
;
lea si,array
mov ah,9
lea dx,enter
int 21h
mov ah,9
lea dx,str1
int 21h
mov ah,10
lea dx,maxlen2
int 21h
mov si,0
;

mov cx,5 ; or 20
up2:
cmp [si],dx
je exit
inc si
loop up2
jmp exit2
exit:
mov ah,9
lea dx,enter
int 21h
mov ah,9
lea dx,str2
int 21h
jmp ex3

exit2:
mov ah,9
lea dx,enter
int 21h
mov ah,9
lea dx,str3
int 21h
ex3:
mov ah,4ch
int 21h

end mainپیشاپیش ممنون از توجهتون ....

tdkhakpur
دوشنبه 19 بهمن 1388, 18:27 عصر
به الگوریتم کار شما توجه نکردم ولی بصورت سینتکس این شکلی باید باشد.


mov word ptr [si], dx ;; ?????

Save.Your_Life
دوشنبه 19 بهمن 1388, 20:41 عصر
به الگوریتم کار شما توجه نکردم ولی بصورت سینتکس این شکلی باید باشد.


mov word ptr [si], dx ;; ?????


مرسی از راهنمایی، تصحیح کردم، بازم تریس کردم منطقا درست ِ ولی بازم به جواب نمیرسم، اگر وقت کردید ممنون میشم نگاهی به الگوریتم بندازید.
این برنامه باید 20 رشته ی عددی رو دریافت کنه در آرایه ذخیره کنه، یک عدد بگیره در صورت وجود یا عدم وجود در آرایه پیغام مناسب بده.
مرسی از توجهتون ....

tdkhakpur
سه شنبه 20 بهمن 1388, 22:05 عصر
خب اگر با اسمبلی هم نمی نوشتید احتیاج به الگوریتم بهتری داشت برای اینگونه کارها بهتره برنامه را با زبان سطح بالا نوشته بعد آنرا تبدیل به اسمبلی کنید تا بهتر و زودتر به نتیجه برسید.


.model small
.data
arraylen db 10 dup(0)
array db 50 dup('$')
maxlen db 10
actlen db ?
string db 10 dup(?)
enter db 13, 10, '$'
str1 db "Please Enter The Number: $"
maxlen2 db 10
actlen2 db ?
string2 db 10 dup(?)
YesTxt db "Yes$"
NoTxt db "No$"
.code
main:
mov ax,@data
mov ds,ax
lea bx, array
mov cx,5 ; or 20
lea bp, arraylen
up:
push cx
lea si, maxlen
call getstr
mov al, actlen ; put text len in array
mov byte ptr [bp], al
inc bp
mov cx, 0
mov cl, actlen
lea si, string ; source address
mov di, bx ; distanation address
lp1:
mov al, byte ptr [si]
mov byte ptr [di], al
inc si
inc di
mov byte ptr [di], '$'
loop lp1
add bx, 10 ; next string pos in array
lea si, enter ; get in to next line or feed line
call putstr
pop cx
loop up ; get up 5 str
;
lea si, str1 ; put command prompt or question message
call putstr
lea si,maxlen2
call getstr
mov cx,5 ; or 20
lea bx, array
lea bp, arraylen
up2:
push cx
mov al, byte ptr [bp]
inc bp
cmp actlen2, al
jne next
lea si, string2
mov di, bx
mov cx, 0
mov cl, actlen2
lp2:
mov al, byte ptr [si]
cmp byte ptr [di], al
jne next
loop lp2
je exit ; YES
next:
add bx, 10
pop cx
loop up2
jmp exit2 ; NO
exit:
lea si, enter ; feed line
call putstr
lea si, YesTxt ; put YES string
call putstr
jmp ex3
exit2:
lea si, enter ; feed line
call putstr
lea si, NoTxt ; put No string
call putstr
ex3:
mov ah,4ch
int 21h
; str parameter loocation must be in si or address of parameter
getstr proc
push ax
push dx
push bx
push cx
push bp
;------------------------
mov ah,10
mov dx,si
int 21h ; get on string with data parameter
;------------------------
pop bp
pop cx
pop bx
pop dx
pop ax
ret
getstr endp
; str loocation must be in si or address of str
putstr proc
push ax
push dx
push bx
push cx
push bp
;------------------------
mov ah,9
mov dx,si
int 21h ; put str terminater with $
;------------------------
pop bp
pop cx
pop bx
pop dx
pop ax
ret
putstr endp
end main

Save.Your_Life
چهارشنبه 21 بهمن 1388, 13:25 عصر
خیلی ممنون tdkhakpur عزیز لطف کردی:لبخندساده: ...
بله حق با شماست بهتر میشه به نتیجه رسید، اسمبلیم زیاد خوب نیست یکم مشکل به وجود اومد، با مطالب و برنامه هایی که بقیه دوستان عزیز توی انجمن قرار دادن بهتر میشه:چشمک: .....