โครงสร้างคำสั่งของแอสเซมเบลอร์เพื่อแก้แค้น รูปแบบข้อมูลและโครงสร้างคำสั่งในแอสเซมเบลอร์ภาพยนตร์ คำสั่งเลขคณิต……………………………………………………………

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

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

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

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

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

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

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

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

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

แนบแถวต่อไปนี้เข้ากับโค้ด:

นับ ดีบี 1 ;Im, คำสั่ง, ตัวถูกดำเนินการหนึ่งตัว
mov eax,0 ;Command ตัวถูกดำเนินการสองตัว
ซีบีดับเบิลยู; ทีม

มิทกิ

มิทก้า แอสเซมเบลอร์ภาษาอาจมีสัญลักษณ์ต่อไปนี้:

  • ตัวอักษรทั้งหมดของอักษรละติน
  • ตัวเลขตั้งแต่ 0 ถึง 9;
  • อักขระพิเศษ: _, @, $, ?

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

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

ทีม

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

คำสั่ง

แอสเซมเบลอร์ประกอบด้วยตัวดำเนินการจำนวนหนึ่งที่อนุญาตให้ประมวลผลกระบวนการประกอบและแสดงรายการ ตัวดำเนินการเหล่านี้เรียกว่า คำสั่ง -

ทำงานเฉพาะในกระบวนการประกอบโปรแกรมเท่านั้นและไม่สร้างรหัสเครื่องภายใต้คำสั่ง

ตัวดำเนินการ ตัวดำเนินการ
คำสั่งสามารถจับคู่ตัวถูกดำเนินการหนึ่งหรือสองตัว หรืออาจไม่ตรงกับตัวถูกดำเนินการ จำนวนตัวถูกดำเนินการจะถูกระบุโดยรหัสคำสั่ง
นำมาใช้:

  • ไม่มีตัวถูกดำเนินการ ;เปิด
  • ตัวถูกดำเนินการหนึ่งตัว inc ecx; เพิ่มอีเอ็กซ์
  • ตัวถูกดำเนินการสองตัวบวก eax,12 ;เพิ่ม 12 ลงใน eax

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

จามรีโอเปร่า mogu vistupati

  • ตัวระบุ;
  • เชือกคล้องสัญลักษณ์ที่ห้อยอยู่บนขาเดี่ยวหรือขาคู่
  • จำนวนเต็มอยู่ในระบบเลขสอง หก สิบ หรือสิบหก
ตัวระบุ

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

กฎสำหรับการบันทึกตัวระบุ

  • ตัวระบุสามารถประกอบด้วยอักขระหนึ่งตัวขึ้นไป
  • คุณสามารถใช้ตัวอักษรละติน ตัวเลข และเครื่องหมายพิเศษเป็นสัญลักษณ์ได้: _, ?, $, @
  • ตัวระบุไม่สามารถเป็นสัญลักษณ์ตัวเลขได้
  • ความยาวรหัสสามารถมีอักขระได้สูงสุด 255 ตัว
  • นักแปลยอมรับตัวเลข 32 หลักแรกของตัวระบุ และละเว้นส่วนที่เหลือ
ความคิดเห็น

ความคิดเห็นจะถูกเพิ่มลงในแถวที่ระบุด้วยสัญลักษณ์ -

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

โครงสร้างโปรแกรมภาษาแอสเซมบลี โปรแกรมที่เขียนด้วยภาษาแอสเซมเบลอร์สามารถประกอบด้วยหลายส่วนเรียกว่า โมดูล

-

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

.รหัส
เริ่ม:

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

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

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

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

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

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

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

โมเดลหน่วยความจำ ก่อนที่จะลบเซ็กเมนต์ จำเป็นต้องระบุโมเดลหน่วยความจำเบื้องหลังคำสั่งเพิ่มเติม MODEL ตัวแก้ไข memory_model, processor_name, OS_type, stack_parameter โมเดลหน่วยความจำพื้นฐานของภาษาแอสเซมบลี: โมเดลหน่วยความจำ รหัสที่อยู่ การระบุที่อยู่ข้อมูล ระบบปฏิบัติการ การระบุที่อยู่รหัสและข้อมูล เล็ก ๆ ใกล้ MS-DOS ที่ยอมรับได้ ขนาดเล็กใกล้ MS-DOS, Windows No MEDIUM FAR NEAR MS-DOS, COMPACT NEAR FAR MS-DOS, Windows N LARGE FAR MS-DOS, Windows N HUGE FAR MS-DOS, Windows N ใกล้ 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 modifier, คลิก, OS_type, stack_parameter พารามิเตอร์ modifier จะถูกแปลงสำหรับเซ็กเมนต์บางประเภทและสามารถรับค่าต่อไปนี้: ใช้ 16 (เซ็กเมนต์ของโมเดลที่เลือกจะถูกแปลงเป็น 16 บิต) ใช้ 32 (เซ็กเมนต์ของโมเดลที่เลือกคือ ชนะเป็น 32 บิต) พารามิเตอร์ request_pro_call ใช้เพื่อกำหนดวิธีการส่งพารามิเตอร์เมื่อเรียกโพรซีเดอร์จากแหล่งอื่น รวมถึงแหล่งระดับสูง (C++, Pascal) พารามิเตอร์สามารถยอมรับค่าต่อไปนี้: C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL

โมเดลหน่วยความจำ MODEL โมดิฟายเออร์ memory_model, memory_device, 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) คำสั่งนี้เลือกชุดคำสั่งแอสเซมเบลอร์ที่เหมาะสม โดยระบุรุ่นโปรเซสเซอร์ -ไม่ใช่สแต็ก Vikorist แต่เป็นเซ็กเมนต์ สแต็คทุกวัน -

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

