ژیکو

مرجع دانلود فایل ,تحقیق , پروژه , پایان نامه , فایل فلش گوشی

ژیکو

مرجع دانلود فایل ,تحقیق , پروژه , پایان نامه , فایل فلش گوشی

دانلود تحقیق انواع ویتامینها

اختصاصی از ژیکو دانلود تحقیق انواع ویتامینها دانلود با لینک مستقیم و پر سرعت .

تحقیق انواع ویتامینها در 21 صفحه با فرمت ورد شامل بخش های زیر می شود:

تعریف

ریشه و اساس ویتامینها

ویتامین D

تاریخچه

منابع آن

نیازبه ویتامین D

کاربردهای درمانی

مقدار مصرف آن

خواص آن

ممنوعیتها

هیپرویتامینی D

 

 

 

 

 

  • تعریف :

ارائه تعریفی جامع برای کلمه ویتامین، عملاً غیر ممکن است. این کلمه در سال 1910 . م به وسیله « فونک » اختراع شد. در این سال او توانست از پوسته برنج عنصر کریستالی را بدست بیاورد که از بیماری بری بری پیشگیری نموده و آن را درمان می کند ( ناراحتی که زمانی اطلاعی از آن در دست نبود و بر اثر فقر ویتامین B ایجاد می شود.)

وی به این عنصر نام « آمین حیاتی » را داد که طبیعتاً اصطلاح ویتامین از کلمه آمین حیاتی گرفته شده و پس از آن، این نام به مجموعه عناصر مورد نیاز فعالیتهای حیاتی که بدن نمی تواند آنها را بسازد و بنابراین باید آنها را از طریق تغذیه بدست بیاورد اطلاق شد.

بنابراین، ویتامین عبارت است از عنصر ضروری برای فعالیت مناسب بدن و عامل حیاتی است که اغلب در مقادیر بسیار کم در مواد گیاهی و حیوانی وجود دارد. هر یک از ویتامین ها به نوعی به شکل کاتالیزورهای لازم برای ایجاد پدیده های مورد نیاز بدن و پدیده های تولید نسل نظیر تکثیر، رشد، گسترش، حفظ فعالیت حیاتی و غیره بکار می رود.

فقدان ویتامین های مختلف باعث ایجاد ناراحتی ها و آسیبهای خاصی می شود که بر حسب نوع ویتامین متفاوت است.تکاندهنده ترین نمونه کمبود ویتامین اسکوربوت است که از زمانهای بسیار دور شناخته شده است.

روشهای درمانی که در دوران قدیم علیه این بیماری بکار می بردند، بسیار متغیر بوده ( بدون اینکه هرگز کسی بتواند توجیه علمی برای این روشها پیدا کند. )

« پلین » از علف بریتانیکا صحبت می کند ( که بی شک نوعی ترشک بوده است)، داروئی که همراه با ژنتیان در یک رساله پزشکی ایسلندی در قرن پانزدهم هم تجویز شده است. « ژاک کارتیه » گزارش داده که برخی از افراد مبتلا به اسکوربوت با مصرف دم کرده سوزنهای کاج بر اساس دستور فارماکوپه ی هندی درمان شده اند و سرانجام، گروهی دیگر از خواص درمانی سنبل ختایی و . . . نام برده اند.

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


دانلود با لینک مستقیم


دانلود تحقیق انواع ویتامینها

دانلود مقاله کامل درباره آموزش اسمبلی

اختصاصی از ژیکو دانلود مقاله کامل درباره آموزش اسمبلی دانلود با لینک مستقیم و پر سرعت .

دانلود مقاله کامل درباره آموزش اسمبلی


دانلود مقاله کامل درباره آموزش اسمبلی

لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه: 126

 

آموزش اسمبلی

برای یاد گرفتن اسمبلی باید با مبناهای عدد نویسی ، ساختمان داخلی کامپیوتر
و برنامه نویسی آشنا باشیم .
ما برنامه هایمان را مستقیما با اسمبلر Macro Assembler خواهیم نوشت و گاها از Debug
استفاده خواهیم کرد . بعلاوه چون برنامه های حجیم نخواهیم نوشت قالب اکثر
رنامه های ما COM. خواهد بود .
برای شروع ابتدا نگاهی به حافظه میکنیم :

حافظه و آدرس دهی

هر کامپیوتر مبتنی بر 8086 دارای حداقل 640 کیلوبایت حافظه است . این 640
کیلوبایت به قطعات 64 کیلوبایتی تقسیم شده و ما این قطعات را "قطعه " یا Segment
مینامیم . هر سگمنت هم به خانه های تک بایتی دیگری تقسیم شده است .

