PDA

View Full Version : كمك براي اصلاح قطعه كد هاي زير



soonami
سه شنبه 12 دی 1391, 17:15 عصر
سلام دوستان ممك ن است تكه قطه ك هاي زير بگيد اشكالش كجاست

قطعه بر نامه اي بنوسيسيد كه محتواي يك آرايه 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

Delphi Coder
چهارشنبه 13 دی 1391, 15:29 عصر
خودتون باید خط به خط ذهنی اجرا کنید و بیبینید اشکالش کجاست. این برنامه به اولین عنصر غیر صفر که برخورد کنه میپره به exit. این یک اشکال. اگر باز هم اجرای ذهنی برنامه براتون مشکل هست برنامتون رو اسمبل و لینک کنید و از debug برای اجرای خط به خط برنامه اجرایی استفاده کنید.

soonami
چهارشنبه 13 دی 1391, 21:59 عصر
چرا به اولين صفر برسه مي پره مگه نگفتم بهش بره L2

Delphi Coder
شنبه 16 دی 1391, 03:23 صبح
یک بار دیگه پست منو بخونید لطفا

soonami
یک شنبه 17 دی 1391, 00:57 صبح
ميتونم به جاي exit به يه ليبل ديگه بگم بپره بعد اون جا inc si وبگم دوباره حلقه رو بررسي كنه ؟؟؟؟؟؟ l4: inc si loop l ???????????????? اين طوري درست ميشه ؟

Delphi Coder
یک شنبه 17 دی 1391, 02:12 صبح
inc si که داخل حلقه هست

Delphi Coder
یک شنبه 17 دی 1391, 02:14 صبح
این یه مدلشه

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

soonami
چهارشنبه 20 دی 1391, 11:06 صبح
ببخشيد دستور C L D و LOAD SB چي هست ؟؟؟؟؟؟؟؟ و براي معادل

soonami
چهارشنبه 20 دی 1391, 11:35 صبح
من كد شما رو يكم تغيير دادم ميشه بگيد درسته يا نه ؟؟؟

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

soonami
سه شنبه 03 بهمن 1391, 18:14 عصر
ميشه جواب بديد

Delphi Coder
چهارشنبه 04 بهمن 1391, 21:37 عصر
درسته اما کدی که من نوشتم سریعتره نسبت به کد شما.
میتونید یه برنامه اسمبلی بنویسید و به سادگی با دیباگر تست کنید ببینید درست هست یا نه.