ความหมายคือการสร้างโปรแกรมขึ้นมาใหม่ซึ่งแสดงโดยโปรแกรมเดียว ซึ่งเป็นโปรแกรมทั้งหมดที่เรียกว่ารหัสอ็อบเจ็กต์ นอกเหนือจากการสนับสนุนการช่วยจำคำสั่งของเครื่องแล้ว โปรแกรมแปลสกินยังมีชุดคำสั่งและฟังก์ชันมาโครที่ทรงพลัง ซึ่งมักจะไม่มีอะไรแปลกเลย ประเภทหลักของนักแปลแอสเซมเบลอร์: MASM (Microsoft Assembler), TASM (Borland Turbo Assembler), FASM (Flat Assembler) - แอสเซมเบลอร์ที่หลากหลายที่สามารถพบได้ทุกที่เขียนโดย Tomasz Grishtar (โปแลนด์), NASM (Netwide Assembler) - great 86 การสร้างสรรค์ buv โดย Simon Tatham ร่วมกับ Julian Hall และกำลังได้รับการพัฒนาโดยทีมนักพัฒนากลุ่มเล็ก ๆ ที่ Source ปลอม."> Трансляция программы в Microsoft Visual Studio 2005 1) Создать проект, выбрав меню File->New->Project и указав имя проекта (hello. prj) и тип проекта: Win 32 Project. В дополнительных опциях мастера проекта указать “Empty Project”.!}!}

สุทธิ."> Трансляция программы в Microsoft Visual Studio 2005 2) В дереве проекта (View->Solution Explorer) добавить файл, в котором будет содержаться текст программы: Source. Files->Add->New. Item.!}!}

Src="https://present5.com/presentation/-29367016_63610977/image-15.jpg" alt="Translating programs in Microsoft Visual Studio 2005 1) สร้างโครงการโดยไปที่ไฟล์ -> เมนูใหม่ -> โครงการ

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 6) Откомпилировать файл, выбрав Build->Build hello. prj. 7) Запустить программу, нажав F 5 или выбрав меню Debug->Start Debugging.!}!}

การเขียนโปรแกรมใน Windows OS การเขียนโปรแกรมใน Windows OS ขึ้นอยู่กับฟังก์ชัน API ที่เลือก (Application Program Interface) โปรแกรมซอฟต์แวร์- จำนวนของพวกเขาถึง 2,000 โปรแกรมสำหรับ Windows ส่วนใหญ่ประกอบด้วยการคลิกดังกล่าว การโต้ตอบทั้งหมดด้วยอาคารภายนอก ตามกฎแล้ว ทรัพยากรของระบบปฏิบัติการจะถูกใช้เพื่อรองรับฟังก์ชันดังกล่าว การดำเนินการระบบวินโดวส์

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

API ในไฟล์วิธีใช้ ฟังก์ชัน API ใดๆ จะแสดงในรูปแบบของประเภท function_name (FA 1, FA 2, FA 3) ประเภท – ประเภทของค่าที่ถูกหมุน FAH – การถ่ายโอนข้อโต้แย้งที่เป็นทางการตามลำดับความตรง เช่น int Message กล่อง (HWND h. Wnd, LPCTSTR lp. ข้อความ, LPCTSTR lp. คำบรรยาย, UINT u. ประเภท); ฟังก์ชั่นนี้จะแสดงบนหน้าจอผ่านการแจ้งเตือนและปุ่มออก (หรือปุ่ม) พารามิเตอร์การตรวจจับ: ชม. 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 ทุกคน! - ฟังก์ชั่น 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 กล่อง. 686 P. รุ่นแบน, STDCALL. STACK 4096 ข้อมูล MB_OK EQU 0 STR 1 DB "โปรแกรมแรกของฉัน", 0 STR 2 DB "สวัสดีทุกคน!", 0 HW DD? ข้อความภายนอก กล่อง. ฟังก์ชั่น 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 กล่อง.: ใกล้.

รหัสเริ่มต้น: PUSH MB_OK PUSH OFFSET 1 PUSH OFFSET 2 PUSH HW CALL ข้อความ กล่อง.

RET สิ้นสุด เริ่มต้น

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

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

1. สถาปัตยกรรมพีซี……………………………………………………………………5

1.1. รีจิสทรี

1.1.1 การลงทะเบียนการรับรองทางกฎหมาย

1.1.2. การลงทะเบียนส่วน

1.1.3 ทะเบียนธง

1.2. การจัดระเบียบของหน่วยความจำ

1.3. บรรณาการ.

    1. 1.3.1 ประเภทข้อมูล

1.3.2 การส่งสัญลักษณ์และแถว

2. ตัวดำเนินการโปรแกรมในภาษาแอสเซมบลี ……………………………………

คำสั่งประกอบภาพยนตร์

2.2. โหมดการกำหนดแอดเดรสและรูปแบบคำสั่งของเครื่อง

3. ตัวดำเนินการเทียม………………………………………………………

3.1 คำสั่งและการจัดสรรข้อมูล

3.2 โครงสร้างของโปรแกรมภาษาแอสเซมบลี

3.2.1. ส่วนโปรแกรม ถือว่าคำสั่ง

    3.2.3 คำสั่งการแบ่งส่วนแบบง่าย

    4. การประกอบและเขียนโปรแกรม ………………….

5. คำสั่งข้อมูลโอเวอร์โหลด……………………………………………

5.1 ทีมที่มีความสำคัญจากต่างประเทศ

5.2 คำสั่งหุ่นยนต์พร้อมสแต็ก

5.3 คำสั่งป้อนข้อมูล

    5.4 คำสั่งเพื่อเอาชนะที่อยู่

5.5 คำสั่งให้เอาชนะธง

6. คำสั่งเลขคณิต……………………………………………………………………….

