โครงสร้างคำสั่งของแอสเซมเบลอร์เพื่อแก้แค้น คำสั่งประกอบภาพยนตร์ RAM, รีจิสเตอร์, การจัดเก็บข้อมูล

เพื่อให้เครื่องสามารถจดจำคำสั่งของมนุษย์ในระดับฮาร์ดแวร์ได้ จำเป็นต้องตั้งค่าลำดับเพลงของการกระทำเป็น "ศูนย์และคำสั่ง" ผู้ประกอบจะกลายเป็นผู้ช่วยของเขา นี่คือยูทิลิตี้ที่เกี่ยวข้องกับการแปลคำสั่งคอมพิวเตอร์ การเขียนโปรแกรมเป็นกระบวนการที่ลำบากและซับซ้อนมาก ภาษานี้ไม่ได้มีไว้สำหรับการสร้างการกระทำที่เบาและเรียบง่าย ในขณะนี้การเขียนโปรแกรมทุกประเภท (Assembler ทำงานได้อย่างมหัศจรรย์) ช่วยให้คุณสามารถเขียนงานพิเศษที่มีประสิทธิภาพซึ่งส่งผลกระทบอย่างมากต่อการทำงานของฮาร์ดแวร์ การใช้งานหลักคือการสร้างคำสั่งไมโครและโค้ดขนาดเล็ก ภาษานี้ให้ความเป็นไปได้มากกว่า Nizh Pascal หรือ S.

คำอธิบายสั้น ๆ ของภาษาแอสเซมเบลอร์

โปรแกรมทั้งหมดของคุณแบ่งออกเป็นระดับ: ต่ำและสูง ไม่ว่าจะมาจากระบบวากยสัมพันธ์ของ "ตระกูล" ของ Assembler ปรากฏว่านี่เป็นผลมาจากการถ่ายทอดภาษาที่กว้างขวางและเป็นปัจจุบันที่สุด ส่วนอื่นๆ ยังเป็นที่ถกเถียงกันอยู่และสามารถนำมาใช้เพื่อทำให้ระบบคอมพิวเตอร์เสียหายได้ทั้งหมด

คุณสมบัติหลักของคอมไพเลอร์คือความเรียบง่ายของรูทีนย่อย ไวน์เหล่านี้โดดเด่นจากไวน์ที่ทำงานในระดับสูง เมื่อคำนึงถึงการเขียนโปรแกรมใดๆ แอสเซมเบลอร์จะทำงานได้เร็วและมีประสิทธิภาพยิ่งขึ้น เพื่อที่จะเขียนถึงนิว โปรแกรมง่าย ๆคุณไม่จำเป็นต้องใช้เวลามากเกินไป

สั้น ๆ เกี่ยวกับโครงสร้างของภาพยนตร์

ถ้าเราพูดถึงงานและโครงสร้างการทำงานของคอมพิวเตอร์เราสามารถพูดได้อย่างชัดเจนว่าคำสั่งของมันคล้ายกับคำสั่งของโปรเซสเซอร์อย่างไร จากนั้น Assembler vikoryst mnemocode ซึ่งเป็นคนที่มีประโยชน์ที่สุดในการเขียน

นอกเหนือจากการเขียนโปรแกรมอื่นๆ แล้ว แอสเซมเบลอร์จะแทนที่ที่อยู่สำหรับบันทึกหน่วยความจำกลางของแท็กเพลง ปัญหาเกี่ยวกับกระบวนการของรหัส vikonannya จะถูกแปลงเป็นสิ่งที่เรียกว่าคำสั่ง ที่อยู่เหล่านี้เป็นที่อยู่ที่สำคัญซึ่งไม่ส่งผลกระทบต่อการทำงานของโปรเซสเซอร์ (ไม่มีการแปลเป็นภาษาเครื่อง) แต่จำเป็นสำหรับการรับรู้โดยแกนหลักของการเขียนโปรแกรม

สำหรับสกินไลน์ของโปรเซสเซอร์นั้นก็มีของตัวเอง ในสถานการณ์นี้กระบวนการใด ๆ จะถูกต้องรวมถึงกะด้วย

ภาษาแอสเซมเบลอร์มีไวยากรณ์จำนวนหนึ่งที่จะกล่าวถึงในบทความ

หนังพลัสซี่

แอปพลิเคชันที่สำคัญและสะดวกที่สุดของภาษาแอสเซมเบลอร์ก็คือสามารถใช้เขียนโปรแกรมสำหรับโปรเซสเซอร์ที่มีขนาดกะทัดรัดยิ่งขึ้นได้ เมื่อโค้ดมีขนาดใหญ่ กิจกรรมของกระบวนการจะถูกเปลี่ยนเส้นทางไปที่ RAM ดังนั้นทั้งหมดจึงเสร็จสมบูรณ์ได้อย่างราบรื่นและไม่มีข้อผิดพลาดตามความเป็นจริง พวกเขาถูกควบคุมโดยโปรแกรมที่ผ่านการรับรอง

ไดรเวอร์, ระบบปฏิบัติการ, BIOS, คอมไพเลอร์, ล่าม ฯลฯ - เปิดโปรแกรมทั้งหมด ภาษาแอสเซมเบลอร์.

ด้วยความช่วยเหลือของตัวแยกชิ้นส่วน การแปลจากเครื่องคืออะไร คุณสามารถเข้าใจได้ง่ายว่าข้อกำหนดของระบบอื่นทำงานอย่างไร แต่ไม่มีคำอธิบายก่อนหน้านั้น อย่างไรก็ตาม นี่จะเป็นไปได้มากกว่านั้นหากโปรแกรมนั้นง่าย น่าเสียดายที่เป็นเรื่องยากที่จะแก้ไขโค้ดที่ไม่สำคัญ

ภาพยนตร์ลบ

น่าเสียดายที่การเรียนรู้ภาษาเป็นสิ่งสำคัญสำหรับโปรแกรมเมอร์มือใหม่ (และมืออาชีพส่วนใหญ่) แอสเซมเบลอร์สามารถมองเห็นได้ ฉันจะอธิบายรายงานคำสั่งที่จำเป็น สำหรับผู้ที่จำเป็นต้องควบคุมคำสั่งของเครื่องจักร ความเป็นไปได้ในการให้อภัยการกระทำและความซับซ้อนของชัยชนะจะเพิ่มขึ้น

เพื่อที่จะเขียนเรื่องราวด้วยตัวเอง แค่โปรแกรมโปรแกรมเมอร์อาจมีคุณสมบัติที่จะบรรลุความรับผิดชอบระดับสูง น่าเสียดายที่ fakhivets โดยเฉลี่ยมักเขียนโค้ดสกปรก

หากมีการอัปเดตแพลตฟอร์มที่สร้างโปรแกรม คำสั่งทั้งหมดจะต้องถูกเขียนใหม่ด้วยตนเอง ซึ่งหมายถึงภาษานั้นเอง แอสเซมเบลอร์ไม่รองรับฟังก์ชั่นควบคุมประสิทธิภาพของกระบวนการโดยอัตโนมัติและการแทนที่องค์ประกอบใด ๆ

ทีมมูฟวี่

ตามความเป็นจริงแล้ว ตัวประมวลผลสกินมีชุดคำสั่งของตัวเอง องค์ประกอบที่ง่ายที่สุดที่สามารถจำแนกได้ว่าเป็นประเภทคือรหัสต่อไปนี้:


คำสั่งของ Vikoristannya

การเขียนโปรแกรมไมโครคอนโทรลเลอร์ระดับต่ำสุด (แอสเซมเบลอร์ไม่อนุญาตและจัดการกับฟังก์ชั่นอย่างน่าอัศจรรย์) ในระดับต่ำสุดมักจะจบลงได้สำเร็จ วิธีที่ดีที่สุดคือการใช้โปรเซสเซอร์กับทรัพยากรที่ใช้ร่วมกัน สำหรับเทคโนโลยี 32 บิต Tsya movเป็นเรื่องมหัศจรรย์ที่จะมาถึง มักจะมีคำสั่งมากกว่านี้ในโค้ด นี่คืออะไร?

แล้ววิโครินิยมล่ะ?


ก่อนอื่น จำเป็นต้องพูดถึงข้อเท็จจริงที่ว่าคำสั่งไม่ได้แปลเป็นภาษาเครื่อง พวกมันถูกควบคุมโดยคอมไพเลอร์ เมื่อเปลี่ยนคำสั่ง พารามิเตอร์เหล่านี้ (อาจเป็นฟังก์ชันที่แตกต่างกัน) จะถูกกระจายไม่เฉพาะกับโปรเซสเซอร์ที่แตกต่างกัน แต่ยังกระจายไปยังโครงสร้างของนักแปลที่แตกต่างกันด้วย คำสั่งหลักบางส่วนสามารถตั้งชื่อได้ดังนี้:

เหตุใดพวกเนิร์ดจึงลบชื่อภาษา - "แอสเซมเบลอร์"? เรียนรู้เกี่ยวกับตัวแปลและคอมไพเลอร์ ซึ่งจะช่วยให้สามารถเข้ารหัสข้อมูลได้ ในภาษาอังกฤษ Assembler ไม่ได้มีความหมายอะไรมากไปกว่าการประกอบ โปรแกรมไม่ได้ประกอบด้วยตนเอง แต่โครงสร้างถูกสร้างขึ้นโดยอัตโนมัติ ยิ่งไปกว่านั้น ในขณะนี้ ความแตกต่างระหว่างเงื่อนไขระหว่างคริสตูวัคและฟาคิฟต์ได้ลบออกไปแล้ว การเขียนโปรแกรมภาษามักเรียกว่าแอสเซมเบลอร์ถึงแม้ว่ามันจะมีประโยชน์มากกว่าก็ตาม

ด้วยชื่อที่ได้รับการยอมรับในระดับสากล ผู้คนจึงมีวิธีแก้ปัญหาอย่างสันติ ซึ่งเป็นภาษาหลักของระดับต่ำ (หรือบรรทัดฐานมาตรฐานสำหรับมัน) เพื่อให้โปรแกรมเมอร์เข้าใจว่าเขากำลังพูดถึงโครงสร้างใด จำเป็นต้องชี้แจงว่าแพลตฟอร์มใดที่แอสเซมเบลอร์ภาษากำลังถูกวิเคราะห์

มาโครโซบี

ภาษาแอสเซมบลีซึ่งสร้างขึ้นเมื่อเร็ว ๆ นี้มีการติดไวรัสมาโคร กลิ่นเหม็นจะหายไปตามการเขียนและการเขียนโปรแกรม แน่นอนว่านักแปลช่วยให้คุณไม่ต้องเขียนโค้ดเร็วขึ้นมาก เมื่อคุณตัดสินใจเลือกได้แล้ว คุณสามารถเขียนบล็อกคำสั่งจำนวนมาก หรือพูดง่ายๆ ก็คือใช้ฟังก์ชันมาโคร กลิ่นเหม็นทำให้คุณสามารถผสมผสานระหว่างโลกทั้งสองได้อย่างรวดเร็ว

