پنل اس ام اس
صفحه: [1]   پایین
  چاپ صفحه  
نويسنده موضوع: اجرای یک برنامه  (دفعات بازدید: 1861 بار)
msdn
کاربر جدید
*

تشكرها : 4
آفلاین آفلاین

تعداد ارسال: 48



ديدن مشخصات
« : 19 آبان 1390,ساعت 19:22:36 »

سلام بر تمام دوستان.

من یه برنامه به زبان اسمبلی نوشتم (تو NotePad نوشته شده و با macro assembler هم کامپایل شده) اما با اینکه مطمئنم اون خطاهایی که کامپایلر ازم ایراد میگیره هیچ اشکالی نداره... اما متاسفانه پبغام خطا تولید می کنه.

برنامه در مورد اینه که ابندا تعدادی عدد از کاربر از ورودی خوانده شود (فقط اعداد طبیعی؛ یعنی اگر کاربر عدد صفر را وارد کرد خواندن اعداد خاتمه پیدا کرده و آرایه ی بدست آمده اعداد قبل از وارد کردن عدد صفر خواهد بود و چنانچه  کاربر یک عدد منفی وارد کرد برنامه پیغامی داده که عدد منفی است و دوباره از کاربر می خواد که عدد وارد کند) و بعد این اعداد در ارایه به شکل صعودی مرتب شوند (روش مرتب سازی دلخواه است ؛ من خودم حبابی استفاده کردم) و سپس این اعداد مرتب شده نمایش داده شوند و در آخر هم یک عدد از کاربر بگیرد و در آرایه جستجو کند که ایا این عدد وجود دارد یا نه و با توجه به وضعیت پیش آمده پیغانم مناسبی در خروجی نمایش دهد. (اینجا هم روش جستجو دلخواه است که من ساده ترینش یعنی خطی  رو انتخاب کردم).

حالا مشکل من اینه که این خطاها تو این خطوط برنامه که براتون میذارم چی هستند که من متوجه نمیشم؟؟ متعجب?
من تو  مکرو اسمبلر نوشتم و کامپایل کردم اما فکرنکنم اپرند دستورا و قالب کلیشون با تغییر کامپایلر تغییر کنه مثلا مگه چندجور دستور mov داریم؟ ممکنه ظاهرش عوض شه اما اپرنداش که نه؟

حالا من کدو میذارم یه نظری بکنید ببینید شما متوجه اشکال میشید؟

با تشکر فراوان.
کد:
کد:
.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed
max EQU 100

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data

temp byte ?
help byte ?
j_index byte ?
value byte 16 DUP (?)
array byte max DUP (?)
sort byte 16 DUP (?)
count byte 0
space byte " ",0
prompt1 byte "Enter Numbers...if You Enter Negativ Number You must"
byte "Enter another one ",cr,Lf
byte "And if it be ZERO Entering number will finish.",cr,Lf,0
prompt2 byte "number ? ",0
prompt3 byte cr,Lf,Lf,"Now Enter your Number to Search : ",0
prompt4 byte cr,Lf,Lf,"sorted Array is: ",cr,Lf,Lf,0
prompt5 byte cr,Lf,Lf,"You Entered Negativ number.. try again : ",0
found byte cr,Lf,Lf,"Your Desire Number Was Found !!!",0
NotFind byte cr,Lf,Lf,"Your Desire Number Is'nt in the Array",0

.CODE
_main:
StaRt:
LEA ebx,array
mov count,0
output prompt1
output prompt2
input value,16
atod value
cmp eax,0
jl again
again: output prompt5
jmp StaRt
je gotoContinue
mov [ebx],eax
inc count
inc ebx
jmp StaRt
gotoContinue:
SortStart: LEA ebx,array
mov edx,count
dec edx ;help=count-1
mov ecx,edx
form1: mov j_index,0
form2: cmp j_index,ecx
mov eax,ebx
add eax,1
jl compare
LOOP form1
cmp ecx,0
je endcompare
compare:
cmp [ebx],[eax]
jg changi
jmp follow

changi:
mov temp,[ebx]
mov [ebx],[eax]
mov [eax],temp
follow:
inc j_index
inc ebx
jmp form2

output prompt4
LEA ebx,array
endcompare: dtoa sort,[ebx]
output sort
output space
LOOP endcompare

Search12: mov ecx,count
LEA ebx,array
output prompt3
input value,16
atod value
forLsearch: cmp eax,[ebx]
je printFind
inc ebx
LOOP forLsearch
printNOTfind: output NotFind
jmp ENDi
printFind: output found
jmp ENDi

ENDi:

        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _main                   ; make entry point public

END                             ; end of source code


اینم خطاهایی که میده:
sortANDfind.asm(59): error A2070: invalid instruction operands
sortANDfind.asm(63): error A2070: invalid instruction operands
sortANDfind.asm(71): error A2070: invalid instruction operands
sortANDfind.asm(76): error A2070: invalid instruction operands
sortANDfind.asm(77): error A2070: invalid instruction operands
sortANDfind.asm(78): error A2070: invalid instruction operands
sortANDfind.asm(91): error A2070: invalid instruction operands

فق یه نکته :اون اعداد داخل پرانتز که تو خطاها اومده خطوط دارای خطا تو برنامه هستند.
خارج شده است
انجمن تخصصی استادان و دانشجویان کامپیوتر ایران
   

پنل اس ام اس
 خارج شده است
صفحه: [1]   بالا
  چاپ صفحه  
 
پرش به :