6.1 การดำเนินการทางคณิตศาสตร์กับจำนวนเต็มจำนวน

6.1.1 การเพิ่มและการอัพเดต

7. การดำเนินการเชิงตรรกะ ………………………………………………….

8. การทำลายล้างและการทำลายล้างแบบวัฏจักร …………………………………………

9. การทำงานของสตริง………………………………………………………

10. ลอจิกและการจัดระเบียบของโปรแกรม……………………………

10.1 การเปลี่ยนแปลงที่บ้าคลั่ง

10.2 การเปลี่ยนผ่านอัจฉริยะ

10.4 ขั้นตอนสำหรับแอสเซมเบลอร์ภาษา

10.5 อินเตอร์เชนจ์ INT

10.6 ซอฟต์แวร์ระบบ

10.6.1.1 การอ่านคีย์บอร์ด

10.6.1.2 การแสดงสัญลักษณ์บนหน้าจอ

10.6.1.3 เสร็จสิ้นโปรแกรม

10.6.2.1 เลือกโหมดการแสดงผล

11. หน่วยความจำดิสก์………………………………………………………………………..

11.2 ตารางการแบ่งไฟล์

11.3 การดำเนินการอินพุต-เอาท์พุตไปยังดิสก์

11.3.1 การเขียนไฟล์ลงดิสก์

11.3.1.1 ข้อมูลในรูปแบบ ASCIIZ

11.3.1.2 หมายเลขไฟล์

11.3.1.3 การสร้างดิสก์ไฟล์

11.3.2 การอ่านไฟล์ดิสก์

เข้า

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

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

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

ผู้ช่วยตรวจสอบการเขียนโปรแกรมกำลังของแอสเซมเบลอร์ของฉันสำหรับคอมพิวเตอร์ที่มีไมโครโปรเซสเซอร์ Intel

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

    สถาปัตยกรรมพีซี

สถาปัตยกรรม EOM เป็นการแสดงให้เห็นอย่างเป็นรูปธรรมของ EOM ซึ่งสะท้อนถึงการจัดโครงสร้าง วงจรไฟฟ้า และตรรกะ

EOM ในปัจจุบันทั้งหมดมีลักษณะเฉพาะด้วยความลับและพลังทางสถาปัตยกรรมส่วนบุคคล คุณลักษณะส่วนบุคคลมีความเฉพาะเจาะจงกับคอมพิวเตอร์รุ่นใดรุ่นหนึ่ง

แนวคิดของสถาปัตยกรรม EOM ประกอบด้วย:

    แผนภาพโครงสร้าง EOM

    วิธีการเข้าถึงองค์ประกอบ แผนภาพบล็อกอีโอเอ็ม;

    การโทรออกและความพร้อมในการลงทะเบียน

    การจัดองค์กรและวิธีการจัดการ

    วิธีการนำเสนอและรูปแบบของข้อมูลอีโอเอ็ม

    การพิมพ์คำสั่งเครื่อง EOM

    รูปแบบคำสั่งเครื่อง

    ขัดจังหวะ obrobka

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

      รีจิสทรี

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

โปรแกรมเมอร์ใช้รีจิสทรีของผู้สื่อข่าวในการเขียนโปรแกรม การลงทะเบียนเหล่านี้เรียกว่า:

    รีจิสเตอร์ 32 บิตทั้งหมด (รีจิสตรีที่มีนัยสำคัญทางกฎหมาย) EAX/AX/AH/AL, EBX/BX/BH/BL, ECX/CX/CH/CL, EDX/DX/DLH/DL, EBP/BP, ESI/SI , EDI/DI, ESP/SP;

    รีจิสเตอร์เซ็กเมนต์ 16 บิตหกรายการ: CS, DS, SS, ES, FS, GS;

    รีจิสเตอร์จะถูกควบคุม: รีจิสเตอร์คำสั่ง EFLAGS/FLAGS และรีจิสเตอร์ตัวบ่งชี้คำสั่ง EIP/IP

จากการซ่อมแซม บางส่วนของรีจิสเตอร์ 32 บิตหนึ่งตัวได้ถูกสร้างขึ้น คำนำหน้า E (ขยาย) หมายถึงการใช้รีจิสเตอร์ 32 บิต p align="justify"> ในการทำงานกับไบต์ จะใช้รีจิสเตอร์ที่มีคำนำหน้า L (ต่ำ) และ H(สูง) เช่น AL, CH - ซึ่งหมายถึงไบต์ต่ำและสูงของส่วน 16 บิตของรีจิสเตอร์ .

        ทะเบียนการรับรู้อันศักดิ์สิทธิ์

EAX/AX/AH/AL(ทะเบียนสะสม) – แบตเตอรี่-

ใช้ในหลายแผนก ในการดำเนินการอินพุต-เอาท์พุต และในการดำเนินการต่างๆ บนแถว EBX/BX/BH/BL –ทะเบียนฐาน

(รีจิสเตอร์ฐาน) มักใช้เมื่อระบุข้อมูลในหน่วยความจำ ECX/CX/CH/CL –หมอ

(นับรีจิสเตอร์) ใช้เป็นแพทย์เพื่อนับจำนวนครั้งของรอบการซ้ำ EDX/DX/DH/DL –การลงทะเบียนข้อมูล

(Data Register) ใช้สำหรับบันทึกข้อมูลระดับกลาง ในทีมที่กระตือรือร้น เป็นสิ่งที่ต้องมี

เพื่อรองรับคำสั่งการประมวลผลแถว ซึ่งอนุญาตให้มีการประมวลผลองค์ประกอบแลนเทิร์นตามลำดับ ซึ่งสามารถมีได้ถึง 32, 16 หรือ 8 บิต ให้ใช้ดังต่อไปนี้:

ESI/SI (การลงทะเบียนดัชนีต้นทาง) - ดัชนี เจเรลา-

ตอบโต้ไปยังที่อยู่ของสายการผลิต ดัชนี EDI/DI (การลงทะเบียนดัชนีปลายทาง) –พรีมาชา

(หมกมุ่น).

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

ซ้อนกัน -ย้ายส่วนบนของสแต็กไปยังส่วนของเธรดของสแต็ก

1. สถาปัตยกรรมพีซี……………………………………………………………………5

EBP/BP (การลงทะเบียนตัวชี้ฐาน) – การลงทะเบียนตัวบ่งชี้สแต็คฐาน- วัตถุประสงค์ในการจัดระเบียบการเข้าถึงข้อมูลตรงกลางสแต็กอย่างเพียงพอรุ่นซอฟต์แวร์ของไมโครโปรเซสเซอร์มีหกรุ่น

    การลงทะเบียนส่วน: CS, SS, DS, ES, GS, FS นี่เป็นเพราะองค์กรเฉพาะและการใช้ RAM โดยไมโครโปรเซสเซอร์ของ Intel ฮาร์ดแวร์ไมโครโปรเซสเซอร์รองรับการจัดโครงสร้างของโปรแกรมซึ่งประกอบด้วย เซ็กเมนต์หากต้องการแทรกเซ็กเมนต์ที่มีอยู่ในปัจจุบัน จะใช้การลงทะเบียนเซ็กเมนต์ ไมโครโปรเซสเซอร์รองรับเซ็กเมนต์ประเภทต่อไปนี้:

    ส่วนรหัสดำเนินการคำสั่งโปรแกรม ในการเข้าถึงส่วนนี้ ให้ใช้ CS register (การลงทะเบียนส่วนรหัส) – รหัสลงทะเบียนส่วน-

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

    ซึ่งเก็บที่อยู่ของส่วนข้อมูลของโปรแกรมสตรีมส่วนกอง

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

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

คำสั่ง EIP/IP แสดงรีจิสทรี;

    ทะเบียนธง EFLAGS/FLAGS

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

EIP/IP (การลงทะเบียนตัวชี้คำแนะนำ) – นักแสดง ทีม-

รีจิสเตอร์ EIP/IP มีความจุ 32 หรือ 16 บิตและมีออฟเซ็ตของคำสั่งที่กำลังมาถึง ซึ่งจะถูกแมปแทนรีจิสเตอร์เซ็กเมนต์ CS ในเซ็กเมนต์สตรีมคำสั่ง การลงทะเบียนนี้ไม่สามารถเข้าถึงได้อย่างสมบูรณ์ และการเปลี่ยนแปลงนี้ดำเนินการโดยคำสั่งการเปลี่ยนแปลง ในสถาปัตยกรรมของไมโครโปรเซสเซอร์ โครงสร้างข้อมูล - สแตก - ได้รับการสนับสนุนในระดับฮาร์ดแวร์และซอฟต์แวร์ มีคำสั่งพิเศษและรีจิสเตอร์พิเศษสำหรับการทำงานกับสแต็ก โปรดทราบว่าสแต็กจะเต็มไปด้วยที่อยู่ต่ำสุด EFLAGS/FLAGS (ทะเบียนธง) –ธง -ความจุบิต 32/16 บิต

1.1. รีจิสทรี

โอเครมี บิติ

ทะเบียนนี้มีฟังก์ชันการทำงานและเรียกว่าธง Prapor เป็นบิตที่ใช้กับค่า 1 ("prapor ของการติดตั้ง") ตามที่ deyak ได้ประกาศไว้ และค่า 0 ("prapor of the discarded") มิฉะนั้น ส่วนที่อายุน้อยกว่าของการลงทะเบียนนี้คล้ายกับการลงทะเบียน FLAGS สำหรับ i8086 โดยสิ้นเชิง

การลงทะเบียนของธงเป็นแบบ 32 บิต ชื่อ EFLAGS (รูปที่ 1) นอกจากทะเบียนนี้แล้ว ยังมีเพลงที่มีวัตถุประสงค์การใช้งานและเรียกว่าธง แต่ละคนจะได้รับเพลงชื่อ (ZF, CF ฯลฯ) EFLAGS 16 บิตที่อายุน้อยกว่าแสดงถึงการลงทะเบียนคำสั่ง FLAGS 16 บิต ซึ่งใช้ในระหว่างการเผยแพร่โปรแกรมที่เขียนขึ้นสำหรับไมโครโปรเซสเซอร์ i086 และ i286

รูปที่ 1 ทะเบียนธง

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

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

OF (ธงล้น) - ธงได้รับการจัดอันดับใหม่-

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

ตั้งค่าเป็น 1 หากการดำเนินการกับหมายเลขที่เซ็นชื่อมีผลเป็นลบ ZF (ธงศูนย์) - PF (แฟล็กพาริตี) -การจับคู่

- มากถึง 1 อันเป็นผลมาจากคำสั่งการวาดคือการล้างแค้นคู่ของทั้งสองหน่วย ประกันเฉพาะการดำเนินการเข้า-ถอนเงินเท่านั้น AF (ธงพกพาเสริม) -

ธงการโอนเพิ่มเติม

- แก้ไขลักษณะเฉพาะของการดำเนินการ viconic กับตัวเลขสองถึงสิบปราโปริ สตานิฟ:

DF (ธงทิศทาง) - ธงโดยตรง-

ฉันพิจารณาดูแถวของทีมแถวโดยตรง: เมื่อ DF=0 แถวจะมอง "ข้างหน้า" (จากซังไปจนสุด) โดย DF=1 - เมื่อถึงทางเลี้ยวตรงไปข้างหน้า IOPL (ระดับสิทธิ์อินพุต/เอาต์พุต) –ระดับสิทธิพิเศษสำหรับอินพุต-เอาท์พุต