เมื่อคำสั่งแมโครถูกเอาออก โปรแกรมแมโครจะเอาแมโครแอสเซมเบลอร์ออก บางครั้งอาจมีการเปลี่ยนแปลงอย่างกว้างขวาง ตราบใดที่คุณสมบัติการทำงานของมันลดลงเหลือเพียงคำสั่งเดียว ความชัดเจนในโค้ดช่วยให้ทำงานได้ง่ายขึ้น เพื่อให้สมเหตุสมผลและชัดเจนยิ่งขึ้น อย่างไรก็ตาม สิ่งสำคัญคือต้องจำไว้ว่าในบางกรณีมาโครจะต้องจัดการกับสถานการณ์นั้น

งานหลักสูตร

เบื้องหลังวินัย” การเขียนโปรแกรมอย่างเป็นระบบ»

หัวข้อที่ 4: “การแก้ปัญหาขั้นตอน”

ตัวเลือกที่ 2

มหาวิทยาลัยแห่งรัฐสคิดโน-ไซบีเรีย

เทคโนโลยีและการจัดการ

____________________________________________________________________

วิทยาลัยเทคโนโลยี

ซาฟดันเนีย

สำหรับงานหลักสูตร

การลงโทษ:
หัวข้อ: เวอร์ชันของงานสำหรับโพรซีเดอร์
วิโคนาเวทส์ยา:กลาวินสกา อารินา โอเล็คซานดริฟนา
เคริฟนิค: ดัมบาเอวา เซเซกมา วิคโตริฟนา
สรุปงานสั้นๆ การใช้โปรแกรมย่อยของแอสเซมเบลอร์
การเชื่อมโยงงานเข้ากับโปรแกรมย่อย
1. ส่วนทางทฤษฎี : ข้อมูลพื้นฐานเกี่ยวกับภาษา Assembler (พิมพ์
คำสั่ง ฯลฯ) การจัดระเบียบโปรแกรมย่อย วิธีการถ่ายโอนพารามิเตอร์
ในโปรแกรมย่อย
2. ส่วนที่ใช้งานได้จริง: พัฒนาโปรแกรมย่อยสองโปรแกรม โปรแกรมหนึ่งเปลี่ยนตัวอักษรที่กำหนดเป็นส่วนหัว (รวมถึงนักเขียนชาวรัสเซียด้วย) และอีกโปรแกรมหนึ่งแปลงตัวอักษรให้เป็นตัวอักษรปกติ
แปลงตัวอักษรที่กำหนดให้เป็นหัว และอีกตัวหนึ่งแปลงตัวอักษรเป็นแถว
แปลงตัวอักษรเป็นแถว
เงื่อนไขโครงการตามกำหนดการ:
1. ส่วนทางทฤษฎี - 30% จนถึงปีที่ 7
2. ส่วนปฏิบัติ - 70% สูงสุด 11 ปี
3. Zakhist – 100% จนถึงปีที่ 14
Vimogi ก่อนลงทะเบียน:
1. อาจนำเสนอคำอธิบายของ Rozrahunkov สำหรับโครงการหลักสูตรนี้
อิเล็กทรอนิกส์และฉบับพิมพ์
2. ภาระผูกพันเกิดจากการพิมพ์ดีดไม่น้อยกว่า 20 หน้าโดยไม่มีเอกสารเพิ่มเติม
3. RPP จัดทำขึ้นตาม GOST 7.32-91 และลงนามโดยเสมียน

หุ่นยนต์ Kerivnik __________________

วิโคนาเวตส์ __________________

วันวางจำหน่าย " 26 " เวเรสเนีย 2017 ร.


รายการ

2

1.1 ข้อมูลพื้นฐานเกี่ยวกับแอสเซมเบลอร์ภาษา 3

1.1.1 คำสั่งการโทร 4

1.2 การจัดระเบียบโปรแกรมย่อยในภาษาแอสเซมเบลอร์ 4

1.3 วิธีการถ่ายโอนพารามิเตอร์ในโปรแกรมย่อย 6

1.3.1 การถ่ายโอนพารามิเตอร์ผ่านรีจิสตรี

1.3.2 การส่งผ่านพารามิเตอร์ผ่านสแต็ก 7

2 การออกแบบเชิงปฏิบัติ 9

2.1 คำชี้แจงของปัญหา 9

2.2 คำอธิบายของงานที่เกี่ยวข้อง 9

2.3 การทดสอบโปรแกรม

วิสโนวอค 8


รายชื่อวรรณกรรม

เข้า เห็นได้ชัดว่าการเขียนโปรแกรมใน Assembly มีความสำคัญ อย่างที่คุณทราบ มีหลายสิ่งหลายอย่างเกิดขึ้นในขณะนี้ระดับสูง

ซึ่งช่วยให้คุณใช้เวลาน้อยลงมากในการเขียนโปรแกรม โดยธรรมชาติแล้วโภชนาการจะถูกตำหนิหากโปรแกรมเมอร์อาจตระหนักถึงความจำเป็นในการใช้แอสเซมเบลอร์เมื่อเขียนโปรแกรม ในเวลานี้ คุณสามารถระบุได้สองส่วนซึ่งภาษาแอสเซมบลีมีประโยชน์และมักไม่จำเป็น ประการแรกสิ่งเหล่านี้เรียกว่าโปรแกรมระบบเครื่องเก่าซึ่งมีกลิ่นเหม็นสิ่งปลูกสร้างต่างๆ คอมพิวเตอร์ (โปรแกรมเรียกอีกอย่างว่าไดรเวอร์) ในซิกโปรแกรมระบบ มีการใช้คำสั่งเครื่องพิเศษเนื่องจากไม่จำเป็นต้องยุ่งเกี่ยวกับคำสั่งพื้นฐาน (หรือตามที่ดูเหมือนสมัครแล้ว

) โปรแกรม เป็นไปไม่ได้หรือสำคัญด้วยซ้ำที่จะวางคำสั่งเหล่านี้เป็นภาษาระดับสูง

ความซบเซาของแอสเซมเบลอร์อีกด้านเกี่ยวข้องกับการปรับโปรแกรมซอฟต์แวร์ให้เหมาะสม เป็นเรื่องปกติมากที่โปรแกรมถ่ายโอน (คอมไพเลอร์) จะสร้างโปรแกรมคอมพิวเตอร์ที่ไม่มีประสิทธิภาพแม้แต่น้อย โดยปกติแล้ว จะมีโปรแกรมที่มีลักษณะเป็นตัวเลข ซึ่งโดยส่วนใหญ่แล้วโปรแกรม (รอบส่วนหัว) จะมีจำนวนน้อยมาก (ประมาณ 3-5%) โดยส่วนใหญ่ ปัญหาสามารถแก้ไขได้โดยสิ่งที่เรียกว่าระบบการเขียนโปรแกรมแบบสมบูรณ์ ซึ่งช่วยให้ส่วนของโปรแกรมสามารถเขียนในภาษาต่างๆ ได้ ตรวจสอบให้แน่ใจว่าส่วนหลักของโปรแกรมเขียนด้วยการเขียนโปรแกรมระดับสูงของฉัน (Fortran, Pascal ฯลฯ) และส่วนที่สำคัญที่สุดของโปรแกรมเขียนด้วย Assembly ความเร็วการทำงานของทุกโปรแกรมสามารถเพิ่มขึ้นได้อย่างมาก บ่อยครั้งที่นี่เป็นวิธีเดียวที่จะดีบักโปรแกรมและรับผลลัพธ์ในชั่วโมงที่สนุกสนาน โดยชื่อนี้єการเรียนรู้ทักษะการปฏิบัติในการเขียนโปรแกรมหุ่นยนต์โดยใช้ภาษาแอสเซมเบลอร์

ซาฟดันนยา โรโบติ:

1. อ่านข้อมูลพื้นฐานเกี่ยวกับภาษา Assembler (โครงสร้างและส่วนประกอบของโปรแกรม Assembler รูปแบบคำสั่ง การจัดระเบียบโปรแกรมย่อย ฯลฯ)

2. กำหนดประเภทของการดำเนินการบิต รูปแบบ และตรรกะของคำสั่งเชิงตรรกะของแอสเซมเบลอร์

3. สร้างโปรแกรมย่อยแต่ละรายการใน Assembly

4.. กำหนดคำศัพท์เกี่ยวกับหุ่นยนต์วิโคนัน

1 การออกแบบเชิงทฤษฎี

ข้อมูลพื้นฐานเกี่ยวกับภาษาแอสเซมเบลอร์

Assembler เป็นโปรแกรมภาษาระดับต่ำที่มีรูปแบบสำหรับบันทึกคำสั่งเครื่องที่มนุษย์สามารถประมวลผลได้อย่างง่ายดาย

คำสั่งแอสเซมเบลอร์ภาษาจะสอดคล้องกับคำสั่งของตัวประมวลผลทีละคำสั่ง และในความเป็นจริง ในรูปแบบสัญลักษณ์แบบแมนนวล จะบันทึก (โค้ดช่วยในการจำ) คำสั่งและอาร์กิวเมนต์ของคำสั่งเหล่านั้น ภาษาแอสเซมเบลอร์ยังมีบทคัดย่อโปรแกรมพื้นฐาน: การเชื่อมโยงส่วนของโปรแกรมและข้อมูลผ่านป้ายกำกับที่มีชื่อและคำสั่งเชิงสัญลักษณ์

คำสั่งแอสเซมเบลอร์อนุญาตให้รวมบล็อกข้อมูลในโปรแกรม (อธิบายอย่างชัดเจนหรืออ่านจากไฟล์) ทำซ้ำส่วนของเพลงหลาย ๆ ครั้งตามที่ระบุไว้ รวบรวมชิ้นส่วนด้านหลังสมอง ตั้งค่าที่อยู่ของส่วนวิกิ เปลี่ยนค่าของเครื่องหมายในกระบวนการคอมไพล์ ค่ามาโคร Vykoristuvat พร้อมพารามิเตอร์และใน

ความชุ่มชื้นและข้อบกพร่อง

· จำนวนโค้ดแบบ over-the-top ขั้นต่ำ (ขึ้นอยู่กับจำนวนคำสั่งขั้นต่ำและจำนวนปริศนา) ผลลัพธ์ที่ได้คือความเร็วที่มากขึ้นและขนาดโปรแกรมที่เล็กลง

· ภาระผูกพันที่ดีต่อโค้ด รายละเอียดเพิ่มเติมจำนวนมาก

· อ่านโค้ดได้ไม่ดี, การปรับปรุงที่ยาก (การปรับปรุง, การเพิ่มความสามารถ)

· ปัญหาของการนำกระบวนทัศน์การเขียนโปรแกรมไปปฏิบัติและแบบแผนที่ซับซ้อนอื่นๆ ความซับซ้อนของการพัฒนา

