PDA

View Full Version : سوال: مجموع عناصر آرایه پنج عنصری x از نوع double word



trminator
شنبه 06 شهریور 1389, 13:10 عصر
سلام
لطفا جواب این سوالات زیر رو برای من تشریح کنید:

1. قطعه برنامه ای بنویسید که مجموع عناصر آرایه پنج عنصری X از نوع double word را محاسبه نماید.

2. قطعه برنامه زیر را به زبان اسمبلی تبدیل نمایید.

X,Y,Z,W:1..20;
W:=X+Y*Z-W+100

xman_1365_x
یک شنبه 07 شهریور 1389, 05:13 صبح
سلام
لطفا جواب این سوالات زیر رو برای من تشریح کنید:

1. قطعه برنامه ای بنویسید که مجموع عناصر آرایه پنج عنصری X از نوع double word را محاسبه نماید.

2. قطعه برنامه زیر را به زبان اسمبلی تبدیل نمایید.

X,Y,Z,W:1..20;
W:=X+Y*Z-W+100


=======================================
1-


x dd 1,2,3,4,5
sum dd 0
mov di,2
add ax,x
adc dx,x[di]
add di,2
add ax,x[di]
adc dx,x[di+2]
add di,4
add ax,x[di]
adc dx,x[di+2]
add di,4
add ax,x[di]
adc dx,x[di+2]
add sum,ax
adc sum+2,dx


2-رابطه برحسب اولويت اجراي عملگرها به اين صورت ميشه كه
x+(y*z)-w+100
اول داخل پرانتز بعد ضرب و تقسيم و بعد جمع و تفريق در صورت موجود بودن عملگرهاي مساوي از چپ اولويت بالا تر اجرا ميشه الا آخر


x db ?
y db ?
z db ?
w db ?
mov al,y
mul z ;ax=y*z
add al,x
sub al,w
add al,100

سوالي داشتين بپرسين بگم.

trminator
یک شنبه 07 شهریور 1389, 19:14 عصر
در سوال دوم مقصود از 1..20 چی هست؟

xman_1365_x
یک شنبه 07 شهریور 1389, 22:23 عصر
در سوال دوم مقصود از 1..20 چی هست؟

خوب شد گفتي حواسم به w نبود اين برنامه اشتباهه آخرين خطوط ميگم چرا
خطوطي كه شما نوشتين گرامر زبان پاسكال هست
در پاسكال براي محدوديت قائل شدن در بازه اين كار را انجام مي دهند اين 1..20 به معني اينه كه هر كدام از اون متغير ها مي تونن عددي بين 1 تا 20 داشته باشند اين خيلي مهم هست
چون اگر محدوديت را اعلام نكنه شما بايد بالاترين بازه ممكن را در نظر بگيري تا سرريز رخ ندهد و هميشه قبل از برنامه نويسي بايد اين ها مشخص شه تا ميزان استفاده از منابع سيستم كاهش پيدا كنه و سريعا متغيير هايي كه ميزان حافظه را الكي اشغال كند نداشته باشيم البته در سي پلاس با اشاره گر ها ميشه خيلي قوي اين كار را انجام داد و حافظه را مديريت كرد كه خطاي انساني هم احتمالش زياد ميشه
در كل يعني اگه همه اون اعداد را با هم جمع كنيم از حداكثر فضاي بايت كه 0 تا 255 مي باشد تجاوز نمي كند در حالت بي علامت! در حالتي كه علامتدار فرض شه
ميشه از 0 تا 127 براي مثبت و 1- تا 128- براي منفي
مشكل اين برنامه اينه كه w را هم گذاشته بين بازه 1..20 بعد انتظار داره جمع،تفريق و ضرب شه با 100 هم جمع شه بين 1..20 باشه :لبخند:
براي حل اين مشكل بهتره برنامه 2 به اين شكل بازنويسي شه



w:0..65535;
x,y,z:1..20;
w:=x+y*z-w+100;

حال داريم:


;-----strat com executable file -----
org 100h
;---- your request code-
mov al,y
mul z ;ax=y*z
adc w+2,0
add al,x
sub al,byte ptr[w]
add al,100
mov w,ax
ret ;return to os
;------variable-------
x db 20
y db 255
z db 255
w dw 20 ;w=2^16-1=0..65535
end ;end of program

