كمك براي اصلاح قطعه كد هاي زير
سلام دوستان ممك ن است تكه قطه ك هاي زير بگيد اشكالش كجاست
قطعه بر نامه اي بنوسيسيد كه محتواي يك آرايه 10 بايتي بررسي كندا گر عدد 0 بيش از 3 بار تكرار شده بود مقدار ثبات dh را مساوي 1 قرار دهد
گفتم يه ثبات ميگيرم مقدارش رو 0 ميزارم بعد با آدرس خانه هاي حافظه مقايسه نيكنم اگر 0 بود يكي بهش اضافه كنه
بعد اون ثبات با 3 مقايسه كردم گفتم اگر بزرگتر مساوي بود مقدار يDH 1 كنه
mov cx,11
mov si,offset array
mov bl,0
dec si
l:inc si
cmp [si],0
je l2
jpm exit
l2: inc bl
cmp bl,3
jae l3
loop l
l3 mov dh,1
exit: HKOROJ
نقل قول: كمك براي اصلاح قطعه كد هاي زير
خودتون باید خط به خط ذهنی اجرا کنید و بیبینید اشکالش کجاست. این برنامه به اولین عنصر غیر صفر که برخورد کنه میپره به exit. این یک اشکال. اگر باز هم اجرای ذهنی برنامه براتون مشکل هست برنامتون رو اسمبل و لینک کنید و از debug برای اجرای خط به خط برنامه اجرایی استفاده کنید.
نقل قول: كمك براي اصلاح قطعه كد هاي زير
چرا به اولين صفر برسه مي پره مگه نگفتم بهش بره L2
نقل قول: كمك براي اصلاح قطعه كد هاي زير
یک بار دیگه پست منو بخونید لطفا
نقل قول: كمك براي اصلاح قطعه كد هاي زير
ميتونم به جاي exit به يه ليبل ديگه بگم بپره بعد اون جا inc si وبگم دوباره حلقه رو بررسي كنه ؟؟؟؟؟؟ l4: inc si loop l ???????????????? اين طوري درست ميشه ؟
نقل قول: كمك براي اصلاح قطعه كد هاي زير
نقل قول: كمك براي اصلاح قطعه كد هاي زير
این یه مدلشه
mov cx,10
lea si,myarray
xor bl,bl ; bl=0
cld
lp:
lodsb
or al,al
jnz cnt
inc bl
cnt:
loop lp
cmp bl,3
jb exit
mov dh,1
exit:
HKOROJ
نقل قول: كمك براي اصلاح قطعه كد هاي زير
ببخشيد دستور C L D و LOAD SB چي هست ؟؟؟؟؟؟؟؟ و براي معادل
نقل قول: كمك براي اصلاح قطعه كد هاي زير
من كد شما رو يكم تغيير دادم ميشه بگيد درسته يا نه ؟؟؟
mov cx,10
mov bl,0
mov si, offset array
l: cmp [si],0
jnz l2
inc bl
l2: inc si
loop l
cmp bl,3
jb exit
mov dg,1
exit: khoroj
نقل قول: كمك براي اصلاح قطعه كد هاي زير
نقل قول: كمك براي اصلاح قطعه كد هاي زير
درسته اما کدی که من نوشتم سریعتره نسبت به کد شما.
میتونید یه برنامه اسمبلی بنویسید و به سادگی با دیباگر تست کنید ببینید درست هست یا نه.