· มีห้องสมุดที่มีอยู่น้อยกว่า ห้องสมุดเหล่านี้มีคุณค่าน้อย

· การเข้าถึงอุปกรณ์โดยตรง: พอร์ตอินพุต-เอาต์พุต การลงทะเบียนตัวประมวลผลพิเศษ

· “ความพอดี” สูงสุดสำหรับแพลตฟอร์มที่ต้องการ (vicoristan คำแนะนำพิเศษคุณสมบัติทางเทคนิคของ "การปีน");

· การไม่ยอมรับแพลตฟอร์มอื่น (ยกเว้นสองแพลตฟอร์มที่น้อยกว่า)

นอกเหนือจากคำสั่งแล้ว โปรแกรมยังสามารถมีคำสั่ง: คำสั่งที่ไม่ได้แปลโดยตรงเป็นคำสั่งของเครื่อง แต่ถูกดำเนินการโดยคอมไพเลอร์ การพิมพ์และไวยากรณ์ของสิ่งเหล่านี้แตกต่างกันอย่างมีนัยสำคัญและไม่ได้อยู่ในแพลตฟอร์มฮาร์ดแวร์ แต่อยู่ในคอมไพเลอร์ซึ่งอาจมีการเปลี่ยนแปลง (ภาษาถิ่นที่แตกต่างกันภายในสถาปัตยกรรมตระกูลเดียวกัน) คุณสามารถดูได้ดังนี้:

· ค่าของข้อมูล (ค่าคงที่และการเปลี่ยนแปลง)

· การจัดระเบียบโปรแกรมในหน่วยความจำและพารามิเตอร์ของไฟล์เอาท์พุต

· การตั้งค่าโหมดหุ่นยนต์คอมไพเลอร์

· นามธรรมที่กว้างขวาง (เหล่านี้เป็นองค์ประกอบของระบบระดับสูง) - ตั้งแต่การออกแบบขั้นตอนและฟังก์ชัน (เพื่อลดความซับซ้อนในการดำเนินการตามกระบวนทัศน์การเขียนโปรแกรมขั้นตอน) ไปจนถึงโครงสร้างทางจิตและลูป (สำหรับกระบวนทัศน์การเขียนโปรแกรมเชิงโครงสร้าง)

· มาโคร

คำสั่งโทรออก

คำสั่งทั่วไปในแอสเซมเบลอร์ภาพยนตร์:

· คำสั่งถ่ายโอนข้อมูล (mov และ in)

· คำสั่งทางคณิตศาสตร์ (เพิ่ม, ย่อย, อิมัล และอื่นๆ)

การดำเนินการทางตรรกะและระดับบิต (หรือ, และ, xor, shr และ in)

· คำสั่งสำหรับควบคุมความคืบหน้าของการทำงานของโปรแกรม (jmp, loop, ret ฯลฯ)

· คำสั่งการโทรขัดจังหวะ (บางครั้งเรียกว่าคำสั่งควบคุม): int

· คำสั่งเข้าและแสดงผลในพอร์ต (เข้า, ออก)

สำหรับไมโครคอนโทรลเลอร์และไมโครคอมพิวเตอร์ ยังมีคำสั่งทั่วไปที่จะยุติการตรวจสอบและการเคลื่อนไปนอกสมอง เช่น

· jne - ไปถ้ามีมากกว่าหนึ่งอัน

· jge - ไปที่โบราณมากขึ้นหรือมากขึ้น

ซากัลเนีย วิโดมอสตีเกี่ยวกับภาษาแอสเซมเบลอร์

ภาษาสัญลักษณ์ของแอสเซมเบลอร์ช่วยให้คุณจับข้อบกพร่องของการเขียนโปรแกรมภาษาเครื่องได้อย่างมีความหมาย

ข้อได้เปรียบหลักคือในภาษาแอสเซมเบลอร์ องค์ประกอบของโปรแกรมทั้งหมดจะแสดงในรูปแบบสัญลักษณ์ การกลับรายการชื่อคำสั่งเชิงสัญลักษณ์ในโค้ดคู่จะขึ้นอยู่กับ โปรแกรมพิเศษ- แอสเซมเบลอร์ที่สร้างโปรแกรมจากหุ่นยนต์ที่ทำงานหนักและปิดมันอย่างหลีกเลี่ยงไม่ได้ด้วยความเมตตา

ชื่อสัญลักษณ์ซึ่งป้อนเมื่อเขียนโปรแกรมแอสเซมเบลอร์แสดงถึงความหมายของโปรแกรมและตัวย่อของคำสั่งเป็นหน้าที่หลัก ตัวอย่างเช่น: PARAM – พารามิเตอร์, TABLE – ตาราง, MASK – มาสก์, ADD – นอกจากนี้, SUB – ข้อมูลเพิ่มเติม n. ชื่อดังกล่าวง่ายต่อการจดจำโดยโปรแกรมเมอร์

ในการตั้งโปรแกรมแอสเซมเบลอร์ คุณต้องมีอุปกรณ์เครื่องมือต่างๆ จำนวนมาก รวมถึงสิ่งต่อไปนี้: คอมเพล็กซ์การประมวลผลที่จำเป็นซึ่งใช้ micro-EOM หรือ PEOM พร้อมชุดอุปกรณ์ต่อพ่วง (ออร่าปุ่มตัวเลขและตัวเลข, การแสดงสัญลักษณ์, NGMD และอุปกรณ์ drukuvalny) เนื่องจาก รวมถึงระบบการเขียนโปรแกรมข้ามไคประจำถิ่นสำหรับไมโครโปรเซสเซอร์ประเภทที่จำเป็น ภาษาแอสเซมเบลอร์ช่วยให้คุณเขียนและพัฒนาโปรแกรมที่ซับซ้อนสูงได้อย่างมีประสิทธิภาพ โดยใช้ภาษาเครื่องต่ำ (สูงสุด 1 - 4 KB)

ภาพยนตร์แอสเซมเบลอร์เป็นแบบเน้นเครื่องจักร โดยจะถูกจัดเก็บไว้ในภาษาเครื่องและโครงสร้างของไมโครโปรเซสเซอร์ที่รองรับ ดังนั้นคำสั่งสกินของไมโครโปรเซสเซอร์จึงได้รับชื่อที่เป็นสัญลักษณ์มากขึ้น

ภาษาแอสเซมเบลอร์ช่วยเพิ่มผลผลิตให้กับโปรแกรมเมอร์เหนือภาษาเครื่องและในขณะเดียวกันก็ประหยัดความสามารถในการใช้ทรัพยากรฮาร์ดแวร์ที่เข้าถึงได้ของซอฟต์แวร์ทั้งหมดของไมโครโปรเซสเซอร์ ช่วยให้โปรแกรมเมอร์ที่มีคุณสมบัติเหมาะสมสามารถสร้างโปรแกรมที่สามารถทำให้เสร็จสิ้นได้ภายในเวลาอันสั้น และใช้พื้นที่หน่วยความจำน้อยลง เมื่อเทียบกับโปรแกรมที่สร้างโดยทีมงานระดับสูงของฉัน

ด้วยเหตุนี้ ในทางปฏิบัติโปรแกรมทั้งหมดสำหรับควบคุมอุปกรณ์อินพุต/เอาท์พุต (ไดรเวอร์) จึงเขียนด้วยภาษาแอสเซมเบลอร์ โดยไม่ต้องกังวลกับความเป็นไปได้ในการเข้าถึงภาษาระดับสูงที่หลากหลาย

การใช้ภาษาแอสเซมเบลอร์ โปรแกรมเมอร์สามารถตั้งค่าพารามิเตอร์ต่อไปนี้:

ตัวช่วยจำ (ชื่อสัญลักษณ์) ของคำสั่งสกินของภาษาเครื่องของไมโครโปรเซสเซอร์

รูปแบบมาตรฐานสำหรับโปรแกรมจำนวนหนึ่งที่อธิบายเป็นภาษาแอสเซมบลี

รูปแบบสำหรับการแทรก ในรูปแบบต่างๆตัวเลือกการกำหนดที่อยู่และคำสั่ง

รูปแบบการแทรกค่าคงที่เชิงสัญลักษณ์และค่าคงที่จำนวนเต็มในระบบตัวเลขต่างๆ

คำสั่งหลอกที่ควบคุมกระบวนการประกอบ (แปล) โปรแกรม

ในแอสเซมเบลอร์ภาษา โปรแกรมจะถูกเขียนทีละแถว กล่าวคือ ป้อนหนึ่งแถวต่อคำสั่ง

สำหรับ micro-EOM ที่ใช้ไมโครโปรเซสเซอร์ประเภทที่กว้างที่สุด คุณสามารถค้นหาตัวแปรภาษาแอสเซมเบลอร์ได้จำนวนหนึ่ง เพื่อวัตถุประสงค์ในทางปฏิบัติ คำจำกัดความที่กว้างขึ้นคือหนึ่ง - นี่คือชื่อของภาษาแอสเซมเบลอร์มาตรฐาน

การเขียนโปรแกรมทำได้ในระดับคำสั่งเครื่องเท่านั้น - ในระดับต่ำสุดซึ่งเป็นไปได้สำหรับโปรแกรมที่พับไว้ ระบบคำสั่งเครื่องจักรอาจเพียงพอที่จะดำเนินการที่จำเป็น เช่น การใส่อุปกรณ์เครื่องคอมพิวเตอร์

คำสั่งเครื่องสกินประกอบด้วยสองส่วน:

· ปฏิบัติการ - เริ่มแรก "ทำงาน";

· ตัวถูกดำเนินการ - วัตถุเริ่มต้นของการประมวลผล "ทำไมต้องทำงาน"

คำสั่งเครื่องของไมโครโปรเซสเซอร์ซึ่งเขียนด้วยภาษาแอสเซมเบลอร์อยู่ในแถวเดียวซึ่งมีลักษณะทางวากยสัมพันธ์:

คำสั่งแท็ก / ตัวถูกดำเนินการคำสั่ง ; ความคิดเห็น

ในกรณีนี้ ฟิลด์บังคับในแถวคือคำสั่งหรือคำสั่ง

ป้ายกำกับ คำสั่ง/คำสั่ง และตัวถูกดำเนินการ (รวมถึง) จะถูกคั่นด้วยช่องว่างหรืออักขระแท็บเดียว

ถ้าคำสั่งหรือคำสั่งต้องดำเนินต่อไปในแถวที่น่ารังเกียจ จะใช้สัญลักษณ์แบ็กสแลช: \

ภาษาของแอสเซมเบลอร์ไม่ได้แยกตัวอักษรขนาดใหญ่และเล็กในการเขียนคำสั่งและคำสั่ง

ที่อยู่โดยตรง: ที่อยู่ที่มีประสิทธิภาพจะถูกระบุโดยตรงโดยฟิลด์คำสั่งเครื่อง ซึ่งอาจมีขนาด 8, 16 หรือ 32 บิต

