View Full Version : راهنمايي براي نوشتن بدست آوردن تعداد
soonami
جمعه 24 آذر 1391, 12:17 عصر
دوستان من يه ثبات دارم و بهش يك مقدار داد ميخواهم تعداد 0 و 1 بدست بيارم اصولش اينه كه
من بعد از مقدار دهي شروع كنم به عددم 8 بار شيفت دادن و مقدار CF مقايسه كنم اگر برابر بود .... و اگر برابر نبود .....
___________
ميدونم غلط نوشتم :دي
MOV AL,78H
L:MOV CL,1
SHR EL,CL
CMP CF,BL
JE
INC BL
LOOP L
JNE
INC DL
JMP L
هدف : برنامه اي بنويسيد ه مقدار موجود در ثبات al را 78 در نظر گرفته وسپس تعداد 1 ها را در ثبات bl ئ تعداد 0 هاي آن را در ثبات dl ذخيره كند
__________
سوال دانشگاهي هست منم ميخوام ياد بگيرم
shahmohammadi
جمعه 24 آذر 1391, 15:29 عصر
سلام.
:متعجب:اين چيه كه نوشتين.
1. قبل از اينكه از bl و dl استفاده كنيد مقدار اوليه بديد.
2. bl=8, dl=0
3.يه حلقه ايجاد كنيد با 8 گام.
mov cx,8
lbl00:
.
.
.
Loop lbl00;
4. در هر گام اول يك قدم al رو شيفت بديد.
5. اگه كري 1 بود بپر به EndIf.
6. اگر نپريد (يعني 0 بود) به ديال يكي اضافه كن و از بيال يكي كم كن.
jc EndIf
inc dl;
dec bl;:کف:
EndIf:
فكر كنم چيزي براي ياد دادن نمونده باشه، يكم تلاش كنيد مينويسد.:تشویق:.
soonami
جمعه 24 آذر 1391, 20:56 عصر
مي دونم توي اين زمينه يكم مشكل دارم ببين درست با تفاسل شما
mov dl , 0
mov bl , 8
mov cx,8
loop 00
L:MOV al,78h
mov cl,1
SHR al,CL
cmp cf,1
je n:
inc dl
dec bl
n:exit
loop lbl 00
shahmohammadi
جمعه 24 آذر 1391, 21:19 عصر
از اين كد معلومه فقط همينطوري چند تا متن رو بدون فكر كردن كنار هم چاپ كرديد.
اگر كمي فكر كنيد خودتون ميتونيد بنويسد.
سوال دانشگاهي هست منم ميخوام ياد بگيرم
ياد بگيريد كه حل كنيد يا ياد بگيريد كه جواب نهايي چي هست (كه همون در خواست پروژه دانشجويي هست)؟ .
soonami
جمعه 24 آذر 1391, 21:33 عصر
دوست عزيز من اگر كد مي خواستم نمي گفتم الانم كد نمي خواهم از شما
به فر ض مثال الان شما اين به من داديد و من 1 نمره يا + گرفتم فردا تو امتحان يه سوال مشابه اين بياد نت هست ؟؟؟ شما هستيد ؟؟؟
آدم بايد به فكر آينده باشه نه اينكه فقط كوتاه بين باشه
shahmohammadi
جمعه 24 آذر 1391, 21:52 عصر
دوست عزيز من اگر كد مي خواستم نمي گفتم الانم كد نمي خواهم از شما
به فر ض مثال الان شما اين به من داديد و من 1 نمره يا + گرفتم فردا تو امتحان يه سوال مشابه اين بياد نت هست ؟؟؟ شما هستيد ؟؟؟
آدم بايد به فكر آينده باشه نه اينكه فقط كوتاه بين باشه
اگه من به نظر شما كوتاه بينم، اصلا شما همون كوتاهشم مي ديديد كه اين قدر گرامرتون ضعيف نبود. هم عنوانتون از لحاظ دستوري نادرسته هم جملاتي كه در بالا نوشتيد.
soonami
جمعه 24 آذر 1391, 22:08 عصر
من گفتم كوتاه بينيد ؟؟؟
چرا نارا حت ميشويد و عكس العمل نشان ميدهيد من از شما ممنونم كه الگوريتم كار گفتيد و قصد بي احترامي ندارم به شما
من گرامرم ضعيفه چه ربطي به كوتاه يا بنلد بيني داره ؟؟؟؟؟
به هر حال من عذر خواهي ميكنم امشب كد مينويسم مي زارم شما
xman_1365_x
شنبه 25 آذر 1391, 11:05 صبح
با سلام،دوستان لطفا بحث حاشیه ای نکنید!
هدف : برنامه اي بنويسيد ه مقدار موجود در ثبات al را 78 در نظر گرفته وسپس تعداد 1 ها را در ثبات bl ئ تعداد 0 هاي آن را در ثبات dl ذخيره كند
با روش های زیادی میشه نوشت اما با استفاده ار شیفت کردن بیت های باید از دستور مثلا RCR استفاده کنید که بتونید متوجه بشین چه مقداری از AL خارج شده
به کد زیر توجه کنید:
STC ; set carry (CF=1).
MOV AL, 1Ch ; AL = 00011100b
RCR AL, 1 ; AL = 10001110b, CF=0.
همونطور که میبینید با یک بار چرخش بیت ها در این مثال مقداری که از سمت راست خارج شده در ثبات فلگ قرار گرفته حالا کافیه شما شرطی بزارین با استفاده از (JC or JNC) تا بتونید برای تشخیص صفر یا یک ازش استفاده کنید و چون 8 بیت هست یک حلقه کلی که 8 بار تکرار شه
موفق باشید
soonami
جمعه 01 دی 1391, 08:46 صبح
اينم كد برنامه نوشتم
mov al,78h
mov cx,08
mov bl,00
mov dl,00
l:
ror al,1
jnc cp
inc bl
loop l
cp:inc dl
loop l
امتحان كردم كار ميكنه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.