1 / 35

Компьютерийн зохион байгуулалт, ассемблер хэл

Монгол Улсын Шинжлэх Ухаан Технологийн Их Сургууль. Компьютерийн зохион байгуулалт, ассемблер хэл. Код : HW200 Улирал : Хавар 2009 Багш : С. Байгалтөгс /проф, доктор/. Сэдэв 8 : Үсрэх болон салаалах командууд. Үсрэх болон салаалах командууд.

Download Presentation

Компьютерийн зохион байгуулалт, ассемблер хэл

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Монгол Улсын Шинжлэх Ухаан Технологийн Их Сургууль Компьютерийн зохион байгуулалт, ассемблер хэл Код : HW200 Улирал : Хавар 2009 Багш : С. Байгалтөгс/проф, доктор/ Сэдэв8 :Үсрэх болон салаалах командууд [www.cdeq.mn/hw200]

  2. Үсрэх болон салаалах командууд Компьютерийн хүчин чадал нь өгөгдлөөс хамаарч үйлдлийг өөрчлөх болон үйлдэлээ дахин давтах зэрэг чадвараас хамаардаг. Орчин үеийн програмчлалын хэл нь бүтцийн удирдлагыг хэрэглэн тэдгээрийг шийддэг болсон. Үйлдэл давтахыг while бүтцээр ба удирдлага сонгох замыг if – then – else бүтцээр хийдэг. Харин процессорын машин команд болон ассемблер хэлэнд эдгээр бүтэц байдаггүй. Тиймээс ассемблер хэл дээр програмаа бичихдээ эдгээр бүтцийг үндсэн ассемлер командуудыг ашиглан бий болгож ашигладаг. Эдгээр үндсэн командууд нь jump(үсрэх) болон нөхцөл салаалах командууд юм. [www.cdeq.mn/hw200]

  3. Үсрэх болон салаалах командууд Агуулга : • Үсрэх команд - jкоманд (jump – үсрэх) • Нөхцөлт салаалах команд - beqкоманд (тэнцүү бол) - bneкоманд (тэнцүү биш бол) [www.cdeq.mn/hw200]

  4. Машин цикл (эргэн санавал) Програм ажиллаж байх явцад түүнд ашиглагдах өгөгдлүүд нь үндсэн санах ойд байрладаг. Нэг командын хаяг нь 4 байт командын эхний байтын хаяг байдаг. Машин цикл бүр нэг машин командыг биелүүлдэг. Машин цикл эхэнд PC буюу program counter нь санах ойгоос биелэх командын хаягийг барин агуулж байдаг. Ингээд команд нь процессороор орон гүйцэтгэлд бэлэн болно. Машин циклийн дунд үед PC нь 4 – өөр нэмэгдэж командыг заах болно. Ингэж барьсан командаа гүйцэтгэж машин цикл нь автоматаар дарааллын дагуу командыг гүйцэтгэх болно. [www.cdeq.mn/hw200]

  5. Үргэлжлэл Харин jump команд биелэгдэх үед Program counter – т шинэ хаяг орох бөгөөд ингэснээр машин цикл эхнээсээ эхлэн (зурагт үзүүлсэн) шинэ хаягандахь командыг барих болно. Ингэж командыг гүйцэтгэхийн оронд санах ой дох jump командын дагуу процессор нь санах ой дох өөр хаягандахь командыг биелүүлдэг. PC өөрчлөгдөхийн өмнө санах ой дох jump командын дагуу команд нь биелэгдэх болно. Команд нь биелэгдсний дараа үсэрсэн хаягнаас эхлэн дараагийн команд нь биелэгддэг. Санах ой дох jump командын дагуу өөр хаягандахь командруу үсрэхийг салаалах дэлээ (delay) гэж нэрлэдэг. Энэ дэлээ нь MIPS – ын pipeline – аас шалтгаалдаг. Энгийн үед командууд нь дарааллын дагуу биелэгддэг. Машин цикл нь эдгээр командыг гүйцэтгэхээр дуудах үед гүйцэтгэл нь альхэдийн эхлэсэн байдаг. Үүнийг командын pipe гэдэг. [www.cdeq.mn/hw200]

  6. PC – ын өөрчлөлт Энд командын дарааллыг үзүүлжээ. “load” болон “add” нь энгийн команд бөгөөд “jump” команд нь PC – т орох хаягийг үзүүлжээ. Сүүлийн команд no – op нь Program counter өөрчлөгдөх хугацааг олгох салаалах дэлээг нөхөж байна. Програм эхлэхэд дараах 4 команд нь төгсгөлгүй давтагдах болно. Давталтын бүтэц нь jump командаас бүтэж байна. Энэ jump командын зорилго нь PC – т 0x00400000 хаягийг хийх юм. [www.cdeq.mn/hw200]

  7. Дадлага Энд өөр програмын схемийг үзүүлжээ. Командууд нь дараалан биелэгдэх ба эдгээрт анхаарал хандуулалгүй jump команд болон зорилгыг нь анхаарах хэрэгтэй. jump командын үсрэх хаяг 0x00450000 [www.cdeq.mn/hw200]

  8. Jump команд Өмнө үзсэнээр jump команд нь program counter – т 32 битийн хаягийг ачаалж байна. Ингэхээр 32 битийн команд нь хэрхэн 32 битийн хаягийг заах вэ? Зарим командын битүүд нь зөвхөн opcode – д хэрэглэгддэг. Энэ нь jump командын ассемблер хэлний хэлбэр юм. Командын машин хэлний бичиглэл нь : Энэ командад 26 битийн хаяг агуулагдаж байна. Харин энэ үсрэх 26 битийн хаяг нь 32 бит хаягруу хувирдаг. [www.cdeq.mn/hw200]

  9. Jump команд Энэ нь үсрэх команд биелэгдэх ажиллагааны үед хийгддэг. Командууд нь үргэлж тухайн хаягнаас эхлэх бөгөөд 32 бит командын хаягийн хамгийн бага 2 бит нь үргэлж “00” байдаг. 26 бит хаяг нь зүүн тийшээ 2 бит шилжин үр дүнд нь 28 бит хаяг бий болно. Харин шилжүүлэх үйлдлийн дараа хаягийн ахлах 4 битийг нөхөх хэрэгтэй болох бөгөөд энэ 4 бит нь PC – аас ирэх болно. Энэ нь 28 бит хаягийн ахлах оронг төгсгөж 32 бит хаяг болох болно. Жишээ нь дараагийн хуудсанд 0x5B145188 хаягруу үсрэх командын машин хэлийг үзүүлжээ. Тухайн команд нь санах ойн 0x56767250 хаягт байрших болно. [www.cdeq.mn/hw200]

  10. Jump команд [www.cdeq.mn/hw200]

  11. Jump команд Jump болон салаалах команд нь ижилхэн, хаягруу хандах болно. Jump командын үсрэх хаяг болон jump командын дараагийн команд нь санах ойд хамт байж болно. Үрсэх хаягийн эхний 4 – н бит нь ижилхэн байдаг. Компайлер нь source program – ыг машин хэлрүү хөрвүүлэх үед хаягийг анхаарах болно. Jump команд нь 32 битийн хаяглалын орон зай доторх дурын байрлал руу үсэрдэггүй. Дараах хязгаар доторх хаягруу үсэрч болдог. Энд wxyzнь PC – ын ахлах 4 битийг илэрхийлж байна. [www.cdeq.mn/hw200]

  12. Jump команд(дадлага) Дараах зурагт jump командыг хэрхэн ашигладгийг үзүүлжээ. Jump командаас бусад командууд нь операндгүй бөгөөд програмын эхний команд руу jump команд нь үсрэх болно. Сүүлийн команд нь дэлээ болж байна. j машин командын ахлах 6 – н бит нь опкод. [www.cdeq.mn/hw200]

  13. Тэмдэгт хаяг Jump командын 26 битийн талбар нь 32 битийн хаягийг илэрхийлдэг. Харин энэ нь бодож гаргахад төвөгтэй байдаг. Хэрвээ машин хэлдээр програмчлах байвал үүнийг гараараа хийх болно. Харин одоо үүнийг ассемблер хийх болно. Дараах програмыг харуулвал : main тэмдэгт хаяг нь эхний командын хаягийг илэрхийлнэ. J команд нь машин командын 26 битийг тооцон удирдлага main – рүү шилжих болно. Регистр $8-ыг нэгээр нэмэгдүүлж байгаа команд дэлээ болж өгөх болно. [www.cdeq.mn/hw200]

  14. Програмын ажиллагаа Програмын SPIM дах хэлбэрийг харуулжээ. Ажлуулахдаа мэдээж PC – ын утгыг 0x400000 гэж тохируулна. [www.cdeq.mn/hw200]

  15. Нөхцөл шалгах команд Нөхцөл шалгах команд нь хэрвээ нөхцөл нь үнэн бол шинэ хаяг руу салаалдаг. Нөхцөл нь хоёр регистрийн утгыг харьцуулж ажилладаг. Энд beqкомандыг харуулав. Хоёр регистрийн битүүдийг харьцуулах бөгөөд хэрвээ битүүд нь ижилхэн бол PC нь салаалах хаягийн утгаар өөрчлөгдөнө. [www.cdeq.mn/hw200]

  16. Ifs ба whiles Нөхцөл шалгах команд ньдавталт болон нөхцөл салаалах үйлдлийг хоёуланг нь хэрэгжүүлэхэд хэрэглэгддэг. Блок диаграмаар мөн үзүүлжээ. Мөн ассемблер хэлдээр : bneкоманд нь :

  17. True &false True ба false нь ассемблер хэл дээр нөхцөл салаалах болон jump командад хэрэглэгддэг. Дараах жишээг харцгаая. Ассемблер командуудын үндсэн удирдлагын бүтцийг үзүүлжээ. Хэрвээ үнэн бол эхний хаягруу эсвэл худал бол дараагийн тэмдэгт хаягруу үсрэх болно. (энэ нь java болон C хэлдээрх if-then-else юм.) [www.cdeq.mn/hw200]

  18. Абсолют утга Дараах ассемблер кодыг харъя.Энэ нь дээд түвшний хэлдээрх бүтцийг хэрэгжүүлсэн бөгөөд блок диаграмын дагуух энэ програм нь “А” тэмдэгт хаяг дахь утгын абсолют утгыг тооцоолох болно. [www.cdeq.mn/hw200]

  19. Абсолют утга “А” нь 0x10000000 хаягнаас эхлэх болно. Блок диаграм :

  20. Тэмдгийн битийг шилжүүлэх “А” нь сөрөг эсэхийг шийдэхдээ тэмдгийн бит нь 1 байна уу гэж шалгах болно. Үүнийг хийхдээ логик шилжүүлэх үйлдлээр тэмдгийн битийг регистрийн 0 битийн байрлалд шилжүүлэх болно. Регистр нь 0 байвал “А” нь эерэг байх болно. [www.cdeq.mn/hw200]

  21. Store -A Тэмдгийн бит нь баруун тийшээ 31 бит шилжинэ. Регистр $9 – ын бага битэд орох бөгөөд 0 байна эсэхийг шалгана. [www.cdeq.mn/hw200]

  22. Бүрэн програм нь [www.cdeq.mn/hw200]

  23. Set Instructions Энэ сэдвээр хоёр нэмэлт салаалах команд болон нөхцөлт set командыг үзэх болно. Set командууд нь нөхцөл нь true эсвэл false эсэхээс хамааран регистрт 1 эсвэл 0 – ыг тавих болно. Агуулга : [www.cdeq.mn/hw200]

  24. Bltz & bgez bltzболон bgezкоманд нь регистрийг 0 – той харьцуулдаг. [www.cdeq.mn/hw200]

  25. Set on Less Than Set командууд нь удирдлагын урсгалыг өөрчлөдөг бөгөөд регистр 1 эсвэл 0 утгыг тавьдаг. Sltкоманд нь хоёртын гүйцээлтийг хэрэглэдэг. Харин sltuкоманд нь тэмдэггүй бүхэл тоог хэрэглэдэг. [www.cdeq.mn/hw200]

  26. Set on Less Than Immediate Энд операнд регистрийг шууд утгатай харьцуулах хоёр командыг үзүүлжээ. Sltiнь хоёртын гүйцээлт ашиглах болно. sltiu нь тэмдэггүй бүхэл тоог хэрэглэдэг. [www.cdeq.mn/hw200]

  27. Температурын тестер Одоо температурын тестерийн удирдлагын програмыг бичье. Температурийн хязгаар нь цельсийн 30 – 55 градус байх ба температурийн мэдрүүрийн төхөөрөмж нь температурыг регистр $2 – т орох болно. Тус програм нь регистр $2 дох тэмдэггүй бүхэл тоог тус хязгаарт байгааг шалгах ба хэрвээ хязгаарт байвал регистр $3 – т 1 – ийг тавина, харин эсрэг тохиолдолд 0 – ыг тавина. [www.cdeq.mn/hw200]

  28. Програмын эхлэл [www.cdeq.mn/hw200]

  29. Програмын эхлэл Set командад хэрэглэгдэх шууд операнд нь “55 – тай тэнцүү эсвэл бага” бол 56 болж өөрчлөгдөх болно. [www.cdeq.mn/hw200]

  30. Complete Program [www.cdeq.mn/hw200]

  31. Delay Slot Bug Програм дахь операндгүй команд нь эхний delay slot – ыг нөхөж байгаа. Дараагийн операндгүй команд нь чухал бөгөөд хэрвээ байхгүй бол дараагийн команд болох oriнь 0 төлвийг тавих болно. [www.cdeq.mn/hw200]

  32. Давталтын тоолуур Програмын давталтын ерөнхий хэлбэр нь эхний утгаас эхлэн хязгаарын утга хүртэл тоолон удирдагдах болно. Үүнийг давталтын тоолуур гэж нэрлэх бөгөөд тоолуурын утга нь давталтын удирдлагын хувьсагч байх болно. Давталт нь нөхцөл шалгах, үсрэх зэрэг командуудаар хийгдэнэ. Давталт нь 3 хэсгээс бүрдэнэ : • Counter инициализаци хийгдэнэ • Давталтын төгсгөлийг шалгана • Counter нэгээр нэмэгдэнэ [www.cdeq.mn/hw200]

  33. Ассемблер хэлний давталт [www.cdeq.mn/hw200]

  34. Complete Loop Энд давталтыг delay slot – той хамт хэрэглэсэн. endLp нь delay slot биш бөгөөд SPIM – дахь програмын ажиллагааг эвтэйхэн болгодог. [www.cdeq.mn/hw200]

  35. Summing Program [www.cdeq.mn/hw200]

More Related