mov eax, ผลรวม; eax = ผลรวม

แอสเซมเบลอร์จะแทนที่ผลรวมด้วยที่อยู่ที่เกี่ยวข้องซึ่งจัดเก็บไว้ในส่วนข้อมูล (โดยปกติจะระบุโดย ds register) และค่าที่เก็บไว้ด้านหลังที่อยู่ผลรวมด้วย eax register

ที่อยู่ทางอ้อมดูเหมือนว่านี้:

· การกำหนดที่อยู่พื้นฐานทางอ้อม (รีจิสทรี)

· ฐานทางอ้อม (รีจิสตรี) จัดการกับการกระจัด

· การกำหนดที่อยู่ดัชนีทางอ้อม

· การกำหนดดัชนีฐานทางอ้อม

การกำหนดที่อยู่ฐานทางอ้อม (รีจิสทรี)ด้วยการระบุที่อยู่นี้ ที่อยู่ที่มีประสิทธิภาพของตัวถูกดำเนินการสามารถพบได้ในรีจิสเตอร์ใดๆ ที่มีวัตถุประสงค์พิเศษ ยกเว้น sp/esp และ bp/ebp (ซึ่งเป็นรีจิสเตอร์เฉพาะสำหรับการทำงานกับเซ็กเมนต์สแต็ก) ในทางวากยสัมพันธ์ โหมดการกำหนดแอดเดรสของคำสั่งนี้แสดงโดยการใส่ชื่อรีจิสเตอร์ไว้ในเครื่องหมายรูปสี่เหลี่ยมจัตุรัส

mov eax, ; eax = * esi; *ค่า esi ด้านหลังที่อยู่ esi

โครงสร้างคำสั่งของการเขียนโปรแกรมแอสเซมเบลอร์จะอยู่ในระดับคำสั่งเครื่องเท่านั้น - ในระดับต่ำสุดที่สามารถตั้งโปรแกรมบนคอมพิวเตอร์ได้ ระบบคำสั่งเครื่องจักรอาจเพียงพอที่จะดำเนินการที่จำเป็น เช่น อุปกรณ์ของเครื่องจักร คำสั่งสกินแมชชีนประกอบด้วยสองส่วน: ส่วนปฏิบัติการ ซึ่งหมายถึง "สิ่งที่ต้องดำเนินการ" และตัวถูกดำเนินการ ซึ่งหมายถึงวัตถุในการประมวลผล ดังนั้น "สิ่งที่ต้องดำเนินการ" คำสั่งเครื่องของไมโครโปรเซสเซอร์ซึ่งเขียนด้วยภาษา Assembler อยู่ในแถวเดียว ซึ่งสามารถเห็นได้อย่างรวดเร็ว: คำสั่ง label/directive operand(s); ความคิดเห็น ป้าย คำสั่ง/คำสั่ง และตัวถูกดำเนินการถูกกำหนดโดยช่องว่างหรืออักขระแท็บเดียว ตัวถูกดำเนินการของคำสั่งจะถูกคั่นด้วยเครื่องหมายโคม่า

โครงสร้างคำสั่งแอสเซมบลี คำสั่งแอสเซมเบลอร์สั่งให้นักแปลสร้างไมโครโปรเซสเซอร์ คำสั่งแอสเซมเบลอร์คือพารามิเตอร์ที่ระบุในข้อความโดยโปรแกรมที่ส่งผลต่อกระบวนการแอสเซมบลีและพลังของไฟล์เอาต์พุต ตัวถูกดำเนินการกำหนดค่าเริ่มต้นของข้อมูล (ส่วนของข้อมูล) หรือองค์ประกอบที่ดำเนินการหลังจากเพิ่มคำสั่ง (ส่วนของรหัส) คำสั่งสามารถจับคู่ตัวถูกดำเนินการหนึ่งหรือสองตัว หรือไม่ตรงกับตัวถูกดำเนินการ จำนวนตัวถูกดำเนินการจะถูกระบุโดยรหัสคำสั่ง หากต้องใช้คำสั่งหรือคำสั่งต่อในแถวที่น่ารังเกียจ จะใช้สัญลักษณ์แบ็กสแลช: “” เบื้องหลัง แอสเซมเบลอร์ไม่ได้แยกตัวอักษรขนาดใหญ่และเล็กของคำสั่งและคำสั่งที่เป็นลายลักษณ์อักษร ใช้คำสั่งและคำสั่ง Count db 1; Im'ya, คำสั่ง, ตัวถูกดำเนินการหนึ่งตัว mov eax, 0; คำสั่งตัวดำเนินการสองตัว

ตัวระบุ – ลำดับของอักขระที่ถูกต้องซึ่งใช้ในการกำหนดชื่อให้กับชื่อตัวแปรและป้ายกำกับ ตัวระบุสามารถประกอบด้วยอักขระต่อไปนี้หนึ่งตัวหรือหลายตัว: ตัวอักษรทั้งหมดของอักษรละติน ตัวเลขตั้งแต่ 0 ถึง 9; อักขระพิเศษ: _, @, $, ? -

เนื่องจากเป็นสัญลักษณ์แรกของเครื่องหมาย จึงสามารถใช้จุดได้ เนื่องจากเป็นตัวระบุ จึงไม่สามารถระบุชื่อแอสเซมเบลอร์ที่สงวนไว้ (คำสั่ง ตัวดำเนินการ ชื่อคำสั่ง) ได้ อักขระตัวแรกของตัวระบุเป็นตัวอักษรหรืออักขระพิเศษ ความยาวสูงสุดของตัวระบุคือ 255 อักขระ แต่นักแปลยอมรับ 32 ตัวแรกและไม่สนใจส่วนที่เหลือ ป้ายกำกับทั้งหมดที่เขียนเรียงกันเป็นแถวซึ่งไม่ละเมิดคำสั่งของแอสเซมเบลอร์จะต้องลงท้ายด้วยเครื่องหมาย ">:" เครื่องหมาย คำสั่ง (คำสั่ง) และตัวถูกดำเนินการไม่จำเป็นต้องเริ่มจากตำแหน่งเพลงในแถว ขอแนะนำให้บันทึกไว้ในคอลัมน์เพื่อให้โปรแกรมมีความพร้อมใช้งานมากขึ้น

แท็ก แท็กทั้งหมดที่เพิ่มลงในแถวที่ไม่ละเมิดคำสั่งแอสเซมเบลอร์จะต้องลงท้ายด้วยเครื่องหมาย ">:" ไม่จำเป็นต้องมีป้ายกำกับ คำสั่ง (คำสั่ง) และตัวถูกดำเนินการเพื่อเริ่มต้นจากตำแหน่งในแถว ขอแนะนำให้บันทึกไว้ในคอลัมน์เพื่อให้โปรแกรมมีความพร้อมใช้งานมากขึ้น

ข้อคิดเห็น การเพิ่มความคิดเห็นให้กับโปรแกรมช่วยปรับปรุงความชัดเจน โดยเฉพาะอย่างยิ่งเมื่อความหมายของชุดคำสั่งไม่สามารถเข้าใจได้ ความคิดเห็นเริ่มต้นในแถวใดๆ ของโมดูลเอาต์พุตที่มีสัญลักษณ์จุด (;) สัญลักษณ์ทั้งหมดที่พบจะเป็นมือขวาใน “; » จนจบแถวพร้อมแสดงความคิดเห็น ความคิดเห็นอาจมีสัญลักษณ์อื่นๆ รวมถึงการเว้นวรรค ความคิดเห็นอาจครอบครองทั้งแถวหรือติดตามทีมในแถวเดียวกันก็ได้

โครงสร้างของโปรแกรมในภาษาแอสเซมเบลอร์ โปรแกรมที่เขียนด้วยภาษาแอสเซมเบลอร์สามารถประกอบด้วยหลายส่วนเรียกว่าโมดูล ซึ่งแต่ละส่วนสามารถมีข้อมูล สแต็ก และโค้ดได้ตั้งแต่หนึ่งส่วนขึ้นไป เมื่อใดก็ตามที่โปรแกรมแอสเซมเบลอร์เสร็จสิ้น จำเป็นต้องเปิดโมดูลหลักหรือโมดูลหลักเพียงตัวเดียวซึ่งเป็นจุดเริ่มต้นของโปรแกรม โมดูลสามารถประกอบด้วยส่วนของโปรแกรม ส่วนข้อมูล และสแต็ก เสียงสำหรับคำสั่งอื่น ๆ ที่เกี่ยวข้อง โมเดลหน่วยความจำ ก่อนที่จะลบเซ็กเมนต์ จำเป็นต้องระบุโมเดลหน่วยความจำเบื้องหลังคำสั่งเพิ่มเติม MODEL ตัวแก้ไข memory_model, memory_name, OS_type, stack_parameter โมเดลหน่วยความจำพื้นฐานของภาษาแอสเซมเบลอร์: โมเดลหน่วยความจำ การกำหนดที่อยู่โค้ด การกำหนดที่อยู่ข้อมูลการเขียนโค้ดและข้อมูล TINY NEAR MS-DOS ยอมรับได้ ขนาดเล็กใกล้ MS-DOS, Windows ไม่มี ปานกลางไกลใกล้ MS-DOS, Windows ไม่มีขนาดกะทัดรัดใกล้ FAR MS-DOS, Windows ไม่ใหญ่ไกล MS-DOS, Windows ไม่ไกลมาก MS-DOS, Windows ไม่มี ใกล้กับ Windows 2000, Windows XP, Windows ที่ยอมรับได้ FLAT NEAR NT,

โมเดลหน่วยความจำ รุ่นจิ๋วทำงานบนโปรแกรม MS-DOS 16 บิตเท่านั้น สำหรับโมเดลนี้ ข้อมูลและโค้ดทั้งหมดจะกระจายอยู่ในเซ็กเมนต์ทางกายภาพเดียว รอซมีร์ ไฟล์โปรแกรมมีขนาดไม่เกิน 64 KB โมเดลขนาดเล็กรองรับส่วนโค้ดหนึ่งส่วนและส่วนข้อมูลหนึ่งส่วน รหัสนี้สำหรับรุ่นนี้ได้รับการแก้ไขว่าใกล้ โมเดลสื่อกลางสนับสนุนส่วนโค้ดโปรแกรมหลายส่วนและส่วนข้อมูลเดียว และข้อความทั้งหมดในส่วนรหัสโปรแกรมถือว่าอยู่ไกล และข้อความในส่วนข้อมูลถือว่าใกล้ รุ่นกะทัดรัดรองรับส่วนข้อมูลจำนวนหนึ่ง ซึ่งมีการระบุที่อยู่ข้อมูลระยะไกล (ไกล) และส่วนโค้ดหนึ่งส่วนที่มีการกำหนดที่อยู่ใกล้ (ใกล้) โมเดลขนาดใหญ่รองรับส่วนของโค้ดจำนวนหนึ่งและส่วนของข้อมูลจำนวนหนึ่ง หน้าที่หนวดนั้นต้องเคารพศีลและส่วยคนไกล(ไกล) โมเดลขนาดใหญ่นั้นเทียบเท่ากับโมเดลหน่วยความจำขนาดใหญ่ในทางปฏิบัติ