حالا اين برنامه مي تونه در w تا بازه 0..65535 را نگه دارد!
ضمنا ميشه كد هايي اضافه كرد كه كنترل كنيم كه اگر بازه بزگتر بود دوباره وارد كنيم
و... تا جلوي سرريز و خروجي اشتباه رو بگيريم كه اين به شما سپرده ميشه براي يادگيري بيشتر:لبخندساده:

trminator
چهارشنبه 10 شهریور 1389, 19:33 عصر
من تازه دارم اسمبلی یاد می گیرم با کتاب نیکمهر. این درس هم خودخوان به ما ارائه شده.
byte ptr[w] برای چی هست؟

xman_1365_x
پنج شنبه 11 شهریور 1389, 01:45 صبح
من تازه دارم اسمبلی یاد می گیرم با کتاب نیکمهر. این درس هم خودخوان به ما ارائه شده.
byte ptr[w] برای چی هست؟


خوب نبايد تابستان انتخاب مي كردي:لبخندساده: منم پيام نور مشهد هستم!
اگه emu8086 نصب نكردي حتما نصب كن تا درك بهتري پيدا كني.
در مورد اين سوال هم اگه كتاب رو خوب بخوني متوجه ميشي
مثلا يك ثبات 16 بيتي را در يك ثبات 8بيتي ميشه ريخت يا نه؟!
پس دانشجو حالا برو در مورد دو خط زير تو گوگل جستجو كن خودت علمشو بدست بيار اينطوري خوب ياد ميگيري! سعي كن تمرين هاي كتاب رو هم حل و بعد در شبيه ساز اجرا كني.


byte ptr[]
;and
word ptr[]

دنبال نمونه سوال هم بگرد چون زيبا هست سوال هاي پايان ترم:لبخند:
متاسفانه خيلي مطالب حذف شده از اين كتاب كه در امتحان ازش سوال مياد مثل همين نمونه كه من نوشتم و در كتاب توضيحي نداده و در تمرين هاي آخر م كتاب هم نمونش بايد باشه تا جايي كه يادمه.
خواستي قوي شي اين تحقيق ها رو براي شروع انجام بده حتي اگه امتحانشو دادي:
1-تمرين تبديل اعداد مبنا هاي مختلف به يكديگر! (صحيح و اعشاري)
2-جمع،تفريق،ضرب و تقسيم اعداد با مبنا هاي مختلف به يكديگر و تاثيرش روي هر فلگ
3-سعي كن در مورد ساختار فايل هاي exe و com هم تحقيق كني!(البته نمي دونم تا كجاي كتاب رو خوندي)
اگه انجام دادي به اين آدرس ايميل كن xman_1365_x@yahoo.com تا در صورت مشكل خودم كمكت كنم در حدي كه بلدم تا بهتر ياد بگيري همچنين تمرين و تحقيق بهت بگم زودتر راه بيوفتي
موفق باشي هم دانشگاهي .

trminator
پنج شنبه 11 شهریور 1389, 19:03 عصر
فکر کنم گرفتم چیکار می کنه. میاد به اندازه یک بایت از متغیر word برمیداره میزاره توی ثبات
یه چیزی شبیه تبدیل نوعی که توی سی داشتیم
در مورد کتاب هم امشب شفیت بیت ها رو تموم می کنم. emu رو هم نصب کرده بودم ولی متاسفانه فعلا لپتاپم مشکل داره و قابل استفاده نیست.
از پیشنهاد کمک استقبال می کنم.
لطفا نگاهی به این پست هم بندازید و راهنماییم کنید. فکر کنم مرتب سازی حبابی که نوشته اشتباه باشه.
http://www.barnamenevis.org/forum/showpost.php?p=1084366&postcount=4

m_golpa
سه شنبه 30 آذر 1389, 13:16 عصر
سلام . خسته نباشید . من چند سوال دارم که جواب آنها را فوری میخواهم.ازتون متشکرم.
1- برنامه آرایه 5 عنصری شما با Doble word است اما من با word mikhaham.
2- به چند طریق میتوان مقدار ثبات AX را صفر نمود همراه با دستوالعمل.
3- تبدیل به اسمبلی
longint x,y,z,w
w=x+y-z+w

xman_1365_x
سه شنبه 30 آذر 1389, 15:48 عصر
چيز ديگه اي نمي خواين ؟ :لبخند:
دوست عزيز تمرين رو دادن كه شما بنويسي نه من
شما بنويس به مشكل خوردي من ميگم،تغيير نوع سخت نيست!
ضمنا اينجا نده تاپيك جداگانه باز كن
شما هم پيام نور هستي؟ (اينو پيام خصوصي بگو)
موفق ياشي