Vikoristvaetsya ในโหมดป้องกันของหุ่นยนต์ไมโครโปรเซสเซอร์ การควบคุมการเข้าถึงคำสั่งอินพุต-เอาท์พุต ขึ้นอยู่กับสิทธิ์ของงาน

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

ธงระบบ: ถ้า (แฟล็กขัดจังหวะ) -ธงขัดจังหวะ

- เมื่อ IF=0 โปรเซสเซอร์จะหยุดตอบสนองต่อการหยุดชะงักที่ต้องเข้าถึง เมื่อ IF=1 การบล็อกจะหยุดการหยุดชะงัก TF (ธงกับดัก) -

ธงตระสุวรรณยา -เมื่อ TF = 1 หลังจากเปิดใช้งานคำสั่ง skin โปรเซสเซอร์จะเริ่มการประมวลผล (หมายเลข 1) ซึ่งสามารถเร่งความเร็วได้ด้วยโปรแกรมประมวลผลที่มีชื่อเสียง

RF (แฟล็กประวัติย่อ) - ธงการต่ออายุ-

      Vikorist จำเป็นต้องดำเนินการระงับการลงทะเบียนการปรับปรุง

VM (โหมดเสมือน 8086) - ธงเสมือน 8086โปรเซสเซอร์ 1 ตัวทำงานในโหมด 8086 เสมือน โปรเซสเซอร์ 0 ทำงานในโหมดจริงและได้รับการป้องกัน AC (ตรวจสอบการจัดตำแหน่ง) -ธงควบคุมวิริวินันยา วัตถุประสงคฌในการอนุญาตควบคุมวิริวิวิยะภายใตฉชั่วโมงเก็บจนจำการจัดระเบียบของหน่วยความจำ