โมเดลหน่วยความจำ โมเดลแบบแบนถ่ายโอนการกำหนดค่าโปรแกรมที่ไม่แบ่งส่วน และจำกัดอยู่ที่ระบบปฏิบัติการ 32 บิต โมเดลนี้คล้ายกับโมเดลขนาดเล็กตรงที่ข้อมูลและโค้ดอยู่ในส่วนเดียวเพียง 32 บิตเท่านั้น หากต้องการขยายโมเดลโปรแกรมให้แบนก่อนคำสั่ง model flat race วางหนึ่งในคำสั่ง: . 386, . 486, . 586 อาโอ 686 การเลือกคำสั่งในการเลือกโปรเซสเซอร์หมายถึงชุดคำสั่งที่พร้อมใช้งานในขณะที่เขียนโปรแกรม ตัวอักษร p หลังคำสั่งในการเลือกโปรเซสเซอร์หมายความว่าโหมดการทำงานถูกขโมย การระบุข้อมูลลงในโค้ดนั้นใกล้เคียงกัน ซึ่งที่อยู่และตัวบ่งชี้ทั้งหมดเป็นแบบ 32 บิต

โมเดลหน่วยความจำ MODEL โมดิฟายเออร์ memory_model, memory_name, OS_type, stack_parameter พารามิเตอร์โมดิฟายเออร์ได้รับชัยชนะสำหรับเซ็กเมนต์บางประเภทและสามารถรับค่าต่อไปนี้: ใช้ 16 (เซ็กเมนต์ของโมเดลที่เลือกจะถูกแปลงเป็น 16 บิต) ใช้ 32 (เซ็กเมนต์ของโมเดลที่เลือกคือ คำนวณเป็น 32 บิต) พารามิเตอร์ request_pro_call ใช้เพื่อกำหนดวิธีการส่งพารามิเตอร์เมื่อเรียกโพรซีเดอร์จากแหล่งอื่น รวมถึงแหล่งระดับสูง (C++, Pascal) พารามิเตอร์สามารถยอมรับค่าต่อไปนี้: C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL

โมเดลหน่วยความจำ MODEL ตัวแก้ไข memory_model, memory_name, OS_type, stack_parameter พารามิเตอร์ OS_type คือรุ่น OS_DOS เก่า และในขณะนี้ มีพารามิเตอร์สำคัญเพียงตัวเดียวเท่านั้นที่รองรับ พารามิเตอร์ stack_parameter ถูกตั้งค่าเป็น: NEARSTACK (การลงทะเบียน SS เก่ากว่า DS พื้นที่ข้อมูลและสแต็กอยู่ในเซ็กเมนต์ทางกายภาพเดียวกัน) FARSTACK (การลงทะเบียน SS ไม่เก่ากว่า DS พื้นที่ข้อมูลและสแต็กอยู่ในเซ็กเมนต์ทางกายภาพที่แตกต่างกัน ส่วนล่าง ). NEARSTACK จะดูแลเรื่องการทำความสะอาด

โปรแกรมชนดังนั้น "อย่าไปสนใจอะไรเลย" 686 P. รุ่นแบน, STDCALL. ข้อมูล.

CODE START: RET END START RET – คำสั่งไมโครโปรเซสเซอร์ นี่จะช่วยให้แน่ใจว่าโปรแกรมหุ่นยนต์เสร็จสมบูรณ์อย่างถูกต้อง โปรแกรม Reshta ที่จะติดตั้งบนตัวแปลหุ่นยนต์ - 686 P – อนุญาตคำสั่งจากโหมดที่ถูกขโมยของ Pentium 6 (Pentium II) คำสั่งนี้เลือกชุดคำสั่งแอสเซมเบลอร์ที่เหมาะสม โดยระบุรุ่นโปรเซสเซอร์ - MODEL FLAT, stdcall - โมเดลหน่วยความจำแบบแบน หน่วยความจำรุ่นนี้ใช้ในระบบปฏิบัติการ Windows stdcall - การดำเนินการเกี่ยวกับขั้นตอนวิกิที่กำลังถูกใช้งาน ข้อดีของโปรแกรมคือ “ไม่ต้องสนใจอะไรเลย” 686 P. รุ่นแบน, STDCALL. ข้อมูล.รหัสเริ่มต้น: RET END START DATA คือส่วนของโปรแกรมที่มีข้อมูล

โปรแกรมเฉีย ไม่ใช่สแต็ก Vikorist แต่เป็นเซ็กเมนต์ สแต็คทุกวัน - CODE คือส่วนของโปรแกรมที่มีโค้ด เริ่ม – ทำเครื่องหมาย END START - จุดสิ้นสุดของโปรแกรมและแจ้งให้คอมไพเลอร์ทราบว่าการเริ่มโปรแกรมต้องมีเครื่องหมาย START โปรแกรมสกินมีหน้าที่ออกคำสั่ง END ซึ่งหมายถึงจุดสิ้นสุด รหัสทางออก rozrobniki บนแหล่งที่มา ปลอม.

สุทธิ."> Трансляция программы в Microsoft Visual Studio 2005 1) Создать проект, выбрав меню File->New->Project и указав имя проекта (hello. prj) и тип проекта: Win 32 Project. В дополнительных опциях мастера проекта указать “Empty Project”.!}!}

Src="https://present5.com/presentation/-29367016_63610977/image-15.jpg" alt="Translating programs in Microsoft Visual Studio 2005 1) สร้างโครงการโดยไปที่ไฟล์ -> เมนูใหม่ -> โครงการ"> Трансляция программы в Microsoft Visual Studio 2005 2) В дереве проекта (View->Solution Explorer) добавить файл, в котором будет содержаться текст программы: Source. Files->Add->New. Item.!}!}

Src="https://present5.com/presentation/-29367016_63610977/image-16.jpg" alt="การแปลโปรแกรมใน Microsoft Visual Studio 2005 2) ในแผนผังโครงการ (View- >ตัวสำรวจโซลูชัน) เพิ่ม

การแปลโดย Microsoft Visual Studio 2005 3) เลือกประเภทไฟล์ Code C++ และระบุชื่อพร้อมนามสกุล asm:

การแปลด้วย Microsoft Visual Studio 2005 5) ตั้งค่าพารามิเตอร์คอมไพเลอร์ เลือกเมนูกฎการสร้างแบบกำหนดเองด้วยปุ่มขวาบนไฟล์โปรเจ็กต์...

โปรแกรมออกอากาศใน Microsoft Visual Studio 2005 และเลือก Microsoft Macro Assembler

การแปลโปรแกรมใน Microsoft Visual Studio 2005 คลิกขวาที่ไฟล์ สวัสดี asm tree ไปที่เมนูโปรเจ็กต์ Properties และติดตั้ง General->Tool: Microsoft Macro Assembler"> Трансляция программы в Microsoft Visual Studio 2005 6) Откомпилировать файл, выбрав Build->Build hello. prj. 7) Запустить программу, нажав F 5 или выбрав меню Debug->Start Debugging.!}!}

Src="https://present5.com/presentation/-29367016_63610977/image-22.jpg" alt="Translating programs in Microsoft Visual Studio 2005 6) คอมไพล์ไฟล์โดยเลือก Build-> สร้างสวัสดี การเขียนโปรแกรมใน Windows OS การเขียนโปรแกรมใน Windows OS ขึ้นอยู่กับฟังก์ชัน API ที่เลือก (Application Program Interface)โปรแกรมซอฟต์แวร์ -จำนวนของพวกเขาถึง 2,000 โปรแกรมสำหรับ Windows ส่วนใหญ่ประกอบด้วยการคลิกดังกล่าว การโต้ตอบทั้งหมดด้วย อาคารภายนอกตามกฎแล้ว ทรัพยากรของระบบปฏิบัติการจะถูกใช้เพื่อรองรับฟังก์ชันดังกล่าว การดำเนินการ

ระบบวินโดวส์ แบบจำลองความทรงจำของ Vikorist ที่อยู่ตรงกลางหน่วยความจำถูกกำหนดแทนการลงทะเบียนแบบ 32 บิตหนึ่งรายการ โครงสร้างโปรแกรมสำหรับ Windows มี 3 ประเภท: กล่องโต้ตอบ (ส่วนใหญ่เป็นกล่องโต้ตอบแบบหน้าต่าง), โครงสร้างคอนโซลหรือแบบไม่มีหน้าต่าง, โครงสร้างแบบคลาสสิก (หน้าต่าง, เฟรม)วิคลิค ฟังก์ชั่นวินโดวส์แสดงหน้าต่างพร้อมการแจ้งเตือนและปุ่ม (หรือปุ่ม) เพื่อออก พารามิเตอร์การตรวจจับ: ชม. Wnd - descriptor ของหน้าต่างที่มีหน้าต่างข้อความ lp ข้อความ - ข้อความที่ปรากฏในหน้าต่าง lp. คำบรรยายภาพ - ข้อความในชื่อเรื่องของหน้าต่าง คุณ Type – ประเภทของหน้าต่าง คุณสามารถเลือกจำนวนปุ่มออกได้

ฟังก์ชั่น Viklik Windows API int Message กล่อง (HWND h. Wnd, LPCTSTR lp. ข้อความ, LPCTSTR lp. คำบรรยาย, UINT u. ประเภท); พารามิเตอร์ทั้งหมดของฟังก์ชัน API จะขึ้นอยู่กับจำนวนเต็ม 32 บิต: HWND - จำนวนเต็ม 32 บิต, LPCTSTR - จำนวนเต็ม 32 บิต, UINT - จำนวนเต็ม 32 บิต มักจะเพิ่มคำต่อท้าย "A" ลงในชื่อฟังก์ชันเพื่อเปลี่ยนไปใช้ฟังก์ชันเวอร์ชันใหม่

ฟังก์ชั่น Viklik Windows API int Message กล่อง (HWND h. Wnd, LPCTSTR lp. ข้อความ, LPCTSTR lp. คำบรรยาย, UINT u. ประเภท); เมื่อใช้ MASM จำเป็นต้องเพิ่ม @N N ซึ่งเป็นจำนวนไบต์ที่จะครอบครองอาร์กิวเมนต์ที่ส่งผ่านสแต็ก สำหรับฟังก์ชัน Win 32 API คุณสามารถคำนวณจำนวนอาร์กิวเมนต์ n คูณด้วย 4 (ไบต์ต่ออาร์กิวเมนต์): N=4*n ในการเรียกใช้ฟังก์ชัน จะใช้คำสั่ง CALL ของแอสเซมเบลอร์ ในกรณีนี้ อาร์กิวเมนต์ทั้งหมดไปยังฟังก์ชันจะถูกส่งผ่านสแต็ก (คำสั่ง PUSH) การส่งข้อโต้แย้งโดยตรง: ซ้ายไปขวา - จากล่างขึ้นบน อาร์กิวเมนต์ที่คุณจะถูกผลักเข้าสู่สแต็กก่อน พิมพ์. การคลิกสำหรับฟังก์ชันนี้จะมีลักษณะดังนี้: CALL Message กล่อง. [ป้องกันอีเมล]