برای بدست آوردن مقدار یک بایت مشخص از حافظه ما باید عد مربوط به سگمنت و
همچنین شماره آن بایت در سگمنت ( که آفست Offset نامیده میشود ) را بدانیم .
مثلا اگر مقدار مورد نظر در قطعه 0030h(h( یعنی عدد در مبنای 16 است ) و آفست 13C4h
باشد ما باید قطعه ای که شماره آن 0030h است را بیابیم و بعد در همان قطعه
مقدار باین شماره 13C4 را بخوانیم .
برای نمایش این حالت بین عدد سگمنت و آفست علامت (:) قرار میدهیم . یعنی
ابتدا عدد مربوط به قطعه را نوشته و سپس عدد آفست را می آوریم :
Segment:Offset

مثال : 4D2F:َ9000 **
همیشه در آدرس دهی ها از اعداد مبنای 16 استفاده میکنیم .

| | |

| CConvertional | 1 Segment=64K | | | | | Memory

| | | | | |
| | | |
| | | |


ثباتها Registers

رجیسترها مکان هائی از CPU هستند که برای نگهداری داده ها (DATA) و کنترل اجرای
برنامه بکار میروند . ما میتوانیم آنها را مقدار دهی کرده و یا بخوانیم و یا
باتغییر محتوای آنها CPU را مجبور به انجام یک پروسه (رویه یا Procedure) کنیم

دسته ای از رجیسترها که ما انها را "ثباتهای همه کاره یا همه منظوره " میخوانیم
و شامل AX/BX/CX/DX هستند ، برای انتقال مقادیر بین رجیستر ها و CPU بکار میروند.
این ثباتها را میتوانیم به هر نحوی تغییر دهیم و مقادیری را به آنهاارسال کنیم .

ثباتهای دیگری هم که نام میبریم کاربردهای خاص خودشان را دارند و برای مقدار دهی
آنها باید قواعد خاصی (که توضیح خواهیم داد) را بکار بریم .

میکند عدد که در این ثبات وجود دارد شماره یک قطعه است و CPU برای یافتن DS : مخفف Data Segment . محل نگهداری متغییرها و ثابتهای برنامه را مشخص
مقادیر لازم به آن قطعه مراجعه میکند . CS

: مخفف Code Segment است و آدرس قطعه ای که برنامه در آن قرار گرفته را
نشان میدهد . ES

: این یک ثبات کمکی است و معمولا در آدرس دهی ها شماره قطعه را نگهداری
میکند . DI

DataIndex:Dبا DS/ESا مرتبط است و عدد آفست را نگهداری میکند . IP

: این رجیستر معلوم میکند که برنامه در حال اجرائی که در CS قرار دارد از
کدام بایت قطقه (یعنی کدام آفست ) شروع میشود . به همین دلیل همیشه این دو
ثبات را با هم و بصورت CS:IP نشان میدهند.
و ...

تمام رجیسترهای فوق 16 بیتی (دوبایتی ) هستند و اعداد دوبایتی را نگهداری میکنند.
ثباتهای همه منظوره به دو نیم ثبات تک بایتی تقسیم میشوند . بایت بالائی ب
نماد H و بایت پائینی با نماد L نشان داده میشود . مثلا ثبات AX دارای دو نیم -
ثبات AH/AL است :
| AH - 8 Bit | AL -8 Bit |


تمرین :
برای دیدن رجیسترها در DOS، DEBUG، را اجرا کنید و فرمان R را صادر کنید :


D:\MASM>DEBUG
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17AA ES=17AA SS=17AA CS=17AA IP=0100 NV UP EI PL NZ NA PO NC
17AA:0100 0F

بیایید یک برنامه بنویسیم

در این قسمت میخواهیم با استفاده از مطالبی که در بخشهای قبلی یاد گرفتیم
برنامه ای بنویسیم که کامل و قابل استفاده باشد . با این برنامه میتوانیم
فلاپی دیسکهای خودمان را با سرعت کپی کنیم ! امروز برنامه را به شکلی مینویسیم که
بتواند دیسکهای 1.44 را بوسیله درایو A کپی کند . بیشتر نیاز ما در کپی (تکثیر)
دیسکها هم به همین شکل هست . با اینحال در قسمت بعدی نگارش (Version) جدیدتری از
برنامه را مینویسیم و قابلیت تشخیص نوع دیسک و قابلیت مشخص کردن درایو را به آن
اضافه میکنیم .
بهترین کاری که میتوانیم بکنیم اینست که بتوانیم داده های خوانده شده از
دیسک را در حافظه EMS بنویسیم (در این نسخه روی هارددیسک مینویسیم ) . وقتی که
نحوه کار را حافظه گسترش یافته (Extended Memory) را هم یاد گرفتیم ، برنامه
خود را کامل کرده و از آن بعنوان اولین دستختمان در برنامه نویسی اسمبلی لذت
میبریم .
لیست برنامه در زیر قرار دارد و توضیحات برنامه را روی آن میبینیم
قبل از آن یاد آوری میکنم که هر دیسک HD َ1.44 دارای دو طرف و در هر طرف 80 شیار
(Track) بوده و هر شیار هم به 18 بخش بنام قطاع (Sector) تقسیم میشود . برنامه
ما باید محتوای تمام این قطاعها را خوانده و در فایلی روی دیسک سخت ذخیره کند.
سپس همین داده ها را از فایل خوانده و مجددا روی دیسک جدید بنویسد.



طول هر قطاع 512 بایت است EQU 512 SECTORSIZE
تعداد شیار ها 80 شیار (79- 0-) است EQU 79 MAXTRACK
هر دیسک دو طرف دارد EQU 2 NUMSIDES
تعداد سکتور در هر شیار 18 تا است EQU 118 SECTOR_PER_TRACK E
.MODEL SMALL
.CODE
ORG 100H
START:
JMP MAIN

بافر برای ذخیره (0)BUF DB SECTORSIZE*SECTOR_PER_TRACK DUP
داده ها . اندازه آن به اندازه بایتهای یک شیار است
معرف رویه فعلی دیسک SIDE D DB 0
معرف تراک جاری TRACK DDB 0
هندل (مشخصه ) فایل HANDLE DW 0

اسم فایل برای دخیره موقت داده ها FILENAME DB 'C:TTEMP.$$$'/0

MSG1 DB 'ENTER A DISK INTO DRIVE A :THEN PRESS A KEY'/13/10/'$'
MSG2 DB 'ENTER A NEW DISK INTO DRIVE A :THEN PRESS A KEY'/13/10/'$'



رویه ReadTrack داده های یک شیار را بطور کامل میخواند . برای خواندن یک شیار
کامل از Int 13h/Ah=02h استفاده کرده ایم . داده ها بعد از خوانده شدن در محلی
که با ES:BX مشخص میشود ذخیره میشوند . (به مرجع اینتراپیتها مراجعه کنید) قبلا
کار با این وقفه را توضیح داده ایم (برنامه Boots.asm را ببینید)


READTRACK PROC ;READ A TRACK
PUSH ES
MOV AX/DS
MOV ES/AX
LEA BX/BUF
MOV AH/2
MOV DL/0 ;DRIVE A:
MOV DH/SIDE
MOV CH/TRACK
MOV CL/1 ;THE 1st SECTOR
MOV AL/SECTOR_PER_TRACK
INT 13H
POP ES
RET
READTRACK ENDP



این رویه داده های موجود در BUF را خوانده و در یک شیار کامل که با متغیر Track
مشخص میشود مینویسد . برای اینکار از INT 13h/AH=03h استفاده شده است . آدرس
متغیر BUF را باید در ES:BX قرار بدهیم .


WRITETRACK PROC
LEA BX/BUF
PUSH ES
MOV AX/DS
MOV ES/AX


شماره تابع برای نوشتن MOV AH/03
تعداد سکتورها برای نوشتن MOV AL/SECTOR_PER_TRACK
شماره تراک MOV CH/TRACK
شماره سکتور شروع MOV CL/1
رویه دیسک (طرف دیسک ) MOV DH/SIDE
شماره درایو که اینجا A است MOV DL/0 INT 13H
POP ES
RET
WRITETRACK ENDP


این پروسیجر به اندازه یک تراک کامل از فایل خوانده و در متغیر BUF قرار میدهد
READFILE PROC
MOV BX/HANDLE

اندازه یک تراک MOV CX/SECTORSIZE*SECTOR_PER_TRACK
آدرس بافر برای ذخیره که DS:DX است LEA DX/BUF MOV AH/3FH
INT 21H
RET
READFILE ENDP


این پروسیجر کلیه داده های داخل BUF که به اندازه یک تراک کامل (18*512 بایت )
است را خوانده و در فایل مینویسد تا بعدا مجددا خوانده و روی دیسک جدید بنویسد


WRITEFILE PROC
MOV BX/HANDLE
MOV CX/SECTORSIZE*SECTOR_PER_TRACK
LEA DX/BUF
MOV AH/40H
INT 21H
RET
WRITEFILE ENDP



منتظر میماند تا کلیدی فشرده شود WAIT PPROC
تابع خواندن کلید MOV AH/0 INT 16H
RET
WAIT _ENDP



این رویه فایل با هندل مشخص شده را میبندد CLOSEFILE PROC MOV AH/3EH
MOV BX/HANDLE
INT 21H
RET
CLOSEFILE ENDP


شروع برنامه اصلی . MAIN:

در این قسمت اعذم میکنیم که دیسکی را در درایو A قرار دهده و کلیدی را
برنند . MOV AH/9
LEA DX/MSG1
INT 21H

مکث برای دریافت کلید _CALL WAIT

ساختن فایل برای ذخیره داده ها MOV AH/3CH
LEA DX/FILENAME
MOV CX/0
INT 21H

MOV SIDE/0
MOV HANDLE/AX
MOV TRACK/1

موتور دیسک خوان مدت زمانی لازم دارد تا به سرعت کافی برسد . بنا براین باید
یک یا دو بار قبل از خواندن دیسک ، تابع خواندن را اجرا کنیم تا موتور دیسک در
حالت مناسب قرار بگیرد.
CALL READTRACK ; START UP THE CASSETTE-MOTOR
COPY:
MOV TRACK/0
COPYTRACK:

خواندن شیار CALL READTRACK
نوشتن داده های خوانده شده در دیسک CALL WRITEFILE
شیار بعدی INC TRACK
آیا شیار80 هستیم / CMP TRACK/80
نه ، شیار بعدی TRACKS َ; COPY 80 JNZ COPYTRACK

طرف بعدی دیسک INC SIDE
آیا طرف دوم دیسک هستیم ? CMP SIDE/1
نه ، پس ادامه بده JZ COPY
وگر نه فایل را ببند CALL CLOSEFILE

حالا اعلام میکنیم که دیسک جدید را در درایو A قرار دهد و کلیدی را بزند MOV AH/09H
LEA DX/MSG2
INT 21H
CALL WAIT_

MOV SIDE/0


همان فایل را برای خواندن باز میکنیم . وقتی که فایلی را میسازیم تنها میتوانیم
در آن فایل بنویسیم . بنا براین برای خواندن از فایل ، باید آن را بسته و مجددا
برای خواندن باز کنیم . LEA DX/FILENAME
MOV AH/3DH
MOV AL/0
INT 21H

مشخصه فایل در Handle قرار میگیرد MOV HANDLE/AX

MOV TRACK/1
MOV SIDE/0

اجرای تابع نوشتن برای راه اندازی موتور دیسک CALL WRITETRACK
WRITE:
MOV TRACK/0
WRITE_ON_TRACK:

داده هارا از فایل بخوان CALL READFILE
داده ها را روی شیار بنویس CALL WRITETRACK
شیار بعدی INC TRACK
آیا شیار 80 هستیم ? CMP TRACK/80
نه ، پس ادامه بده JNZ WRITE_ON_TRACK
بله ، طرف بعدی دیسک INC SIDE
آیا الان طرف دوم را هم خوانده ایم ? CMP SIDE/1
نه ، پس شیار بعدی را بنویس JZ WRITE
بله ، فایل را ببند CALL CLOSEFILE

فایلی که ساخته بودیم فضائی از دیسک سخت را اشغال کرده ، بنا براین بهتر است
آن را با استفاده از وقفه 21h و تابع 3Ah حذف کنیم . LEA DX/FILENAME
MOV AH/3AH
INT 21H ;ERASE THE TEMPORARY FILE
INT 20H
END START

تمام (:

خوب ، رجیسترها را دیدیم و آشنائی کلی با آنها پیدا کردیم .
حالا میخواهیم به رجیتسرها مقدار بدهیم و آنها را بخوانیم و ... . ما معمولا در
ےزبانهای دیگر از علامت =(یا =ا:) برای مقدار دهی استفاده میکنیم ولی در زبان
ےاسمبلی این کار ممکن نیست . در عوض از دستورالعمل MOV کمک میگیریم . با MOV
میتوانیم داده ها را بین رجیسترها یا خانه های حافظه انتقال بدهیم . به این صورت
MOV in_it/Value


در اینجا In_it به معنای یک رجیستر، نام یک متغیر، یا آدرس یک مکان از حافظه
است و Value هم یک مقدار عددی یا حرفی ، نام یک رجیستر و ... میباشد .
ےمانند MOV AX/200 که عدد 200 دسیمال را به رجیستر AX منتقل میکند . (همیشه از
سمت راست به چپ ) .

در زبان اسمبلی ما میتوانیم با مبناهای 2وَ10وَ16 کار کنیم . اعداد به طور پیش
فرض مبنای 10 هستند . برای نشان دادن عدد هگزا (مبنای 16) در انتهای عدد یک
حرف H ( یا h ) و در انتهای اعداد باینری علامت (b) قرار میدهیم . مثلا برای نشان
دادن عدد AC1 مبنای 16 باید حتما آن را بصورت AC1h بنویسیم . به همین ترتیب عدد110b
همان عدد 6 خودمان است .

با این تفاسیر برای دادن مقدار 4Ch به رجیستر AX از دستور زیر استفاده میکنیم :
mov ax/4Ch


به همین شکل میتوانیم به نیم ثباتها هم مقدار بدهیم . مثلا میتوانیم برای مقدار
دهی AH بنویسیم : mov ah/20h . در این حالت مقدار نیم ثبات AL ثابت بوده و
محتوای AH برابر 20h میشود . چون نیم ثباتها تک بایتی هستند ما نمیتوانیم عدد
خارج از محدوده 0 تا 255 یا 128- تا 127 به آنها ارسال کنیم . در مورد اعداد منفی
هم باید از طریق تبدیل به مکمل دو عمل کنیم که به زودی آن روش را توضیح خواهیم
اد .
مثلا ما نمیتوانیم mov ah/100h را انجام دهیم چون 100h برابر 256 بوده و از محدوده
تعریف شده خارج است .
به همین شکل میتوانیم محتوای ثباتها را هم منتقل کنیم . مثلا برای کپی کردن محتوای
ثبات CXبه DX میتوانیم بنویسیم : mov dx/cx ، یعنی مقدار داخل Cx را به Dx کپی
کن .
ےباز هم باید به یک یا دوبایتی بودن ثباتها توجه کنیم . به عبارت دیگر ما
ےنمیتوانیم مقدار یک ثبات تک بایتی را به یک ثبات کامل دوبایتی منتقل کنیم .
مثلا عبارت mov DX/AL قابل قبول نیست چون AL یک بایتی بوده و DX دوبایتی است .
به عبارت ساده و کامل تر دو طرف عملوند MOV باید از نظر اندازه برابر باشند.
بنابر این :
MOV DL/AL
و MOV CL/BHوM درست ولی MOV DS/AH نادرست است .

به علاوه ما فقط میتوانیم ثباتهای همه منظوره AXتا DX را به این صورت مقدار دهی
ےکنیم . در صورتی که بخواهیم ثباتهائی مثل ..DS/ES/ را مقدار دهی کنیم باید از
رجیستر AX به عنوان واسطه استفاده کرده و مقدار را از طریق آن انتقال دهیم .
مثلا:
نمیتوانیم بنویسیم mov ds/20h
ولی میتوانیم داشته باشیم :
mov ax/20h
mov ds/ax


ےبه این ترتیب مقدار 20hبه DS انتقال پیدا میکند ( گرچه تغییر دادن DS ایده خوبی
نیست !)

ےحالا مطالب گفته شده را تمرین میکنیم . ما میتوانیم با DEBUG اسمبلی بنویسیم و
حتی برنامه های COM. درست کنیم . بنا براین در DOS، DEBUG، را اجرا کنید .
D:\LNG\ASM> DEBUG


ےیک خط تیره به صورت - ظاهر میشود . این خط تیره اعلان DEUBG برای وارد کردن
دستورات است .
حرف A (به معنی شروع وارد کردن دستورات اسمبلی ) را وارد کرده و Enter را بزنید .
ےعددی بصورت xxxx:0100 ظاهر میشود . این عدد برای شما (فعلا) مهم نیست ، پس به
آن توجه نکنید .
حالا میتوانید دستورات زیر را وارد کنید :


MOV AX/100
MOV BX/AX
MOV ES/AX



بعد از وارد کردن خط آخر یکبار دیگر کلید Enter را بزنید تا اعلان (-) دوباره ظاهر
شود .
در سطر اول ما عدد 100h ( پیش فرض اعداد در Debug هگزا است ) را به AX منتقل
کردیم . بعد مقدار AXبه BX و سپس مقدار AXبه ES منتقل شده . به این ترتیب همه
ثباتهای AX/BX/ES باید در نهایت برابر 100h باشند .
برای دیدن صحت این مطلب دستور T ( به معنای Trace) را وارد کنید .
با هر بار اجرای این دستور یکی از سطرهای برنامه اجرا میشود . بعلاوه شما میتوانید
محتوای رجیسترها را هم ببینید .
با اولین فرمان T ، سطر اول اجرا میشود . بازهم فرمان T را وارد کنید . الان مقدار100h
به BX داده شد و اگر به محتوای رجیستر AX توجه کنید خواهید دید که مقدار آن
(همانطور که انتظار داشتیم ) برابر 100h است . دوبار دیگر هم فرمان T را صادر
کنید و در نهایت مقدار ثباتهای AX/BX/ES را ببینید . هر سه ثبات (حالا) برابر 100h
هستند .
برای خارج شدن از Debug هم فرمان Q به معنی Quit را وارد کنید .
******


پس امروز یاد گرفتیم گه چطور مقادیر و داده ها را بین ثباتها منتقل کنیم .
خودتان همین تمرینات را با DEBUG انجام داده و در مورد MOV مطالعه کنید .
در قسمت بعد چیزهای بیشتری رو خواهیم خواند و یاد خواهیم گرفت.

تا اینجا یاد گرفتیم که چطور مقادیر را بین ثباتها منتقل کنیم : با فرمان MOV.
با همین دستور میتوانیم مقادیر را از محلهای حافظه خوانده یا در آنجا بنویسیم .
برای کار با حافظه دوحالت ممکن است وجود داشته باشد : 1
- آدرس مورد نظر در سگمنت جاری باشد . در برنامه های COM. کل برنامه (غالبا)
از یک سگمنت تشکیل میشود . 2
- آدرس مورد نظر خارج از سگمنت جاری باشد .

ثبات DS همیشه به قطعه ای اشاره میکند که داده های مورد نیاز برنامه در آن
هستند . این قطعه در برنامه های EXE. یک قطعه مستقل است ولی در برنامه های COM
. ، قطعه داده های و قطعه کد برنامه در یک سگمنت هستند . بنا براین مقدار
ثبات DS در یک برنامه COM. ثابت است .
در حالت کلی آدرس یک محل از حافظه بصورت DS:address مشخص میشود. DS حاوی
آدرس سگمنت داده ها بوده و address آفست را مشخص میکند .
چون همانطور که گفتیم DS در برنامه های COM. ثابت است ، پس در صورتی که آدرس
مورد نظر در همین قطعه باشد از نوشتن DS صرفنظر میکنیم .
به عنوان مثال اگر قطعه داده های برنامه ما 9000h باشد و ما بخواهیم آفست 24h
ام در همین قطعه را بدست بیاوریم ، میتوانیم از یکی از دو شکل زیر استفاده
کنیم :
DS:24h
or
24h


البته چون اسمبلر منظور ما از نوشتن عدد 24h را نخواهد فهمید شکل دوم یک خطای
هنگام ترجمه تولید خواهد کرد ولی ما روش صحیح را هم خواهیم گفت .
ما آدرس ها (یا اشاره گرها) را برای این میخواهیم که بتوانیم به یک خانه از
حافظه دسترسی پیدا کنیم . برای اینکه نشان بدهیم منظور ما از عدد مشخص شده ،
آدرس است نه خود عدد (مثل 24h در مثال قبلی ) آن عدد را داخل [] قرار میدهیم .
بنا براین :
mov ah/24h عدد 24h را به AX منتقل میکند ولی ....
mov ah/[24h] محتوای آفست 24h را به AX منتقل میکند .

در شکل دوم هر مقداری که در آفست 24h ام سگمنت جاری موجود باشد به ثبات Ah
منتقل میگردد.
به همین صورت میتوانیم یک مقدار را به یک خانه از حافظه منتقل کنیم : mov [24h]/ah
: محتوای ثبات AH را به آفست 24h ام منتقل میکند .
ے اگر آدرس مورد نظر خارج از محدوده سگمنت جاری بوده و در قطعه ای جدا قرار داشته
باشد ، میتوانیم از DSیا ESا (ترجیحا) برای دستیابی به حافظه استفاده کرد:
مثال : mov ax/9000h
mov ds/ax
mov ah/ds:[89h]


به این ترتیب ما به آفست 89h از سگمنت 9000h دسترسی پیدا میکنیم .
البته دستورات فوق مارا به مقصودمان میرسانند ولی ما نمیتوانیم به دلخواه خودمان DS
را تغییر دهیم چون همانطور که گفتیم DS به قطعه داده های برنامه اشاره میکند و
برنامه ، داده ها و مقادیر متغیر ها را از سگمنتی که با DS مشخص شده میخواند .
بنا براین ما نباید مقدار DS را تغییر بدهیم مگر اینکه آن را دوباره به حالت اول
برگردانیم . برای ذخیره و بازیابی محتوای رجیسترها، یک روش ساده و عمومی وجود
دارد که به زودی خواهیم گفت ولی در این مثال ما میتوانستیم مقدار قبلی DS را در
یک رجیستر دیگر مثل CX نگهداریم :

انتقال محتوای dsبه AX mov ax/ds
انتقال محتوای AXبه CX mov cx/ax
دادن مقدار9000hبه AX mov ax/9000h
انتقال محتوای AXبه DS mov ds/ax
خواندن آدرس mov ah/ds:[89h]
بازیابی مقدار DS mov ax/cx mov ds/ax


اگر بخواهیم آفست آدرس را با یک رجیستر مشخص کنیم باید به نکات زیر توجه
کنیم : 1
- اگر آدرس سگمنت با DS مشخص شده ، یا آدرس در سگمنت جاری باشد ، باید
مقدار آفست را در ثبات BX قرار دهیم . مثلا mov cx/[BX]یا mov cx/ds:[bx]ا .
2
- اگر از ES به عنوان مقدار سگمنت استفاده میشود باید از DI به عنوان آفست
استفاده کنیم مثل mov cx/es:[di] .

چون ما با برنامه های COM. سرو کار داریم ، پس از شکل اول و BX استفاده خواهیم
کرد .
دستیابی به مکانهای حافظه نکته های جالب دیگری هم دارد که در قسمت بعدی یاد
خواهیم گرفت .

 

دستیابی به مکانهای حافظه

وقتی که ما به روش گفته شده مقداری را از حافظه میخوانیم ، یک داده تک بایتی
از حافظه گرفته میشود . اما ممکن است بخواهیم که یک کلمه یا کلمه
مضاعف ( 4بایتی ) را بخوانیم یا بنویسیم . در این صورت میتوانیم از
پیشوند های زیر استفاده کنیم :
Byte Ptr
: برای دست یابی به یک بایت Word Ptr
: برای دستیابی به یک کلمه (2بایت ) Dword Ptr
: برای دست یابی به یک مقدار 4 بایتی

این پیشوند ها را باید قبل از آدرس مورد نظر قرار دهیم . به عنوان مثال برای
خواندن یک بایت از آفست 10h میتوانیم بنویسیم : mov al/byte ptr ds:[10h]

و برای خواندن دو بایت بصورت : mov ax/byte ptr ds:[10h] .
میتوانیم از همین روش استفاده کرده و مقداری را به حافظه انتقال دهیم . مثلا
میخواهیم یک کلمه دوبایتی را به آفست 34h (در سگمنت برنامه ) منتقل کنیم . کافی
است بنویسیم :

mov word ptr [34h]/1FCAh .
مثال :
mov bx/34h
mov ax/ds
mov cx/ax
mov ax/00h
mov ds/ax
mov ax/word ptr ds:[bx]
mov ax/cx
mov ds/ax

جمع و تفریق

بحث ما در مورد روشهای دستیابی و انتقال داده ها (فعلا) به پایان میرسد . حالا
میخواهیم ببینیم که چطور عمل جمع و تفریق ، و بعدا ضرب و ... ، را روی مقادیر
انجام دهیم .

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید


دانلود با لینک مستقیم


دانلود مقاله کامل درباره آموزش اسمبلی

دانلود مقاله کامل درباره جعبه دنده

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

دانلود مقاله کامل درباره جعبه دنده


دانلود مقاله کامل درباره جعبه دنده

لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه: 20

 

جعبه دنده

گشتاور تولیدی توسط موتور پس از انتقال توسط کلاچ به جعبه دنده می رسد. وظیفه جعبه دنده انتقال دور موتور با نسبتهای گوناگون و رساندن آن به خطوط انتقال و میل گاردان در خودروهای دیفرانسیل عقب یا مستقیماً به دیفرانسیل در خودروهای دیفرانسیل جلو است.
سیستم جعبه دنده ای انتقال قدرت را می توان به دو گروه جعبه دنده ای دستی و جعبه دنده ای اتوماتیک تقسیم بندی کرد. سیستم انتقال قدرت دستی در حالت انتقال مستقیم بازدهی در حدود 98% ولی در دنده های با نسبت انتقال پایین تر بازده به حدود 90% می رسد. چون بیشترین زمان استفاده از اتومبیل، جعبه دنده در حالت انتقال مستقیم قدرت است، بنابراین با توجه به این مورد و هزینه اولیه به نسبت کمتر این سیستم جعبه دنده ای، هنوز استفاده از آنها در اکثر اتومبیلها مورد توجه است. از سیستم انتقال اتوماتیک بیشتر در اتومبیلهای گرانقیمت تر و کلاسهای بالاتر استفاده می شود چرا که با توجه به عملکرد ساده تر آن برای راننده، هزینه ساخت آن نیز بیشتر است. علاوه بر دو نوع فوق، امروزه استفاده از نسل جدیدی از سیستم انتقال قدرت بنام سیستم انتقال قدرت پیوسته متغیر (CVT) نیز مورد توجه طراحان خودروها قرار گرفته است.

سیستم انتقال قدرت دستی

در دسته بندی کلی از لحاظ نحوه کارکرد، جعبه دنده های دستی به سه گروه کلی تقسیم می شوند:

-  Sliding mesh type Gearbox

-  Constant mesh type Gearbox

-  Synchromesh type Gearbox

Sliding Mesh Type Gearbox


این جعبه دنده ها از قدیمیترین و ساده ترین انواع جعبه دنده ها هستند که درگیری دنده ها در آنها توسط جابجا کردن دنده ها ایجاد می شود. این جعبه دنده ها در واقع شامل دو ردیف شفت می باشند :  شفتی که از طرف کلاچ می آید و خود شامل دو قسمت است؛ یکی که کاملاً ثابت می باشد و در واقع محور ورودی است بنام محور اصلی ( primary shaft ) و شفت دیگری که در امتداد آن اما بصورت جداگانه و متحرک قرار دارد و بنام splined mainshaft خوانده می شود و عمل تعویض دنده نیز با جابجایی این شفت صورت می گیرد.  شفتی پایینی که بنام محور ثانویه ( lay shaft )  خوانده می شود و بسته به نوع جعبه دنده، تعدادی دنده بر روی آن قرار می گیرد. این شفت توسط درگیری بین دو دنده به طور دائم در ارتباط با محور اصلی است

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

نحوه درگیری دنده ها و همچنین محاسبه کاهش نسبت دور را برای دنده های مختلف در شکلهای2-2 مشاهده می کنید.

Constant Mesh Type Gearbox

در این نوع از جعبه دنده ها بر خلاف حالت قبل همه دنده ها با هم درگیر هستند، این عمل باعث عملکرد آرام و بدون صدای این دنده ها می شود، چرا که عمده صدا در سیستم جعبه دنده ای قبلی ناشی از جازدن دنده ها بود. علاوه بر آن، در این سیستم چون دنده ها همیشه با هم درگیر هستند    می توان از دنده های مارپیچی (هلیکالی) استفاده نمود که این خود نیز در کاهش صدا و عملکرد
نرمتر جعبه دنده موثر است. در این نوع از جعبه دنده ها محل و نحوه قرارگیری دنده ها بر روی محورهای اصلی و ثانویه همانند حالت قبلی است، ولی در اینجا هر دنده روی محور اصلی با دنده متناظر روی محور ثانویه درگیر است. بنابراین در این حالت بدون توجه به اینکه اتومبیل در چه دنده ای قرار دارد، در هر حال تمام دنده ها در حال چرخش هستند، اما تنها یکی از این دنده های در حال چرخش است که می تواند به تناسب شماره دنده مورد نیاز با محور اصلی کوپل شود و آنرا به حرکت درآورد. اولین دنده روی primary shaft  و نیز تمامی دنده های روی lay shaft با محور خود کاملاً فیکس هستند و امکان جابجایی نسبت به محور را ندارند. اما دنده های روی splined main

shaft بر روی بلبرینگهایی سوار هستند و نسبت به محور خود در حال چرخشند و تنها یک دنده است که توسط مکانیزمی به محور کوپل می شود. این مکانیزم sliding dog clutch نام دارد که روی محور ثانویه هزارخار شده است. با انتخاب دنده مورد نظر زبانه های روی dog clutch مربوط به آن دنده خود را با دنده درگیر می کند و با این عمل، دنده مورد نظر با محور خود قفل می شود و در واقع نسبت انتقال دلخواه را برای ما فراهم می گرداند

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید


دانلود با لینک مستقیم


دانلود مقاله کامل درباره جعبه دنده

کارت ویزیت تاسیسات ساختمان

اختصاصی از ژیکو کارت ویزیت تاسیسات ساختمان دانلود با لینک مستقیم و پر سرعت .

کارت ویزیت تاسیسات ساختمان


 کارت ویزیت تاسیسات ساختمان

توضیحات : کارت ویزیت تاسیسات ساختمان زمینه قرمز و طوسی همراه با وکتور و عکس مربوط به تاسیسات ساختمان مناسب برای چاپ کارت ویزیت مات و براق ( کارت ویزیت تأسیسات ساختمان , ابزار ساختمان , جعبه ابزار )

حجم :   5.32 مگابایت

ابعاد :  6 در 9 سانتیمتر

ساختار رنگ :   CMYK

فونت های مورد نیاز :  B Nazanin , MRT_Digital


دانلود با لینک مستقیم


کارت ویزیت تاسیسات ساختمان

تحقیق در مورد آزمایش تیتراسیون اسید کلریدریک توسط محلول سود

اختصاصی از ژیکو تحقیق در مورد آزمایش تیتراسیون اسید کلریدریک توسط محلول سود دانلود با لینک مستقیم و پر سرعت .

تحقیق در مورد آزمایش تیتراسیون اسید کلریدریک توسط محلول سود


تحقیق در مورد آزمایش تیتراسیون اسید کلریدریک توسط محلول سود

لینک پرداخت و دانلود *پایین مطلب*

فرمت فایل:Word (قابل ویرایش و آماده پرینت)

 تعداد صفحه5

تیتراسیون اسید کلریدریک توسط محلول سود(بخش اسید قوی با باز)

 

هدف از آزمایش:
هدف از این آزمایش تعیین وابستگی بین طبیعت ماده تیتر (اسید قوی) و نوع تیتراسیون است. (اسید ضعیف با باز قوی و باز ضعیف و اسید قوی)تیتر میگردد. منحنی تیتراسیون از روی اعداد بدست آمده رسم شده و از روی آن نرمالیته و گرم اسید محاسبه می شود.
وسایل لازم:
هدایت سنج-پیپت 25 میلی لیتر- بالن ژوژه 100 میلی لیتری محتوی نمونه مجهول-بهمزن مغناطیسی- بورت 10 میلی لیتری- بشر و محلول سود 2/0 مولار
روش کار:
در نمونه مجهول را به حجم رسانده بخوبی مخلوط کنید، از مجهول را به بشر منتقل کرده به آن حدود آب مقطر اضافه نمائید. بشر را به هم زن مربوط کنید سل هدایت سنج را در بشر بگذارید تا سطح آن کاملاً پوشیده شود دقت نمائید که الکترود به بهم زن و جداره بشر تماس نداشته باشد، سرعت بهم زن را تدریجاً زیاد کنید. ولی توجه داشته باشید که سرعت آنقدر زیاد نشود که در محلول ایجاد حفره نماید دستگاه هدایت سنج را روشن کنید، یک دقیقه صبر کنید تا گرم شود. قبل از شروع تیتراسیون عدد دستگاه را بخوانید سپس در فواصل 2/0 میلی لیتری به 2/0 میلی لیتر که از ماده تیتراسیون به محلول اضافه می کنید اعداد را یادداشت کنید. نتایج را در کاغذ میلیمتری ببرید بطوریکه مقدار هدایت محلول در محور ها بر علیه میلی لیتر سود مصرف شده در محور ها رسم شود. نقطه انتهایی نرمالیته و غلظت اسید مجهول را بدست آورید. شکل منحنی بدست آمده را با ذکر دلیل در روی هر شاخه آن توجیه نموده و پیش بینی نمائید که اگر چنانچه بجای باز قوی از یک باز ضعیف مانند آمونیاک جهت تیتراسیون استفاده می کردیم چه تغییری در شکل منحنی حاصل می شد؟
(
هنگامیکه یک اسید قوی توسط باز ضعیف تیتر می شود پس از نقطه اکی والان به دلیل اینکه بازی ضعیف است و کم تفکیک می شود، افزایش هدایت خیلی بکندی صورت می گیرد، وجود مقدار زیادی نمک در محلول هم باعث کاهش شدید تفکیک باز می گردد، همچنین به دلیل هیدرولیز نمک در حدود نقطه اکی والان ، منحنی نمایش تغییرات در حدود نقطه اکی والان از حالت متقاطع خارج شود و خمیدگی می یابد.)


دانلود با لینک مستقیم


تحقیق در مورد آزمایش تیتراسیون اسید کلریدریک توسط محلول سود