เรียกว่าหน่วยความจำฟิสิคัลที่โปรเซสเซอร์สามารถเข้าถึงได้

    หน่วยความจำในการดำเนินงาน (หรือโดยอุปกรณ์หน่วยความจำในการดำเนินงาน -

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

ทางเลือกและการใช้งานโมเดลเหล่านี้ขึ้นอยู่กับโหมดการทำงานของไมโครโปรเซสเซอร์:

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

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

    โหมดเสมือน 8086โหมดนี้ช่วยให้สามารถใช้งานโปรแกรม i8086 หลายโปรแกรมได้ เรามีโปรแกรมหุ่นยนต์ในโหมดเรียล

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

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

การสร้างที่อยู่ทางกายภาพในโหมดจริง

ในโหมดจริง ช่วงสำหรับการเปลี่ยนที่อยู่ทางกายภาพจะถูกตั้งค่าเป็น 0 ถึง 1 MB ขนาดเซ็กเมนต์สูงสุดคือ 64 KB เมื่อซูมไปที่จุดใดจุดหนึ่ง ที่อยู่ทางกายภาพ RAM ถูกกำหนดให้กับที่อยู่ของจุดเริ่มต้นของเซ็กเมนต์และออฟเซ็ตที่อยู่ตรงกลางของเซ็กเมนต์ ที่อยู่ของส่วนหัวของส่วนจะถูกนำมาจากการลงทะเบียนส่วนที่เกี่ยวข้อง ในกรณีนี้ การลงทะเบียนเซ็กเมนต์จะต้องมีที่อยู่ทางกายภาพของส่วนหัวของเซ็กเมนต์ที่สูงกว่าเพียง 16 บิตเท่านั้น บิตที่อายุน้อยที่สุดของที่อยู่ 20 บิตที่จะปฏิเสธจะปรากฏเป็นค่าของเซกเมนต์รีจิสเตอร์ทางด้านซ้าย 4 หลัก การดำเนินการเสร็จสมบูรณ์ในฮาร์ดแวร์ ค่า 20 บิตจะถูกลบออกจากที่อยู่ทางกายภาพที่เกี่ยวข้อง ซึ่งแสดงถึงจุดเริ่มต้นของเซ็กเมนต์ โตโต้ ที่อยู่ทางกายภาพถูกระบุเป็นคู่ "เซ็กเมนต์: การกระจัด" และ "เซ็กเมนต์" (เซ็กเมนต์) - 16 บิตแรกของที่อยู่หลักของเซ็กเมนต์หน่วยความจำที่ตรงกลางอยู่และ "การกระจัด" คือที่อยู่ 16 บิตของตรงกลาง ของเซ็กเมนต์หน่วยความจำเซ็กเมนต์นี้ 'yati (ค่า 16 * เซ็กเมนต์ +การแทนที่ ให้ที่อยู่ตรงกลางตรงกลาง) ตัวอย่างเช่น หากการลงทะเบียน CS เก็บค่า 1234h คู่ที่อยู่ 1234h:507h จะหมายถึงที่อยู่ที่แน่นอน ซึ่งเท่ากับ 16 * 1234h + 507h = 12340h + 507h = 12847h คู่ดังกล่าวเขียนในรูปแบบของคำรองและ (สำหรับตัวเลข) ในมุมมอง "กลับหัว": คำแรกมีการกระจัดและอีกคำหนึ่ง - ส่วนและผิวหนังของคำเหล่านี้จะถูกนำเสนอใน มุมมอง "กลับหัว" ตัวอย่างเช่น คู่ 1234h:5678h จะถูกเขียนดังนี้:| 78 | 56 | 34 | 12 |.

กลไกในการสร้างที่อยู่ทางกายภาพนี้ช่วยให้คุณสร้างโปรแกรมถ่ายโอนที่ปลอดภัย เพื่อไม่ให้ที่อยู่เฉพาะที่คุณเลือกอยู่ใน RAM

รายการ

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

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

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

แถวที่สัญลักษณ์ (

-

ลำดับของสัญลักษณ์ถูกสร้างขึ้นและใช้เพื่อกำหนดตำแหน่งให้กับโปรแกรมเอาท์พุตของฟังก์ชัน

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

คุณสมบัติของภาษา คุณสมบัติหลักของแอสเซมเบลอร์:ตัวอย่างเช่น สำหรับข้อมูลเพิ่มเติมของทีม (

) ช่วยในการจำ vikory

วิดนิมันยา (

การคูณ (

โพดิลู (

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

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

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

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

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

ในระดับสูง การเขียนและการดีบักโปรแกรมในภาษาแอสเซมเบลอร์ใช้เวลานานหลายชั่วโมง ภาษาของแอสเซมเบลอร์ถูกลบออกทันทีอย่างไร้เหตุผล หลากหลายสีผ่านสถานการณ์ดังต่อไปนี้:

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

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

โปรแกรมส่วนใหญ่มีโค้ดทั้งหมดเพียงเล็กน้อยเท่านั้นซึ่งสอดคล้องกับระยะเวลาประมาณร้อยชั่วโมงหลังจากเสร็จสิ้นโปรแกรม คำนวณ 1% ของโปรแกรมสำหรับ 50% ของเวลาของสงคราม และ 10% ของโปรแกรมสำหรับ 90% ของเวลาของสงคราม ดังนั้นในการเขียนโปรแกรมเฉพาะในใจจึงใช้ทั้งแอสเซมเบลอร์และหนึ่งในภาษาระดับสูงสุด

รูปแบบตัวดำเนินการในแอสเซมเบลอร์ mov

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

สาขามารยาท

ป้อนคอลัมน์ 1 สำหรับฟิลด์ป้ายกำกับ ป้ายกำกับประกอบด้วยชื่อสัญลักษณ์และตัวระบุ ที่อยู่หน่วยความจำ.

สิ่งนี้จำเป็นเพื่อให้คุณสามารถ:

● สร้างการเปลี่ยนแปลงที่ชาญฉลาดหรือบ้าคลั่งให้กับทีม

● ปฏิเสธการเข้าถึงสถานที่ที่บันทึกข้อมูล

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

ในแอสเซมเบลอร์ภาษาบางเวอร์ชัน กล่องคู่จะถูกวางไว้หลังเครื่องหมายคำสั่งเท่านั้น แต่จะไม่อยู่หลังเครื่องหมายข้อมูล และส่วนท้ายของเครื่องหมายสามารถล้อมรอบด้วยอักขระ 6 หรือ 8 ตัวได้

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

ฟิลด์รหัสการดำเนินงาน

ฟิลด์นี้มีรหัสช่วยในการจำของคำสั่งหรือคำสั่งหลอก (div. ด้านล่าง) รหัสช่วยในการจำของคำสั่งถูกเลือกโดยนักพัฒนาภาพยนตร์ ในภาษาแอสเซมเบลอร์

ตัวช่วยจำได้รับเลือกให้แก้ไขการลงทะเบียนหน่วยความจำ

) และการบันทึกแทนการลงทะเบียนในหน่วยความจำถือเป็นตัวช่วยจำ

-

ในภาษาแอสเซมเบลอร์

สำหรับการดำเนินการทั้งสองคุณสามารถใช้ชื่อเดียวได้อย่างชัดเจน

เนื่องจากการเลือกชื่อของตัวช่วยจำอาจเพียงพอแล้ว ความจำเป็นในการเลือกคำสั่งเครื่องสองคำสั่งนั้นเนื่องมาจากสถาปัตยกรรมของโปรเซสเซอร์

ตัวช่วยจำการลงทะเบียนยังขึ้นอยู่กับเวอร์ชันของแอสเซมเบลอร์ (ตาราง 5.2.1) สนามโอเปร่าที่นี่เริ่มใหญ่ขึ้นแล้ว

ข้อมูลเพิ่มเติม

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

● ข้อมูลตัวเลข

ไม่อาจเขียนลงไปได้) เนื่องจากหลักแรกของตัวเลขที่สิบหกคือ A, B, C

จากนั้นจะมีการเพิ่ม 0 (ศูนย์) ที่ไม่มีนัยสำคัญไว้ข้างหน้า

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

M (ดูข้อมูลเพิ่มเติม) มีลักษณะเป็นตัวอักษร A, B, C,

M หรือที่อยู่ในระบบตัวเลขใด ๆ (เช่น 10B - ที่อยู่การลงทะเบียน

ในระบบคู่);

● ตัวระบุ

สำหรับคู่รีจิสตรีของ AP

ตัวอักษรตัวแรก

ยังไม่มีข้อความ; สำหรับการเดิมพันแบตเตอรี่และป้ายลงทะเบียน -

-

สำหรับผู้รักษาทีม -

; สำหรับตัวบ่งชี้สแต็ก -

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

ตัวอย่างเช่น ตัวถูกดำเนินการ M1 ของคำสั่ง

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

● วิราซี จะเชื่อมโยงทางใดโดยดูจากข้อมูลเหล่านี้เพื่อช่วยทางคณิตศาสตร์และตัวดำเนินการเชิงตรรกะ

-

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

หมายถึงคำนั้น) และตอนนี้พวกเขาได้สั่งห้ามทางเลือกอื่นแล้ว

ซึ่งตั้งแต่เริ่มแรกถูกใช้ใน mov สำหรับโปรเซสเซอร์

ในเวอร์ชั่นภาพยนตร์

วิโคริสต์

ค่าคงที่นัยสำคัญ)

โปรเซสเซอร์รวบรวมตัวถูกดำเนินการจากแหล่งต่างๆ เพื่อจุดประสงค์นี้ นักพัฒนาแอสเซมเบลอร์จึงยกย่องโซลูชันต่างๆ เช่น:

รีจิสเตอร์ II ของระดับที่แตกต่างกันมีชื่อที่แตกต่างกัน: EAX - สำหรับรองรับตัวถูกดำเนินการ 32 บิต (ประเภท

-

AX - สำหรับ 16 บิต (type

และ AN - สำหรับ 8 บิต (type

● สำหรับโปรเซสเซอร์

ส่วนต่อท้ายจะถูกเพิ่มในโค้ดการทำงานของสกิน: ส่วนต่อท้าย

สำหรับประเภท

-

คำต่อท้าย ".В" สำหรับประเภท

สำหรับตัวถูกดำเนินการของ dovzhin ที่แตกต่างกัน จะใช้รหัสการดำเนินการที่แตกต่างกัน เช่น ในการรับไบต์ คำ (

) และคำในรีจิสตรี 64 บิตจะถูกแปลงตามโค้ดการดำเนินการ

อย่างชัดเจน.ช่องแสดงความคิดเห็น

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

● จุดด้วย com (;) ใน movs สำหรับโปรเซสเซอร์ของบริษัท

สัญญาณลูกเห็บ

(!) ใน movakh สำหรับสกินรอบๆ แถวที่แนะนำใต้ความคิดเห็นถูกถ่ายโอนไปยังสัญลักษณ์ซัง

คำสั่งหลอก (คำสั่ง)ในภาษาแอสเซมเบลอร์มีคำสั่งหลักสองประเภท: ขั้นพื้นฐานออกแบบมาเพื่อให้บริการกระบวนการออกอากาศรายการด้วยรหัสภาษา เหมือนก้นโต๊ะเลย 5.2.2 เปิดใช้งานคำสั่งหลอกจาก ac-sembler

สำหรับครอบครัว

.

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

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

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

วิธีที่ง่ายและมีประสิทธิภาพมากที่สุดในการทำซ้ำคำสั่งหลาย ๆ ครั้งพบได้ใน Vikoristan มาโคร,ซึ่งสามารถแสดงเป็นคำสั่งหลอกที่มีไว้สำหรับการแปลซ้ำๆ มักพบในกลุ่มคำสั่งในโปรแกรม

แมโครหรือคำสั่งมาโครมีลักษณะเป็นสามลักษณะ: การตีความแมโคร การรวมแมโคร และการขยายแมโคร

ค่ามาโคร

นี่เป็นลำดับคำสั่งโปรแกรมที่ซ้ำกันอย่างมากซึ่งใช้สำหรับส่งข้อความไปยังโปรแกรม

ค่ามาโครมีโครงสร้างดังต่อไปนี้:

รายชื่อไวรัส ค่ามาโคร

คำแนะนำของโครงสร้างค่ามหภาคสามารถดูได้เป็นสามส่วน:

● ชื่อเรื่อง

มาโครซึ่งรวมถึงชื่อ

คำสั่งหลอก

และตั้งค่าพารามิเตอร์

● ระบุด้วยจุด ร่างกายมาโคร;

● ทีม

เสร็จสิ้น

ค่ามาโคร

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

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

คำสั่งแมโครสำหรับถ่ายโอนพารามิเตอร์ด้วยค่าอื่น

เมื่อแอสเซมเบลอร์คอมไพล์ค่าแมโคร จะจัดเก็บไว้ในตารางคำจำกัดความของแมโคร เมื่อโปรแกรมปรากฏขึ้นในอนาคตชื่อ (

) ไปยังมาโคร แอสเซมเบลอร์จะแทนที่เนื้อหาด้วยแมโคร

ชื่อที่เกี่ยวข้องสำหรับแมโครเรียกว่ารหัสการดำเนินการ มาโครอาราม(macrovisa) แทนมาโครลำตัว - การขยายมาโคร

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

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

กระบวนการประกอบเกิดขึ้น มีสองตอน:

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

● ในรอบอื่น โปรแกรมที่ไม่มีมาโครจะถูกสร้างขึ้นใหม่

มาโครพร้อมพารามิเตอร์

สำหรับหุ่นยนต์ที่มีลำดับคำสั่งที่ทำซ้ำ พารามิเตอร์ที่สามารถยอมรับได้ ความหมายที่แตกต่างกัน, ค่ามาโครที่ถ่ายโอน:

● ส ข้อเท็จจริงพารามิเตอร์ที่เหมาะสมกับฟิลด์ของตัวถูกดำเนินการของตัวแปรแมโคร

● ส เป็นทางการพารามิเตอร์ ในกระบวนการขยายแมโคร พารามิเตอร์อย่างเป็นทางการที่ปรากฏในเนื้อความของแมโครจะถูกแทนที่ด้วยพารามิเตอร์จริงที่สอดคล้องกัน

การเลือกมาโครจากพารามิเตอร์

โปรแกรม 1 มีลำดับคำสั่งที่คล้ายกันสองลำดับ ต่างกันตรงที่ลำดับแรกจะสลับระหว่าง P และ

และเป็นเพื่อน

โปรแกรมมีการรวมมาโคร 2 รายการพร้อมพารามิเตอร์อย่างเป็นทางการสองตัว P1 และ P2 เมื่อขยายมาโคร สัญลักษณ์สกิน P1 ตรงกลางลำตัวจะถูกแทนที่ด้วยมาโครด้วยพารามิเตอร์จริงตัวแรก (P,

) และสัญลักษณ์ P2 จะถูกแทนที่ด้วยพารามิเตอร์จริงอื่น (

) กับโปรแกรมอันดับ 1 พร้อมวีซ่ามาโคร

โปรแกรม 2 ถูกทำเครื่องหมาย: P,

พารามิเตอร์จริงตัวแรก

พารามิเตอร์ที่แท้จริงอีกประการหนึ่ง

โปรแกรม 1

โปรแกรม 2

MOV EBX, Q MOV EAX, Pl

MOV Q, EAX MOV EBX, P2

MOV P, EBX MOV P2, EAX

ขยายกำลังการผลิต

มาดูวิธีขยายขีดความสามารถด้านภาษากัน

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

ป้ายกำกับได้รับการโหวตในท้องถิ่น (

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

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

IF WORDSIZE GT 16 M2 มาโคร

Macro M2 สามารถมีค่าได้ทั้งสองส่วนของตัวดำเนินการ

ขึ้นอยู่กับโปรเซสเซอร์ที่โปรแกรมประกอบอยู่: 16 บิตหรือ 32 บิต หากไม่ได้เปิดใช้งาน M1 มาโคร M2 จะไม่ถูกกำหนด

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

เกี่ยวกับการใช้ฟังก์ชันแมโครในภาษาแอสเซมบลี

เมื่อเลือกมาโคร แอสเซมเบลอร์จะต้องยกเลิกสองฟังก์ชัน: ประหยัดเศรษฐศาสตร์มหภาคі ขยายการคลิกมาโคร

การบันทึกค่ามาโคร

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

เมื่อทำงานกับแมโคร กระบวนการจะถูกประกอบขึ้น ถูกสร้างขึ้น:

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

● รายการ เป็นทางการพารามิเตอร์

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

การสำแดงภายในของมาโคร

จากมุมมองของก้นสำหรับโปรแกรม 2 (หน้า 244) ดูเหมือนว่า:

MOV EAX, MOV EBX, MOV MOV &

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

การขยายการคลิกมาโคร

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

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

แอสเซมบลีผ่านคู่

โปรแกรมประกอบด้วยผู้ปฏิบัติงานระดับต่ำ ดูเหมือนว่าการประกอบจะสามารถกำหนดลำดับของการกระทำได้:

● แปล yogo ด้วยภาษาเครื่อง

● โอนรหัสเครื่องที่แยกออกมาไปยังไฟล์ และส่วนที่เกี่ยวข้องของแผ่นพับไปยังไฟล์อื่น

● ทำซ้ำขั้นตอนข้างต้นจนกระทั่งโปรแกรมทั้งหมดได้รับการถ่ายทอด

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

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

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

ผ่านครั้งแรก

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

;Value - ขนาดบัฟเฟอร์

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

) เป็นการเปลี่ยนแปลงพิเศษ ในการผ่านครั้งแรก ค่าของการเปลี่ยนแปลงพิเศษจะถูกตั้งค่าเป็น 0 และเพิ่มขึ้นหลังจากใช้คำสั่ง skin ที่ส่วนท้ายของคำสั่งนี้ เหมือนก้นโต๊ะเลย 5.2.3 จะแสดงส่วนของโปรแกรมที่มีคำสั่ง 2 คำสั่งและค่าของแพทย์ออกมาแสดง ในระหว่างการส่งผ่านครั้งแรก ตารางจะถูกสร้างขึ้น ชื่อเชิงสัญลักษณ์คำสั่งі รหัสธุรกรรมและถ้าจำเป็น ตัวอักษรโต๊ะ.

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

ตารางชื่อเชิงสัญลักษณ์

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

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

●ข้อมูลเกี่ยวกับผู้ที่สามารถเพิกถอนการเข้าถึงสัญลักษณ์ขั้นตอนการโทร

มีการทำเครื่องหมายชื่อเชิงสัญลักษณ์ อาจถูกกำหนดให้กับผู้ปฏิบัติงานเพิ่มเติม (เช่น

ตารางคำสั่ง

ตารางนี้ประกอบด้วยคำสั่งและคำสั่งหลอกทั้งหมดที่ปรากฏในโปรแกรมที่ประกอบขึ้น

ตารางรหัสการทำงาน

สำหรับแต่ละรหัสการดำเนินการในตารางการถ่ายโอนจะมีกราฟ: การกำหนดให้กับรหัสการดำเนินการ, ตัวถูกดำเนินการ 1, ตัวถูกดำเนินการ 2, ค่า 16 หลักให้กับรหัสการดำเนินการ, ค่าคำสั่งและประเภทคำสั่ง (ตาราง 5.2.5) รหัสการทำงานแบ่งออกเป็นกลุ่มตามจำนวนและประเภทของตัวถูกดำเนินการ ประเภทคำสั่งระบุหมายเลขกลุ่มและระบุขั้นตอนที่ถูกเรียกเพื่อประมวลผลคำสั่งทั้งหมดในกลุ่มที่กำหนด

อีกตอนหนึ่ง.

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

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

โปรแกรมสุดสัปดาห์คุณสามารถแก้ไขได้ เช่น:

สัญลักษณ์โฮเวอร์ไม่ได้ถูกกำหนดหรือถูกกำหนดมากกว่าหนึ่งครั้ง

● รหัสการดำเนินการแทนชื่อที่ไม่ถูกต้อง (ผ่านข้อยกเว้น) ไม่ได้ให้จำนวนตัวถูกดำเนินการเพียงพอ หรือมีตัวถูกดำเนินการมากเกินไป

● ผู้ให้บริการรายวัน

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

Statti ทุ่มเทให้กับการประกอบภาษา

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

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

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

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

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

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

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

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

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

หนังพลัสซี่

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

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

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

ภาพยนตร์ลบ

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

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

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

ทีมมูฟวี่

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


คำสั่งของ Vikoristannya

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

แล้วความวิกลจริตล่ะ?


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

โทรหาหญิงสาว

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

มาโครโซบี

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

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