ฟังก์ชั่น Viklik Windows API int Message กล่อง (HWND h. Wnd, LPCTSTR lp. ข้อความ, LPCTSTR lp. คำบรรยาย, UINT u. ประเภท); ผลลัพธ์ของฟังก์ชัน API ใดๆ มักจะเป็นเลขจำนวนเต็มที่ปรากฏในการลงทะเบียน EAX คำสั่ง OFFSET หมายถึง "การกระจัดในส่วน" หรือแปลเป็นแนวคิดระดับสูง "ฝักบัว" ที่หูแถว คำสั่ง EQU เช่น #define ในภาษาหมายถึงค่าคงที่ คำสั่ง EXTERN ระบุให้นักแปลทราบว่าฟังก์ชันหรือตัวระบุอยู่ภายนอกโมดูลนี้

ตัวอย่างรายการ Hello ทุกคน! - [ป้องกันอีเมล] 686 P. รุ่นแบน, STDCALL. STACK 4096 ข้อมูล MB_OK EQU 0 STR 1 DB "โปรแกรมแรกของฉัน", 0 STR 2 DB "สวัสดีทุกคน!", 0 HW DD? ข้อความภายนอก กล่อง. [ป้องกันอีเมล]: ใกล้.

คำสั่ง INVOKE ตัวแปลภาษา MASM ช่วยให้คุณสามารถเรียกใช้ฟังก์ชันจากฟังก์ชันมาโครเดี่ยวได้ - คำสั่ง INVOKE: ฟังก์ชัน INVOKE, พารามิเตอร์ 1, พารามิเตอร์ 2, ... ในกรณีนี้ ไม่จำเป็นต้องเพิ่ม @16 ในการเรียกใช้ฟังก์ชัน ; พารามิเตอร์ถูกเขียนตามลำดับที่อธิบายฟังก์ชันทุกประการ ด้วยฟังก์ชันมาโครของนักแปล พารามิเตอร์จะถูกวางบนสแต็ก หากต้องการใช้คำสั่ง INVOKE คุณต้องอธิบายฟังก์ชันต้นแบบด้วยคำสั่ง PROTO ในรูปแบบ: ข้อความ กล่อง.

PROTO: DWORD, : DWORD หากโปรแกรมมีฟังก์ชันส่วนตัวของ Win 32 API คุณสามารถใช้คำสั่ง include C ได้อย่างรวดเร็ว: masm 32includeuser 32. inc

หัวข้อ 1.4 ช่วยในการจำการชุมนุม โครงสร้างและรูปแบบของคำสั่ง ประเภทของที่อยู่ ระบบคำสั่งไมโครโปรเซสเซอร์

วางแผน:

2 1 ภาษาของแอสเซมเบลอร์ แนวคิดพื้นฐาน

สัญลักษณ์แอสเซมเบลอร์ Movi

3 ประเภทของคำสั่งแอสเซมเบลอร์

4 คำสั่งประกอบ

5 ระบบคำสั่งโปรเซสเซอร์1 ฉัน

ซิกแอสเซมเบลอร์ แนวคิดพื้นฐานภาษาแอสเซมบลี

- นี่คือการแสดงสัญลักษณ์ของภาษาเครื่อง กระบวนการทั้งหมดในเครื่องที่ระดับฮาร์ดแวร์ต่ำสุดขับเคลื่อนด้วยคำสั่งภาษาเครื่องเท่านั้น (คำแนะนำ) Zvidsi ตระหนักว่าไม่ว่าชื่อใดก็ตาม ภาษาของแอสเซมเบลอร์จะเป็นของตัวเองสำหรับคอมพิวเตอร์ทุกประเภท โปรแกรมในภาษาแอสเซมบลีประกอบด้วยชุดของบล็อกหน่วยความจำ ชื่อเรื่องส่วนหน่วยความจำ

โปรแกรมสามารถประกอบด้วยหนึ่งหรือหลายบล็อคเซ็กเมนต์ ส่วนของสกินประกอบด้วยภาษาทั้งหมด ส่วนสกินนั้นครอบครองโค้ดโปรแกรมจำนวนมาก

1) ข้อเสนอภาษาแอสเซมบลีมีสี่ประเภท: คำสั่งหรือคำแนะนำ

2) เป็นระบบอะนาล็อกเชิงสัญลักษณ์ของคำสั่งเครื่อง ในระหว่างกระบวนการแปล คำสั่งแอสเซมเบลอร์จะถูกแปลงเป็นคำสั่งภายนอกของระบบคำสั่งไมโครโปรเซสเซอร์คำสั่งมาโคร -

3) เป็นทางการในลำดับแรกของข้อเสนอของข้อความโดยโปรแกรมที่ถูกแทนที่ในระหว่างชั่วโมงที่ออกอากาศโดยข้อเสนออื่นคำสั่ง

4) єแทรกตัวแปลแอสเซมเบลอร์เพื่อดำเนินการ คำสั่งไม่มีความคล้ายคลึงกับข้อมูลเครื่องจักร แถวความคิดเห็น

­ เพื่อแทนที่สัญลักษณ์ใดๆ รวมทั้งตัวอักษรของอักษรรัสเซีย ความคิดเห็นจะถูกละเว้นโดยนักแปล

โครงสร้างของโปรแกรมในแอสเซมเบลอร์ ไวยากรณ์แอสเซมบลี - ไดอะแกรมวากยสัมพันธ์і การขยายตัวของรูปแบบเบ็กคุส-เนาร์เพื่อการใช้งานจริง พกพาสะดวก ไดอะแกรมวากยสัมพันธ์ตัวอย่างเช่น ไวยากรณ์ของแอสเซมเบลอร์คำพูดสามารถอธิบายได้โดยใช้ไดอะแกรมวากยสัมพันธ์เพิ่มเติมที่แสดงในรูปที่ 10, 11, 12 ต่อไปนี้

Malyunok 10 - รูปแบบข้อเสนอภาษาแอสเซมบลี


­ Malyunok 11 - รูปแบบคำสั่ง

­ Malyunok 12 - รูปแบบของคำสั่งและคำสั่งมาโคร

เกี่ยวกับเด็กน้อย:

­ ชื่อป้ายกำกับ- ตัวระบุค่าซึ่งเป็นที่อยู่ของไบต์แรกในตำแหน่งข้อความเอาต์พุตของโปรแกรมซึ่งหมายถึง

­ ฉัน -ตัวระบุที่ทำให้คำสั่งนี้แตกต่างจากคำสั่งอื่นที่มีชื่อเดียวกัน อันเป็นผลมาจากการประมวลผลโดยแอสเซมเบลอร์ คำสั่งเพลงของชื่อนี้อาจได้รับการกำหนดลักษณะของเพลง

­ รหัสการดำเนินงาน (OPC) คำสั่งนั้น - สิ่งเหล่านี้คือความหมายช่วยในการจำของคำสั่งเครื่องย่อย คำสั่งแมโคร หรือคำสั่งของนักแปล

­ ตัวดำเนินการ -ส่วนของคำสั่ง คำสั่งแมโคร หรือคำสั่งแอสเซมเบลอร์ที่กำหนดอ็อบเจ็กต์ที่มีการเชื่อมโยงการดำเนินการ ตัวถูกดำเนินการของแอสเซมเบลอร์อธิบายด้วยนิพจน์ที่มีค่าคงที่ตัวเลขและข้อความ ป้ายกำกับและตัวระบุสัญลักษณ์ตัวแปร การดำเนินการ และคำสงวนอื่นๆ

ไดอะแกรมวากยสัมพันธ์ช่วยได้ หาแล้วเดินไปตามทางจากทางเข้าโดยใช้แผนภาพ (ซ้าย) ไปยังทางออก (ขวา) หากวิธีดังกล่าวชัดเจน แสดงว่าข้อเสนอและโครงสร้างถูกต้องตามหลักวากยสัมพันธ์ หากไม่มีวิธีดังกล่าว คอมไพเลอร์จะไม่ยอมรับโครงสร้างนี้

­ 2 สัญลักษณ์แอสเซมเบลอร์ Movi

อักขระที่ยอมรับได้เมื่อเขียนข้อความโปรแกรม:

1) ตัวอักษรละตินทั้งหมด: ก-ฮ,ก-ซ-

ในกรณีนี้ ตัวอักษรใหญ่และเล็กถือว่าเท่ากัน 0 2) ตัวเลขเข้า 9 ;

ก่อน ? , @ , $ , _ , & ;

3) สัญญาณ , . () < > { } + / * % ! " " ? = # ^ .

4) ตัวคั่น ข้อเสนอภาษาแอสเซมบลีถูกสร้างขึ้นโดยคำศัพท์

ซึ่งเป็นลำดับอักขระภาษาที่ถูกต้องที่แยกออกจากกันทางวากยสัมพันธ์ซึ่งส่งผลต่อประสาทสัมผัสของผู้แปลє:

ศัพท์ - 1) ตัวระบุ

2) ลำดับของอักขระที่ถูกต้องที่ใช้ในการกำหนดอ็อบเจ็กต์โปรแกรม เช่น โค้ดการดำเนินการ ชื่อตัวแปร และชื่อเลเบล กฎสำหรับตัวระบุการบันทึกมีดังนี้: ตัวระบุสามารถประกอบด้วยอักขระหนึ่งตัวขึ้นไป - สัญลักษณ์หอก

ลำดับสัญลักษณ์ วางอยู่ในขาเดียวหรือสองขา : 3) จำนวนเต็มในระบบจำนวนสมัยใหม่ระบบใดระบบหนึ่ง

สอง, สิบ, สิบหก การระบุตัวเลขเมื่อเขียนในโปรแกรมภาษาแอสเซมบลีเป็นไปตามกฎต่อไปนี้: 4) ตัวเลขหลักสิบไม่จำเป็นต้องเพิ่มสัญลักษณ์ใดๆ เพิ่มเติมสำหรับนิพจน์ เช่น 25 หรือ 139 สำหรับนิพจน์ในข้อความเอาท์พุต โปรแกรมจำเป็นหลังจากจดเลขศูนย์และตัวที่ไปที่โกดังแล้วให้ใส่ภาษาละติน " ” เช่น 10010101 .

5) ตัวเลขที่สิบหกอาจมีสติปัญญามากกว่าเมื่อเขียน:

อย่างแรกเลยกลิ่นเหม็นมาจากตัวเลข 0...9 , มาลิช ตา นักเขียนผู้ยิ่งใหญ่ตัวอักษรละติน ,, ,,,หรืออย่างอื่น ,บี,,ดี,อี,เอฟ.

มิฉะนั้น ผู้แปลอาจมีปัญหาในการจดจำเลขฐานสิบหกผ่านตัวเลขที่สามารถสร้างขึ้นจากตัวเลขเพียง 0...9 (เช่น 190845) และจากตัวอักษรของอักษรละตินด้วย (เช่น EF15- เพื่อ “อธิบาย” ให้นักแปลทราบว่าโทเค็นที่กำหนดไม่ใช่เลขสิบ แต่เป็นตัวระบุ โปรแกรมเมอร์มีหน้าที่พิเศษในการดูเลขสิบหก หากต้องการสร้างเลขฐานสิบหกที่ส่วนท้ายของลำดับเลขฐานสิบหก ให้เขียนอักษรละติน “ชม. 0 - Tse obov'yazkova umova หากตัวเลขที่สิบหกขึ้นต้นด้วยตัวอักษร ให้เขียนศูนย์นำหน้าไว้ข้างหน้า:

EF15 ชม.เป็นเรื่องที่ปฏิบัติได้สำหรับข้อเสนอสกินในการวางคำอธิบายของวัตถุ ซึ่งปิดท้ายด้วยเพลงหรือเพื่อความช่วยเหลือ วัตถุเหล่านี้เรียกว่า ตัวถูกดำเนินการ-

Ix สามารถคำนวณได้ดังนี้:

­ ตัวดำเนินการ

­ - วัตถุเหล่านี้ (ค่า รีจิสเตอร์ หรือศูนย์หน่วยความจำ) ซึ่งคำสั่งและคำสั่งดำเนินการ หรือวัตถุเหล่านี้ซึ่งระบุหรือชี้แจงคำสั่งและคำสั่งเหล่านี้

­ เป็นไปได้ที่จะดำเนินการจำแนกประเภทของตัวถูกดำเนินการเพิ่มเติม:

ตัวถูกดำเนินการคงที่และไม่ใช่สื่อกลาง

­ ตัวถูกดำเนินการที่อยู่

­ ตัวดำเนินการซึ่งจะเคลื่อนที่

­ ที่อยู่แพทย์

ลงทะเบียนตัวถูกดำเนินการ;

ตัวถูกดำเนินการฐานและดัชนี ตัวถูกดำเนินการเชิงโครงสร้าง.

บันทึก. ตัวดำเนินการเป็นส่วนประกอบเบื้องต้น รวมถึงส่วนหนึ่งของคำสั่งเครื่องที่ระบุอ็อบเจ็กต์ที่ใช้ดำเนินการ ในโหมด glagal ตัวถูกดำเนินการสามารถรวมเป็นโกดังในแสงที่ยุบได้เรียกว่า

­ สัญลักษณ์แอสเซมเบลอร์ Movi

ไวรัส วิราซีสิ่งเหล่านี้คือการรวมกันของตัวถูกดำเนินการและตัวดำเนินการที่ถือเป็นภาพรวม ผลลัพธ์ของการคำนวณไวรัสอาจเป็นที่อยู่ของตำแหน่งหน่วยความจำที่กำหนดหรือค่าคงที่ (สัมบูรณ์)

­ ประเภทที่แตกต่าง

­ ผู้ประกอบการประกอบ

­ และกฎวากยสัมพันธ์สำหรับการสร้างนิพจน์แอสเซมเบลอร์:

­ ตัวดำเนินการทางคณิตศาสตร์;

­ ปฏิบัติการ zsuwu;

­ ผู้ประกอบการ;

­ ตัวดำเนินการเชิงตรรกะ

­ ตัวดำเนินการดัชนี

­ ผู้ดำเนินการโอนประเภท;

­ ผู้ดำเนินการมอบหมายส่วนใหม่

1 ตัวดำเนินการสำหรับการตั้งชื่อประเภทโครงสร้าง

­ ผู้ดำเนินการสำหรับการลบที่อยู่คลังสินค้าส่วนและไวรัส

1) คำสั่งการแบ่งส่วน ก่อนหน้านี้ เราได้พูดคุยถึงกฎพื้นฐานทั้งหมดสำหรับการเขียนคำสั่งและตัวถูกดำเนินการในโปรแกรมภาษาแอสเซมบลี เราสูญเสียพลังงานไปแล้ว วิธีจัดรูปแบบลำดับคำสั่งให้ถูกต้องเพื่อให้นักแปลสามารถประมวลผลคำสั่งเหล่านั้นได้ และไมโครโปรเซสเซอร์สามารถออกได้

เมื่อดูที่สถาปัตยกรรมของไมโครโปรเซสเซอร์ เราพบว่ามีรีจิสเตอร์หกส่วน ซึ่งสามารถเข้าถึงได้พร้อมกัน:

­ ด้วยส่วนรหัสเดียว

­ มีหนึ่งส่วนกอง;

­ ด้วยส่วนข้อมูลเดียว

­ จากสามกลุ่มข้อมูลเพิ่มเติม

ในทางกายภาพ เซ็กเมนต์คือพื้นที่หน่วยความจำที่ถูกครอบครองโดยคำสั่งและ (หรือ) ข้อมูล ซึ่งที่อยู่จะถูกคำนวณตามค่าในการลงทะเบียนเซ็กเมนต์ที่เกี่ยวข้อง คำอธิบายทางวากยสัมพันธ์ของเซ็กเมนต์ในภาษาแอสเซมบลีพร้อมโครงสร้างแสดงในรูปที่ 13:


­ รูปที่ 13 - คำอธิบายทางวากยสัมพันธ์ของเซ็กเมนต์ในภาษาแอสเซมบลี

สิ่งสำคัญคือต้องทราบว่าความสำคัญด้านการทำงานของเซ็กเมนต์นั้นกว้างกว่าการแบ่งโปรแกรมออกเป็นบล็อกของโค้ด ข้อมูล และสแต็กมาก การแบ่งส่วนนั้นมากกว่ากลไกด้านข้างบางส่วนที่เกี่ยวข้อง แนวคิดการเขียนโปรแกรมแบบโมดูลาร์มันบ่งบอกถึงการรวมกันของการออกแบบโมดูลอ็อบเจ็กต์ที่สร้างโดยคอมไพเลอร์ โดยแยกออกจากโมดูลการเขียนโปรแกรมต่างๆ ซึ่งจะทำให้คุณสามารถรวมโปรแกรมที่เขียนด้วยภาษาต่างๆ เข้าด้วยกันได้ สำหรับการดำเนินการตามรูปแบบต่างๆ ของการรับรู้แบบรวมดังกล่าว ตัวถูกดำเนินการจะระบุไว้ในคำสั่ง SEGMENT

2) คำสั่งการจัดการรายการ คำสั่งการจัดการรายการอยู่ในกลุ่มต่อไปนี้:

­ คำสั่งขั้นสูงสำหรับการจัดการรายชื่อ

­ คำสั่งที่แสดงในรายการไฟล์ที่จะรวมไว้

­ คำสั่งในการแสดงบล็อกสมัชชาจิต

­ คำสั่งสำหรับการแสดงคำสั่งแมโคร

­ คำสั่งสำหรับรายการข้อมูลเกี่ยวกับการถ่ายโอนข้อความ

­ คำสั่งในการเปลี่ยนรูปแบบรายการ

2 ระบบคำสั่งโปรเซสเซอร์

ระบบคำสั่งของโปรเซสเซอร์แสดงโดย Malunku 14

มาดูกลุ่มหลักของทีมกันดีกว่า

­ รูปที่ 14 - การจำแนกประเภทของคำสั่งแอสเซมเบลอร์

ทีมกำลังเฟื่องฟู:

1 คำสั่งที่โอเวอร์พาวเวอร์ข้อมูล คำสั่งเหล่านี้ครอบครองตำแหน่งที่สำคัญมากในระบบคำสั่งของโปรเซสเซอร์ใด ๆ นี่คือหน้าที่ที่สำคัญที่สุด:

­ บันทึกในหน่วยความจำแทนการลงทะเบียนโปรเซสเซอร์ภายใน

­ การคัดลอกจากพื้นที่หน่วยความจำหนึ่งไปยังอีกพื้นที่หนึ่ง

­ เขียนไปยังอุปกรณ์ I/O และอ่านจากอุปกรณ์ I/O

ในโปรเซสเซอร์หลายตัว ฟังก์ชันเหล่านี้ถูกกำหนดโดยคำสั่งเดียวมธ (สำหรับไบต์เปเรซิลัน - MOVB ) เอลซี โดยใช้วิธีการที่แตกต่างกันที่อยู่ตัวถูกดำเนินการ

ในโปรเซสเซอร์อื่นๆ ให้ใช้คำสั่งมธ ยังมีคำสั่งอีกสองสามคำสั่งก่อนที่จะสามารถกำหนดรายการฟังก์ชันได้ นอกจากนี้ก่อนคำสั่งในการส่งข้อมูลจะมีคำสั่งในการแลกเปลี่ยนข้อมูล (ความหมายจะขึ้นอยู่กับคำว่าแลกเปลี่ยน -สามารถแลกเปลี่ยนข้อมูลระหว่างการลงทะเบียนภายในระหว่างสองครึ่งหนึ่งของหนึ่งการลงทะเบียน ( แลกเปลี่ยน

) หรือระหว่างรีจิสเตอร์กับตรงกลางของหน่วยความจำ

­ 2 คำแนะนำทางคณิตศาสตร์ คำแนะนำทางคณิตศาสตร์ถือว่ารหัสตัวถูกดำเนินการเป็นรหัสตัวเลขสองหรือทศนิยมสอง คำสั่งเหล่านี้สามารถแบ่งออกเป็นห้ากลุ่มหลัก:

­ คำสั่งสำหรับการดำเนินการด้วยอาการโคม่าคงที่ (การบวก, การลบ, การคูณ, การหาร);

­ คำสั่งสำหรับการดำเนินการที่มีอาการโคม่าลอยตัว (การบวก, การลบ, การคูณ, การหาร);

­ คำสั่งทำความสะอาด;

­ คำสั่งสำหรับการเพิ่มขึ้นและการลดลง

การปรับระดับทีม

3 คำสั่งการทำงานจากหมายเลขคงที่ทำงานจากรหัสในโปรเซสเซอร์และการลงทะเบียนหน่วยความจำเช่นเดียวกับจากรหัสคู่หลัก คำสั่งสำหรับการดำเนินการที่มีโคม่าลอย (จุด) จะเปลี่ยนรูปแบบการแสดงตัวเลขด้วยลำดับและแมนทิสซา (ระบุว่าตัวเลขนั้นใช้พื้นที่หน่วยความจำสองช่องติดต่อกัน) ในโปรเซสเซอร์สมัยใหม่ การพิมพ์คำสั่งที่มีโคม่าลอยตัวไม่ได้จำกัดอยู่เพียงการดำเนินการทางคณิตศาสตร์บางอย่างเท่านั้น แต่ยังรวมถึงคำสั่งที่ซับซ้อนอื่นๆ ด้วย เช่น การคำนวณฟังก์ชันตรีโกณมิติ ฟังก์ชันลอการิทึม และฟังก์ชันที่ซับซ้อนที่จำเป็นสำหรับการประมวลผลเสียงและภาพ

4 คำสั่งการล้างใช้เพื่อเขียนรหัสศูนย์ลงในรีจิสเตอร์หรือตรงกลางของหน่วยความจำ คำสั่งเหล่านี้สามารถถูกแทนที่ด้วยคำสั่งสำหรับการแทนที่รหัสศูนย์ หรือคำสั่งการล้างพิเศษอาจถูกเพิ่มถัดจากคำสั่งที่แทนที่

5 คำสั่งสำหรับการเพิ่มขึ้น (เพิ่มขึ้นทีละหนึ่ง) และการลดลง

(เปลี่ยนทีละอย่าง) อาจทำได้ยากยิ่งขึ้นอีกด้วย โดยหลักการแล้ว พวกเขาสามารถถูกแทนที่ด้วยคำสั่งที่รวมกับหน่วยหรือหน่วยเดียว และมีการบวกส่วนเพิ่มและส่วนลดเข้าด้วยกัน คำสั่งเหล่านี้ต้องการตัวถูกดำเนินการอินพุตหนึ่งตัว ซึ่งเป็นตัวถูกดำเนินการเอาต์พุต

7 คำสั่งเชิงตรรกะ คำสั่งแบบลอจิคัลจะติดตามตัวถูกดำเนินการของการดำเนินการแบบลอจิคัล (ทีละบิต) ดังนั้นโค้ดของตัวถูกดำเนินการจึงไม่เพียงมองเป็นหนึ่งเดียว แต่ยังเป็นชุดของบิตที่อยู่ติดกัน ที่นี่มีกลิ่นเหม็นปรากฏขึ้น คำแนะนำทางคณิตศาสตร์-

­ คำสั่งทางตรรกะเป็นไปตามการดำเนินการพื้นฐานต่อไปนี้:

­ ตรรกะมากกว่า I ตรรกะมากกว่า ABO เพิ่มหลังจากโมดูล 2 (รวม ABO)

­ การแจกแจงเชิงตรรกะ เลขคณิต และวัฏจักร

­ การตรวจสอบบิตและตัวถูกดำเนินการการติดตั้งและการล้างบิต (อุปกรณ์ประกอบฉาก) ในการลงทะเบียนโปรเซสเซอร์ (

PSW)

คำแนะนำการใช้งานเชิงตรรกะทำให้คุณสามารถคำนวณฟังก์ชันลอจิคัลพื้นฐานโดยละเอียดจากตัวถูกดำเนินการอินพุตสองตัว นอกจากนี้ การดำเนินการที่ฉันใช้สำหรับการล้างบิตงาน (เป็นหนึ่งในตัวถูกดำเนินการที่ใช้รหัสมาสก์ ซึ่งตัวเลขซึ่งจำเป็นต้องล้างถูกตั้งค่าเป็นศูนย์) การดำเนินการ ABO ใช้เพื่อตั้งค่าบิตงาน (เป็นหนึ่งในตัวถูกดำเนินการที่เลือกรหัสมาสก์ ซึ่งตัวเลขซึ่งดันการตั้งค่าไปที่หนึ่งจะเพิ่มเป็นหนึ่ง) การดำเนินการ "เปิด ABO" ใช้เพื่อกลับค่าข้อมูลจำเพาะของบิต (เป็นหนึ่งในตัวถูกดำเนินการที่ตั้งค่ารหัสมาสก์ ซึ่งบิตที่อำนวยความสะดวกในการกลับจะถูกตั้งค่าเป็นหนึ่ง) คำแนะนำจะสร้างตัวถูกดำเนินการอินพุตสองตัวและสร้างตัวถูกดำเนินการเอาต์พุตหนึ่งตัว

9 คำสั่งการเปลี่ยน คำสั่งการเปลี่ยนใช้ในการจัดระเบียบรอบต่าง ๆ การคลี่คลายการเรียกใช้โปรแกรมย่อย ฯลฯ เพื่อทำลายความคืบหน้าล่าสุดของการทำงานของโปรแกรม คำสั่งเหล่านี้ถูกเขียนลงในคำสั่ง register ด้วยความหมายใหม่ และทำให้โปรเซสเซอร์ไม่ย้ายไปยังลำดับปัจจุบันของคำสั่ง แต่ไปยังคำสั่งอื่นในหน่วยความจำโปรแกรม คำสั่งการเปลี่ยนแปลงบางคำสั่งจะถูกส่งกลับไป ณ จุดที่ทำให้เกิดการเปลี่ยนแปลง คำสั่งอื่น ๆ จะไม่ส่งสัญญาณนี้ เมื่อถ่ายโอนข้อมูลแล้ว พารามิเตอร์ตัวประมวลผลที่แน่นอนจะถูกบันทึกลงในสแต็ก หากไม่ได้ถ่ายโอนการตั้งค่า พารามิเตอร์ตัวประมวลผลที่แน่นอนจะไม่ถูกบันทึก

คำสั่งการนำทางที่ไม่มีการหมุนแบ่งออกเป็น 2 กลุ่ม:

­ ทีมที่เปลี่ยนผ่านอย่างบ้าคลั่ง

­ คำสั่งการเปลี่ยนแปลงทางจิต

คำจะปรากฏในไอคอนของคำสั่งเหล่านี้สาขา (rozgalenya) และ Jump (ลาย)

คำสั่งการเปลี่ยนอย่างบ้าคลั่งเรียกร้องให้มีการเปลี่ยนไปใช้ที่อยู่ใหม่ไม่ว่าจะเกิดอะไรขึ้นก็ตาม พวกเขาสามารถคลิกเพื่อย้ายไปยังค่าหน่วยความจำที่ระบุ (ไปข้างหน้าหรือข้างหลัง) หรือไปยังที่อยู่หน่วยความจำที่ระบุ ค่าของค่าที่ถูกลบหรือค่าใหม่ของที่อยู่จะถูกระบุเป็นตัวถูกดำเนินการอินพุต

คำสั่งของการเปลี่ยนแปลงทางจิตเรียกร้องให้มีการเปลี่ยนแปลงที่แตกต่างจากจุดเริ่มต้น ยกเว้นการปฏิบัติตามภารกิจของจิตใจ ด้วยเหตุนี้ ความหมายของธงในทะเบียนของผู้ประมวลผลจึงปรากฏ (ป.ล. -

­ การเปลี่ยนแปลงทางจิตนี้เป็นผลมาจากการดำเนินการครั้งก่อนซึ่งเปลี่ยนความหมายของอำนาจ การเปลี่ยนใจจำนวนเท่าใดก็ได้สามารถอยู่ในช่วงตั้งแต่ 4 ถึง 16 การใช้งานคำสั่งการเปลี่ยนผ่านทางจิตจำนวนหนึ่ง:

­ การเปลี่ยนแปลงเนื่องจากมีค่าเท่ากับศูนย์

­ การเปลี่ยนแปลงหากไม่เท่ากับศูนย์

­ การเปลี่ยนแปลงซึ่งหมายถึงการประดิษฐ์ใหม่

­ การเปลี่ยนแปลงเนื่องจากไม่มีการทดแทน

­ การเปลี่ยนแปลงซึ่งมากกว่าศูนย์

การเปลี่ยนแปลงซึ่งน้อยกว่าหรือมากกว่าศูนย์

ทันทีที่การเปลี่ยนแปลงทางจิตสิ้นสุดลง การเข้าสู่การลงทะเบียนคำสั่งที่มีความสำคัญใหม่ก็จะดำเนินการ เนื่องจากการเปลี่ยนแปลงทางจิตไม่สิ้นสุด ตัวประมวลผลคำสั่งจึงเพิ่มขึ้น และตัวประมวลผลจะเลือกและเลือกคำสั่งถัดไปตามลำดับ

สถานที่พิเศษในคำสั่งสำหรับการเปลี่ยนจากการหมุนถูกยึดโดยคำสั่งเพื่อขัดจังหวะ คำสั่งเหล่านี้ในตัวถูกดำเนินการอินพุตจะส่งออกจำนวนการวนซ้ำ (ที่อยู่เวกเตอร์)

วิสโนวอค:

ภาษาแอสเซมบลีเป็นสัญลักษณ์มากกว่าภาษาเครื่อง ภาษาของแอสเซมเบลอร์นั้นมีเอกลักษณ์เฉพาะสำหรับคอมพิวเตอร์ทุกประเภท โปรแกรมภาษาแอสเซมบลีคือชุดของบล็อกหน่วยความจำที่เรียกว่าเซกเมนต์หน่วยความจำ ส่วนของสกินประกอบด้วยภาษาทั้งหมด ส่วนสกินนั้นครอบครองโค้ดโปรแกรมจำนวนมาก ข้อเสนอภาษาแอสเซมบลีมีสี่ประเภท: คำสั่งและคำแนะนำ มาโคร คำสั่ง และบรรทัดแสดงความคิดเห็น

อักขระที่ยอมรับได้เมื่อเขียนข้อความโปรแกรมคือตัวอักษรละตินทั้งหมด: ก-ฮ,ก-ซ- 0 2) ตัวเลขเข้า 9 ในกรณีนี้ ตัวอักษรใหญ่และเล็กถือว่าเท่ากัน ตัวเลขเข้า ? , @ , $ , _ , & - , . () < > { } + / * % ! " " ? = # ^ .

สัญญาณ

-

­ ตัวคั่น

1 กำหนดตัวดำเนินการแอสเซมเบลอร์ประเภทนี้และกฎวากยสัมพันธ์สำหรับการสร้างนิพจน์แอสเซมเบลอร์ ตัวดำเนินการทางคณิตศาสตร์ ตัวดำเนินการ ssuvu ตัวดำเนินการการจัดตำแหน่ง ตัวดำเนินการเชิงตรรกะ ตัวดำเนินการดัชนี ตัวดำเนินการกำหนดประเภทใหม่ ตัวดำเนินการกำหนดส่วนใหม่ ตัวดำเนินการตั้งชื่อประเภทโครงสร้าง ตัวดำเนินการสร้างส่วน ตัวดำเนินการรับค่า viraza

2 ระบบสั่งการแบ่งออกเป็น 8 กลุ่มหลัก

3 ควบคุมอาหาร:

4 แอสเซมเบลอร์ของฉันคืออะไร?

5 สัญลักษณ์ใดที่สามารถใช้เขียนคำสั่งในภาษาแอสเซมบลีได้?