กลับไปหน้าบทความ

อ่าน 11 นาที

ภาษาแอสเซมบลี IBM Basic และรุ่นต่อๆ มา

ภาษาแอสเซมบลี IBM Basic และรุ่นต่อๆ มาเป็นชุดของภาษาแอสเซมบลีและ แอสเซมเบลอร์ที่สร้างขึ้นสำหรับ ระบบเมนเฟรม IBM System/360และระบบรุ่นต่อๆ มาผ่านทางIBM Z

ภาษาแอสเซมบลี IBM Basic และรุ่นต่อๆ มา

ภาษาแอสเซมบลีพื้นฐาน
กระบวนทัศน์ภาษาแอสเซมบลี
นักพัฒนาไอบีเอ็ม
ปรากฏครั้งแรกพ.ศ. 2507
โอเอสการสนับสนุนการเขียนโปรแกรมพื้นฐานของ IBM , ระบบปฏิบัติการพื้นฐาน/360
ใบอนุญาตฟรี
แอสเซมเบลอร์ D/E/F/G/H/XF
กระบวนทัศน์ภาษาแอสเซมบลีมาโคร
นักพัฒนาไอบีเอ็ม
ปรากฏครั้งแรกพ.ศ. 2509
โอเอสระบบปฏิบัติการ IBM OS/VS , DOS/VS , VM/370และระบบที่เกี่ยวข้อง
ใบอนุญาตหลากหลาย
ผู้ประกอบระดับสูง
กระบวนทัศน์ภาษาแอสเซมบลีมาโคร
นักพัฒนาไอบีเอ็ม
ปรากฏครั้งแรก1992
เวอร์ชันเสถียร
เวอร์ชัน 1 รุ่น 6
โอเอสIBM MVS/ESAและระบบรุ่นต่อๆ ไป, VM/ESAและระบบรุ่นต่อๆ ไป, VSE/ESAและระบบรุ่นต่อๆ ไป
ใบอนุญาตกรรมสิทธิ์
เว็บไซต์https://www.ibm.com/products/high-level-assembler-and-toolkit-feature
การนำไปใช้งานหลักๆ
ผู้ประกอบระดับสูง

ภาษาแอสเซมบลี IBM Basic และรุ่นต่อๆ มาเป็นชุดของภาษาแอสเซมบลีและ แอสเซมเบลอร์ที่สร้างขึ้นสำหรับ ระบบเมนเฟรม IBM System/360และระบบรุ่นต่อๆ มาผ่านทางIBM Z

ภาษา แรกในจำนวนนี้ คือ ภาษาแอสเซมบลีพื้นฐาน ( BAL ) ซึ่งเป็นภาษาแอสเซมบลี ที่มีข้อจำกัดอย่างมาก เปิดตัวในปี 1964 และใช้กับระบบ 360 รุ่นพื้นฐานที่มีหน่วยความจำหลักเพียง 8 KB และมีเครื่องอ่านการ์ดเครื่องเจาะการ์ดและเครื่องพิมพ์สำหรับรับ/ส่งข้อมูลโดยเป็นส่วนหนึ่งของIBM Basic Programming Support (BPS/360) นอกจากนี้ ภาษาแอสเซมเบลอร์พื้นฐานยังมีให้ใช้งานเป็นส่วนหนึ่งของBasic Operating System/360 (BOS/360) ด้วย

ต่อมา ภาษาแอสเซมบลีปรากฏขึ้นสำหรับ System/360 ซึ่งมีคุณสมบัติและการใช้งานที่ทรงพลังกว่า เช่น การสนับสนุนมาโครภาษาดังกล่าวและตระกูลแอสเซมเบลอร์ที่นำไปใช้ยังคงพัฒนาต่อไปสำหรับSystem/370และสถาปัตยกรรมที่ตามมา โดยสืบทอดและขยายไวยากรณ์ บางคนในอุตสาหกรรมคอมพิวเตอร์ยังคงเรียกสิ่งเหล่านี้ด้วยคำที่ล้าสมัยว่า "ภาษาแอสเซมบลีพื้นฐาน" หรือ "BAL" [ 1 ]อย่างไรก็ตาม หลายคนไม่ได้เรียกเช่นนั้น และ IBM เองก็มักจะเรียกพวกมันว่า "ภาษาแอสเซมเบลอร์ System/360" [ 2 ]หรือ "แอสเซมเบลอร์" สำหรับระบบปฏิบัติการหรือแพลตฟอร์มที่กำหนด[ 3 ]หรือชื่อที่คล้ายกัน แอสเซมเบลอร์เฉพาะเป็นที่รู้จักกันในชื่อต่างๆ เช่น [ a ] ​​Assembler E, Assembler F, Assembler H และอื่นๆ โปรแกรมเมอร์ที่ใช้ภาษานี้และตระกูลแอสเซมเบลอร์นี้ยังเรียกพวกมันว่า ALC (สำหรับ Assembly Language Coding) หรือเรียกง่ายๆ ว่า "แอสเซมเบลอร์"

ภาษาที่พัฒนาต่อยอดล่าสุดนี้รู้จักกันในชื่อIBM High-Level Assembler ( HLASM )

ลักษณะทั่วไป

BAL เป็นภาษาแอสเซมบลีใช้ชุดคำสั่ง ดั้งเดิม ของ สถาปัตยกรรม เมนเฟรมของ IBMที่มันทำงานอยู่ นั่น คือ System/360เช่นเดียวกับภาษาโปรแกรมรุ่นต่อจาก BAL ที่ใช้ชุดคำสั่งดั้งเดิมของสถาปัตยกรรมเมนเฟรมของ IBM ที่มันทำงานอยู่ ซึ่งรวมถึงSystem/360 , System/370 , System/370-XA , ESA/370 , ESA/390และz/ Architecture

ความเรียบง่ายของคำสั่งเครื่องส่วนใหญ่[ b ]หมายความว่ารหัสต้นฉบับของโปรแกรมที่เขียนด้วยภาษาแอสเซมเบลอร์มักจะยาวกว่าโปรแกรมที่เทียบเท่ากันในภาษาCOBOLหรือFortran มาก ในอดีต ความเร็วของโปรแกรมแอสเซมเบลอร์ที่เขียนด้วยมือมักถูกมองว่าชดเชยข้อเสียนี้ได้ แต่ด้วยการมาถึงของคอมไพเลอร์ที่ปรับแต่งประสิทธิภาพ ภาษาCสำหรับเมนเฟรม และความก้าวหน้าอื่นๆ แอสเซมเบลอร์จึงสูญเสียความน่าสนใจไปมาก อย่างไรก็ตาม IBM ยังคงอัปเกรดแอสเซมเบลอร์อย่างต่อเนื่อง และยังคงใช้เมื่อต้องการความเร็วหรือการควบคุมที่ละเอียดมาก แต่โปรแกรมรุ่นต่อจาก BAL ของ IBM ทั้งหมดได้รวมเอาฟังก์ชันมาโครที่ซับซ้อนไว้ด้วย ซึ่งช่วยให้สามารถเขียนรหัสต้นฉบับที่กระชับยิ่งขึ้นได้

อีกเหตุผลหนึ่งในการใช้ภาษาแอสเซมเบลอร์คือ ฟังก์ชันของระบบปฏิบัติการบางอย่างไม่สามารถเข้าถึงได้ด้วยภาษาโปรแกรมระดับสูง อินเทอร์เฟซโปรแกรมแอปพลิเคชันของระบบปฏิบัติการเมนเฟรมของ IBM ถูกกำหนดเป็นชุดคำสั่งมาโครภาษาแอสเซมบลี ซึ่งโดยทั่วไป[ c ]จะเรียกใช้คำสั่ง Supervisor Call ( SVC) บน เช่น z/OS หรือDiagnose [ d ]บน เช่น z/VM เป็นไปได้ที่จะใช้บริการระบบปฏิบัติการจากโปรแกรมที่เขียนด้วยภาษาโปรแกรมระดับสูงโดยใช้ซับรูทีนแอสเซมเบลอร์

รูปแบบคำสั่งแอสเซมเบลอร์

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

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

  • ป้ายกำกับหรือชื่อ ของคำสั่ง (ซึ่งเป็นตัวเลือก ) เป็นสตริงตัวอักษรและตัวเลขที่เริ่มต้นในคอลัมน์ที่ 1 ตัวอักษรตัวแรกต้องเป็นตัวอักษร เวอร์ชันต่อมาได้เพิ่ม @, #, $ และ _ เข้าไปในอักขระที่ใช้ได้ในป้ายกำกับ และเพิ่มขนาดจากเดิมหกตัวอักษรเป็นแปดตัวอักษร จากนั้นเป็นความยาวเกือบไม่จำกัด
  • รหัสการทำงานหรือ "ตัวย่อ" สามารถเริ่มต้นได้ในคอลัมน์ใดก็ได้ทางด้านขวาของคอลัมน์ที่ 1 โดยคั่นด้วยช่องว่างจากป้ายกำกับคำสั่ง รหัสการทำงานจะเป็นเพียงคำสั่งเครื่อง (เนื่องจากยังไม่มีมาโคร) ทำให้โดยทั่วไปจะมี 1, 2, 3 หรือบางครั้งอาจมี 4 ตัวอักษร ต่อมาได้มีการปรับปรุงรหัสการทำงานให้สามารถมีได้ถึงแปดตัวอักษร และในภายหลังก็สามารถมีความยาวได้ไม่จำกัด
  • ช่องตัวถูกดำเนินการสามารถเริ่มต้นได้ในคอลัมน์ใดก็ได้ทางด้านขวาของรหัสการดำเนินการ โดยคั่นด้วยช่องว่างอย่างน้อยหนึ่งช่อง ช่องว่างไม่ถูกต้องในตัวถูกดำเนินการ ยกเว้นในค่าคงที่ที่เป็นอักขระ ช่องตัวถูกดำเนินการซึ่งประกอบด้วยตัวถูกดำเนินการหนึ่งตัวหรือมากกว่านั้น เป็นตัวเลือกหรือไม่ก็ได้ ขึ้นอยู่กับรหัสการดำเนินการ
  • สามารถใส่คำอธิบายเพิ่มเติมได้ทางด้านขวาของช่องตัวดำเนินการ โดยคั่นด้วยช่องว่างอย่างน้อยหนึ่งช่อง
  • ภาษาแอสเซมบลี พื้นฐานไม่อนุญาตให้มีการต่อคำสั่ง เวอร์ชันต่อมาของแอสเซมเบลอร์จะแสดงการต่อคำสั่งโดยการปรากฏของอักขระใดๆ ที่ไม่ใช่ช่องว่างในคอลัมน์ที่ 72 ของคำสั่งที่กำลังต่อ แต่ภาษาแอสเซมบลีพื้นฐานกำหนดให้คอลัมน์ที่ 72 ต้องว่างเปล่า
  • เครื่องหมายดอกจัน (*) ในคอลัมน์ที่ 1 จะระบุ "ความคิดเห็นแบบเต็มบัตร"
  • ช่องหมายเลข 73–80 บนไพ่ ซึ่งเรียกว่าช่องลำดับการระบุตัวตนสามารถนำไปใช้โดยโปรแกรมเมอร์เพื่อวัตถุประสงค์ใดก็ได้ แต่โดยปกติแล้วจะประกอบด้วยหมายเลขลำดับสำหรับการจัดเรียงไพ่ที่สับสนใหม่

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

ประเภทของคำแนะนำ

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

คำแนะนำในการประกอบ

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

หนึ่งในคำสั่งแอสเซมเบลอร์ที่สำคัญคือ ` USINGaddress` ซึ่งรองรับการกำหนดแอดเดรสแบบฐาน-ค่าชดเชยของสถาปัตยกรรม S/360 คำสั่งนี้ช่วยนำทางแอสเซมเบลอร์ในการกำหนดว่าควรใช้รีจิสเตอร์ฐานและค่าชดเชยใดสำหรับแอดเดรสสัมพัทธ์ ใน BAL คำสั่งนี้ถูกจำกัดไว้ในรูปแบบ `address`

 โดยใช้ base,reg-1,...,reg-n 

ที่อยู่คำสั่งเครื่องบน S/360 ระบุค่าการเลื่อน (0–4095 ไบต์) จากค่าในรีจิสเตอร์ฐานในขณะที่เวอร์ชันต่อมาของสถาปัตยกรรมได้เพิ่มรูปแบบที่อยู่แบบสัมพัทธ์ แต่รูปแบบเก่าก็ยังคงถูกใช้โดยคำสั่งจำนวนมากUSINGอนุญาตให้โปรแกรมเมอร์บอกแอสเซมเบลอร์ว่ารีจิสเตอร์ฐานที่ระบุจะถือว่ามีที่อยู่ของ "base", base+4096 (หากระบุรีจิสเตอร์หลายตัว) เป็นต้น นี่เป็นเพียงทางลัดสำหรับโปรแกรมเมอร์เท่านั้น มิฉะนั้นโปรแกรมเมอร์จะต้องระบุรีจิสเตอร์ฐานในแต่ละคำสั่ง โปรแกรมเมอร์ยังคงต้องรับผิดชอบในการโหลดที่อยู่ของ "base" ลงในรีจิสเตอร์ก่อนที่จะเขียนโค้ดที่ขึ้นอยู่กับค่านี้

คำสั่งแอสเซมเบลอร์ ที่เกี่ยวข้องDROPจะลบล้างคำสั่งก่อนUSINGหน้า

คำสั่งเครื่อง (ตัวช่วยจำ)

มีความสัมพันธ์แบบหนึ่งต่อหนึ่งกับคำสั่งเครื่องชุดคำสั่งตัวย่อทั้งหมดอธิบายไว้ใน คู่มือ หลักการทำงาน[ 4 ]สำหรับแต่ละชุดคำสั่ง ตัวอย่าง: [ e ]

* นี่คือบรรทัดสำหรับแสดงความคิดเห็น L 3,ZIGGY โหลดค่าจำนวนเต็มแบบเต็มคำที่เก็บไว้ในตำแหน่งที่ระบุว่า 'ZIGGY' ลงในรีจิสเตอร์ทั่วไป 3: SLA 4,5 เลื่อนค่าในรีจิสเตอร์ทั่วไป 4 ไปทางซ้าย 5 บิต คำสั่ง MVC TARGET,SOURCE ใช้สำหรับย้ายตัวอักษรจากตำแหน่ง 'SOURCE' ไปยัง 'TARGET' AP COUNT,=P'1' เพิ่ม 1 ให้กับค่าในตำแหน่งหน่วยความจำ 'COUNT' (รูปแบบเลขฐานสิบแบบแพ็ค) B NEXT แยกสาขาแบบไม่มีเงื่อนไขไปยังป้ายกำกับ 'NEXT' HERE EQU * นี่คือป้ายกำกับ CLC TARGET,=C'ADDRESS' เปรียบเทียบตำแหน่งหน่วยความจำ 'TARGET' กับสตริง 'ADDRESS' สาขา BE THERE ถ้าเท่ากับป้ายกำกับโปรแกรม 'THERE' 

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

R3 EQU 3 ... แอล อาร์3, ซิกกี้ 

คำสั่งช่วย จำที่น่าสนใจบางส่วนได้แก่BALR[ g ]สำหรับการเรียกที่จัดเก็บที่อยู่ส่งคืนและรหัสเงื่อนไขไว้ในรีจิสเตอร์, SVC, [ h ]DIAG , [ i ]และZAP. [ 5 ]

คำสั่งเครื่อง System/360 มีความยาวหนึ่ง สอง หรือสามฮาล์ฟเวิร์ด (2 ถึง 6 ไบต์) เดิมทีมีรูปแบบคำสั่งสี่แบบ ซึ่งกำหนดโดยบิตสองบิตแรกของฟิลด์รหัสการทำงาน ต่อมาสถาปัตยกรรม z/Architectureได้เพิ่มรูปแบบเพิ่มเติมเข้ามา

มาโครและการประกอบแบบมีเงื่อนไข

แอสเซมเบลอร์ Basic Programming Support ไม่รองรับมาโคร แอ สเซมเบลอร์เวอร์ชันต่อมาที่เริ่มต้นด้วย Assembler D [ 6 ]อนุญาตให้โปรแกรมเมอร์จัดกลุ่มคำสั่งเข้าด้วยกันเป็นมาโครและเพิ่มลงในไลบรารี ซึ่งสามารถเรียกใช้ในโปรแกรมอื่นได้ โดยปกติจะมีพารามิเตอร์ เช่นเดียวกับสิ่งอำนวยความสะดวกของพรีโปรเซสเซอร์ในภาษา C และภาษาที่เกี่ยวข้อง มาโครสามารถรวมคำสั่งแอสเซมเบลอร์แบบมีเงื่อนไข เช่นAIF(โครงสร้าง 'if') ซึ่งใช้ในการสร้างโค้ดที่แตกต่างกันตามพารามิเตอร์ที่เลือก ทำให้สิ่งอำนวยความสะดวกด้านมาโครของแอสเซมเบลอร์นี้มีประสิทธิภาพมาก ในขณะที่มาโครหลายบรรทัดในภาษา C เป็นข้อยกเว้น คำจำกัดความของมาโครในแอสเซมเบลอร์สามารถมีได้หลายร้อยบรรทัดได้อย่างง่ายดาย

มาโครของระบบปฏิบัติการ

โปรแกรมส่วนใหญ่จะต้องใช้บริการจากระบบปฏิบัติการและระบบปฏิบัติการก็มีมาโครมาตรฐานสำหรับร้องขอใช้บริการเหล่านั้น มาโครเหล่านี้คล้ายคลึงกับคำสั่งระบบของ Unix ตัวอย่างเช่น ในMVS (ต่อมาคือ z/OS) คำสั่ง (พร้อมพารามิเตอร์) จะจัดสรรบล็อกหน่วยความจำแบบไดนามิก และดึงเรคอร์ดเชิงตรรกะถัดไปจากไฟล์ STORAGEOBTAINGET

มาโครเหล่านี้ขึ้นอยู่กับระบบปฏิบัติการ ซึ่งแตกต่างจากภาษาโปรแกรมระดับสูงหลายภาษา ภาษาแอสเซมบลีของเมนเฟรม IBM ไม่มีคำสั่งหรือไลบรารีที่ไม่ขึ้นกับระบบปฏิบัติการสำหรับการจัดสรรหน่วยความจำ การดำเนินการ I/O และอื่นๆ และระบบปฏิบัติการเมนเฟรม IBM ที่แตกต่างกันก็ไม่สามารถใช้งานร่วมกันได้ในระดับบริการระบบ ตัวอย่างเช่น การเขียนไฟล์แบบลำดับจะถูกเขียนโค้ดแตกต่างกันใน z/OS และใน z/VSE

ตัวอย่าง

ส่วนของโค้ดต่อไปนี้แสดงให้เห็นว่าตรรกะ "ถ้า SEX = 'M' ให้บวก 1 ให้กับ MALES; มิฉะนั้น ให้บวก 1 ให้กับ FEMALES" จะถูกประมวลผลในภาษาแอสเซมบลีอย่างไร

 CLI SEX,C'M' เพศชาย? BNE IS_FEM ถ้าไม่เป็นเช่นนั้น ให้แยกสาขาออกไป L 7,MALES โหลดค่าปัจจุบันของ MALES ลงในรีจิสเตอร์ 7 LA 7,1(7) เพิ่ม 1 ST 7,MALES เก็บผลลัพธ์กลับคืน B GO_ON เสร็จสิ้นส่วนนี้แล้ว IS_FEM EQU * ป้ายกำกับ L 7,FEMALES โหลดค่าปัจจุบันในช่อง FEMALES ลงในรีจิสเตอร์ 7 LA 7,1(7) เพิ่ม 1 ST 7,FEMALES เก็บผลลัพธ์กลับคืน GO_ON EQU * - ส่วนที่เหลือของโปรแกรม - * ตัวนับ MALES DC F'0' สำหรับเพศชาย (ค่าเริ่มต้น = 0) ตัวนับสำหรับเพศหญิง DC F'0' (เริ่มต้นที่ 0) 

ต่อไปนี้คือโปรแกรม "Hello, World!" ที่พบได้ทั่วไป และเมื่อทำงานภายใต้ระบบปฏิบัติการของ IBM เช่นOS/VS1หรือMVSจะแสดงคำว่า 'Hello, World!' บนคอนโซลของผู้ปฏิบัติงาน:

โปรแกรม HELLO CSECT มีชื่อว่า 'HELLO' * ลงทะเบียน 15 คะแนนที่นี่เมื่อเข้าสู่ระบบจาก OPSYS หรือผู้โทรเข้ามา STM 14,12,12(13) บันทึกรีจิสเตอร์ 14,15 และ 0 ถึง 12 ในพื้นที่บันทึกของผู้เรียก LR 12,15 ตั้งค่ารีจิสเตอร์ฐานด้วยที่อยู่จุดเริ่มต้นของโปรแกรม USING HELLO,12 บอกแอสเซมเบลอร์ว่าเราใช้รีจิสเตอร์ใดสำหรับฐานโปรแกรม LA 15, ประหยัดทันทีที่จุดประหยัดของเรา ST 15,8(13) ตั้งโซ่ไปข้างหน้า ST 13,4(15) ตั้งโซ่กลับ LR 13,15 ตั้งค่า R13 เป็นที่อยู่ของพื้นที่บันทึกใหม่ * -สิ้นสุดขั้นตอนการจัดการทั่วไป (คล้ายคลึงกันสำหรับโปรแกรมส่วนใหญ่) - WTO 'สวัสดีโลก!' เขียนถึงผู้ปฏิบัติงาน (มาโครระบบปฏิบัติการ) * L 13,4(13) กู้คืนที่อยู่ไปยังพื้นที่บันทึกที่ผู้โทรให้ไว้ XC 8(4,13),8(13) โซ่หน้าชัดเจน LM 14,12,12(13) คืนค่ารีจิสเตอร์ตามเมื่อเข้า DROP 12 สิ่งที่ตรงข้ามกับ 'การใช้' SR 15,15 ตั้งค่ารีจิสเตอร์ 15 เป็น 0 เพื่อให้รหัสส่งคืน (R15) เป็นศูนย์ BR 14 ส่งคืนไปยังผู้โทร * SAVE DS 18F กำหนด fullword 18 ตัวเพื่อบันทึกรีจิสเตอร์โปรแกรมที่เรียกใช้ จบแล้ว สวัสดี นี่คือตอนจบของรายการ 

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

// EXEC PGM=HELLO

หรืออีกทางเลือกหนึ่ง สามารถเรียกใช้เป็นซับรูทีนจากโปรแกรมดังกล่าวได้:

โทรหาเฮลโล 

ขยายไปถึง

L R15,=V(HELLO) บาลร์ อาร์14,อาร์15 

เวอร์ชัน

เอกสารพิมพ์งานชุดแสดงหน้าข้อมูลประจำตัวสำหรับ Assembler G

ยกเว้นแอสเซมเบลอร์สำหรับIBM System/360 Model 20แล้ว แอสเซมเบลอร์ของ IBM ส่วนใหญ่สามารถใช้งานร่วมกันได้กับเวอร์ชันก่อนหน้า ความแตกต่างหลักๆ อยู่ที่ความซับซ้อนของนิพจน์ที่อนุญาตและกระบวนการประมวลผลมาโคร แอสเซมเบลอร์ ของ OS/360เดิมทีถูกกำหนดตามความต้องการหน่วยความจำของมัน

การสนับสนุนการเขียนโปรแกรมพื้นฐานด้วยภาษาแอสเซมบลี

แอสเซมเบลอร์สำหรับBPSคือ "แอสเซมเบลอร์พื้นฐาน" ที่แท้จริง มันถูกตั้งใจให้โหลดจากการ์ดและจะทำงานบน System/360 ขนาด 8 KB (ยกเว้นรุ่น 20) มันไม่รองรับคำสั่งมาโครหรือตัวย่อเพิ่มเติม (เช่น BH แทน BC 2 เพื่อแยกสาขาหากรหัสเงื่อนไข 2 บ่งชี้การเปรียบเทียบสูง) มันสามารถประกอบส่วนควบคุมได้เพียงส่วนเดียวและไม่อนุญาตให้มีส่วนดัมมี่ (คำจำกัดความโครงสร้าง) ไม่อนุญาตให้ใช้นิพจน์ในวงเล็บ และนิพจน์จำกัดไว้ที่สามเทอมโดยมีตัวดำเนินการเพียง '+', '-' และ '*' เท่านั้น[ 7 ] : 59–61

ตัวประกอบระบบปฏิบัติการพื้นฐาน

ระบบปฏิบัติการพื้นฐานมีแอสเซมเบลอร์สองเวอร์ชัน ทั้งสองเวอร์ชันต้องการหน่วยความจำ 16 KB เวอร์ชันหนึ่งอยู่ในเทปและอีกเวอร์ชันอยู่ในดิสก์[ 8 ] : 7–8

แอสเซมเบลอร์ ดี

แอสเซมเบลอร์ D เป็นแอสเซมเบลอร์ของDOS/360สำหรับเครื่องที่มีหน่วยความจำขนาด 16 KB โดยมีสองเวอร์ชัน คือ เวอร์ชัน 10 KB สำหรับเครื่องที่มีหน่วยความจำอย่างน้อย 16 KB และเวอร์ชัน 14 KB สำหรับเครื่องที่มีหน่วยความจำ 24 KB นอกจากนี้ยังมีแอสเซมเบลอร์ระดับ F สำหรับเครื่อง DOS ที่มีหน่วยความจำ 64 KB ขึ้นไป แอสเซมเบลอร์ D มีคุณสมบัติเกือบทั้งหมดของเวอร์ชันที่สูงกว่า[ 9 ] : 7

แอสเซมเบลอร์ E และ F

แอสเซมเบลอร์ E ได้รับการออกแบบให้ทำงานบนระบบ OS/360 ที่มีหน่วยความจำหลักอย่างน้อย 32 KB โดยตัวแอสเซมเบลอร์เองต้องการ 15 KB [ 10 ] : 2 แอสเซมเบลอร์ F สามารถทำงานได้ภายใต้ DOS/360 หรือ OS/360 บนระบบที่มีหน่วยความจำ 64 KB โดยตัวแอสเซมเบลอร์ต้องการ 44 KB [ 11 ] [ 12 ] [ 13 ]แอสเซมเบลอร์เหล่านี้เป็นส่วนหนึ่งของ OS/360 มาตรฐาน เวอร์ชันที่สร้างขึ้นจะถูกกำหนดไว้ในการสร้างระบบ (SYSGEN)

แอสเซมเบลอร์ H

ภาษาแอสเซมบลี H ทำงานบนระบบปฏิบัติการ OS/360 และรุ่นต่อมามันเร็วกว่าและมีประสิทธิภาพมากกว่าภาษาแอสเซมบลี F แต่ภาษามาโครนั้นไม่สามารถใช้งานร่วมกันได้อย่างสมบูรณ์

Assembler H เวอร์ชัน 2 ได้รับการประกาศในปี 1981 และรวมถึงการสนับสนุนสถาปัตยกรรมขยาย (XA) รวมถึงคำสั่งและAMODE[ 14 ] : 3-28 มันถูกถอนออกจากตลาดในปี 1994 และการสนับสนุนสิ้นสุดลงในปี 1995 มันถูกแทนที่ด้วย High Level Assembler [ 15 ]RMODE

แอสเซมเบลอร์ XF

Assembler XF เป็นการอัปเกรด Assembler F ที่เข้ากันได้เป็นส่วนใหญ่ ซึ่งรวมถึงคำสั่งสถาปัตยกรรม System/370 ใหม่ เวอร์ชันนี้มีแอสเซมเบลอร์ทั่วไปสำหรับระบบ OS/VS, DOS/VS และ VM การเปลี่ยนแปลงอื่นๆ ได้แก่ การผ่อนปรนข้อจำกัดเกี่ยวกับนิพจน์และการประมวลผลมาโคร Assembler XF ต้องการขนาดพาร์ติชัน/ภูมิภาคขั้นต่ำ 64 KB (เสมือน) ขนาดที่แนะนำคือ 128 KB [ 16 ] : 73

ผู้ประกอบระดับสูง

ภาษาแอสเซมเบลอร์ระดับสูง ( HLASM ) เปิดตัวในเดือนมิถุนายน พ.ศ. 2535 โดยแทนที่แอสเซมเบลอร์ H เวอร์ชัน 2 ของ IBM [ 17 ] [ 18 ]มันเป็นตัวแปลเริ่มต้นสำหรับ System/370 และ System/390 และรองรับระบบปฏิบัติการ MVS, VSE และ VM ณ ปี 2566 เป็น ภาษาโปรแกรมแอ สเซมเบลอร์ปัจจุบันของIBMสำหรับระบบปฏิบัติการz/OS , z/VSE , z/VMและz/TPFบนคอมพิวเตอร์เมนเฟรมz/Architectureเวอร์ชัน 6 และเวอร์ชันต่อมายังทำงานบนLinuxและสร้าง ไฟล์ออบเจ็กต์ ELFหรือGOFF (สภาพแวดล้อมนี้บางครั้งเรียกว่าLinux บน IBM Z ) [ 19 ]ในขณะที่ทำงานที่ IBM จอห์น โรเบิร์ต เอห์ร์แมน ได้สร้างและเป็นหัวหน้านักพัฒนาของ HLASM [ j ]และได้รับการยกย่องว่าเป็น "บิดาแห่งแอสเซมเบลอร์ระดับสูง" [ 21 ]

แม้จะมีชื่อเช่นนั้น แต่ HLASM เองก็ไม่มีคุณสมบัติหลายอย่างที่ปกติเกี่ยวข้องกับแอสเซมเบลอร์ระดับสูงชื่อนี้อาจมาจากความสามารถของภาษามาโครเพิ่มเติม เช่น ความสามารถในการเขียนฟังก์ชันที่ผู้ใช้กำหนด แอสเซมเบลอร์นี้ส่วนใหญ่คล้ายกับ Assembler H และ Assembler(XF) โดยรวมเอา การแก้ไข SLAC (Stanford Linear Accelerator) เข้าไว้ด้วย คุณสมบัติที่เพิ่มเข้ามา ได้แก่ การระบุCSECT/ DSECTสำหรับตัวนับตำแหน่ง คำสั่งที่ขึ้นอยู่[ k ]และคำสั่งที่ มีป้ายกำกับ [ l ]USINGรายการUSINGคำสั่งที่ใช้งานอยู่ การระบุว่าตัวแปรถูกอ่านหรือเขียนในการอ้างอิงไขว้ และการอนุญาตให้ใช้ชื่อสัญลักษณ์แบบผสมตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก[ 18 ] คำRSECTสั่ง (ส่วนควบคุมแบบอ่านอย่างเดียว) อนุญาตให้แอสเซมเบลอร์ตรวจสอบการเรียกซ้ำในแต่ละส่วนRSECTก่อนหน้านี้ "ไม่มีเอกสารและใช้งานอย่างไม่สอดคล้องกันใน Assembler H" [ 22 ] : 41

ชุดเครื่องมือประกอบระดับสูง

ชุดเครื่องมือประกอบระดับสูงเป็นส่วนประกอบเสริมที่มีราคาแยกต่างหากสำหรับตัวประกอบระดับสูง ชุดเครื่องมือประกอบด้วย: [ 23 ]

รุ่นเฉพาะทาง

7090/7094 ตัวประกอบแพ็คเกจสนับสนุน

ชุดสนับสนุน IBM 7090/7094 หรือที่รู้จักกันในชื่อ SUPPAK นั้น "ประกอบด้วยโปรแกรมสามโปรแกรมที่ออกแบบมาเพื่อให้โปรแกรมที่เขียนขึ้นสำหรับ System 360 สามารถประกอบ ทดสอบ และเรียกใช้งานบนIBM 709 , 7090 , 7094หรือ 7094 II ได้"

แอสเซมเบลอร์แบบครอสนี้ทำงานบน ระบบ 7090 หรือ 7094และถูกใช้ในระหว่างการพัฒนา System/360 [ 7 ] [ 24 ]แอสเซมเบลอร์นี้รองรับ ชุดอักขระ BCD หกบิต เช่นเดียวกับEBCDIC แปด บิต

เครื่องประกอบชิ้นส่วน IBM System/360 รุ่น 20

IBM จัดหาแอสเซมเบลอร์สองตัวสำหรับ Model 20 ได้แก่ Model 20 Basic Assembler และ Model 20 DPS/TPS Assembler ทั้งสองตัวรองรับเฉพาะคำสั่งที่มีอยู่บน Model 20 เท่านั้น รวมถึงคำสั่งเฉพาะCIO, TIO, XIOB, SPSW, BAS, BASR, และHPR[ 25 ] : 110 Basic Assembler เป็นเวอร์ชันที่จำกัดกว่าเล็กน้อยของ System/360 Basic Assembler [ 26 ]โดยเฉพาะอย่างยิ่ง สัญลักษณ์ถูกจำกัดความยาวไว้ที่สี่ตัวอักษร เวอร์ชันนี้สามารถทำงานบนระบบที่มีหน่วยความจำ 4 KB และการสนับสนุนมาโครถูกจำกัดไว้เฉพาะ มาโคร IOCSเวอร์ชันการ์ดเป็นแอสเซมเบลอร์แบบสองรอบที่รองรับเฉพาะอินพุต/เอาต์พุตการ์ดเท่านั้น เวอร์ชันที่จัดเก็บในเทปเป็นแบบรอบเดียว โดยใช้เทปแม่เหล็กสำหรับจัดเก็บข้อมูลชั่วคราว โปรแกรมที่ประกอบขึ้นด้วย CPS Assembler สามารถเข้าถึงหน่วยความจำได้สูงสุด 16 KB [ 26 ] : 7–8

ตัวประกอบ DPS/TPS เป็นเวอร์ชันที่จำกัดกว่าของตัวประกอบ System/360 BPS/BOS [ 25 ] : 132–134

IBM System/360 รุ่น 44 PS แอสเซมเบลอร์

โปรแกรมแอสเซมเบลอร์ของระบบการเขียนโปรแกรม IBM System/360 Model 44ประมวลผลภาษาที่เป็น "ส่วนย่อยที่เลือกไว้" ของภาษาแอสเซมเบลอร์ OS/360 และ DOS/360

ที่สำคัญที่สุดคือแอสเซมเบลอร์รุ่น 44 ขาดการสนับสนุนสำหรับมาโครและคำสั่งต่อเนื่อง ในทางกลับกัน มันมีคุณสมบัติหลายอย่างที่ไม่พบในแอสเซมเบลอร์ System/360 อื่นๆ โดยเฉพาะอย่างยิ่งคำสั่งในการอัปเดต ชุดข้อมูลแหล่งที่มาของ ภาพการ์ดที่ชื่อว่า common และคำจำกัดความโดยปริยายของSETAตัวแปรแอสเซมเบลอร์[ 27 ]

ไม่รองรับคำสั่ง storage-to-storage (SS) หรือ คำสั่ง convert to binary ( CVB), convert to decimal ( CVD), read direct ( RDD) และwrite direct ( WRD) [ 28 ]แต่มีคำสั่งเฉพาะของ Model 44 อยู่ 4 คำสั่ง ได้แก่Change Priority Mask ( CHPM), Load PSW Special ( LPSX), Read Direct Word ( RDDW) และWrite Direct Word ( WRDW)

นอกจากนี้ยังรวมถึงคำสั่งในการอัปเดตโปรแกรมต้นฉบับ ซึ่งเป็นฟังก์ชันที่ดำเนินการโดยโปรแกรมยูทิลิตี้ในระบบอื่น ๆ ( SKPTO, REWND, NUM, OMITและENDUP) [ 28 ] : 53, 73

โปรแกรมแอสเซมเบลอร์ IBM System/360 TSS

ตัวประกอบแอสเซมเบลอร์สำหรับระบบแบ่งเวลา System/360 รุ่น 67มีคำสั่งที่แตกต่างกันหลายประการเพื่อรองรับคุณสมบัติ TSS ที่เป็นเอกลักษณ์PSECTคำสั่งนี้สร้างส่วนควบคุมต้นแบบที่มีค่าคงที่ที่อยู่แบบย้ายตำแหน่งได้และข้อมูลที่แก้ไขได้ซึ่งโปรแกรมใช้[ 29 ] : 143

แอสเซมเบลอร์ จี

"Assembler G" คือชุดการดัดแปลงที่ทำกับ Assembler F ในช่วงทศวรรษ 1970 โดยมหาวิทยาลัยวอเตอร์ลู (Assembler F เป็นโอเพนซอร์ส) การปรับปรุงส่วนใหญ่อยู่ที่การจัดการอินพุต/เอาต์พุตที่ดีขึ้นและการบัฟเฟอร์ที่ได้รับการปรับปรุง ซึ่งช่วยเร่งความเร็วในการประกอบอย่างมาก[ 30 ] "Assembler G" ไม่เคยเป็นผลิตภัณฑ์ของ IBM

เครื่องประกอบชิ้นส่วนที่ไม่ใช่ของ IBM

มีแอสเซมเบลอร์ที่เข้ากันได้กับ IBM หลายตัวสำหรับสภาพแวดล้อมพิเศษ[ 31 ]

  • เครื่อง คอมพิวเตอร์ซีรีส์ Univac 90/60, 90/70 และ 90/80จากUnisysได้รับการออกแบบมาให้รองรับภาษาแอสเซมเบลอร์ในรูปแบบ IBM เนื่องจากเครื่องซีรีส์นี้มีลักษณะการทำงานคล้ายคลึงกับ S/360 และ S/370
  • ซี รีส์ Fujitsu BS2000 ยังถูกสร้างขึ้นเป็นเครื่องที่คล้ายกับ 370 จากแหล่งข้อมูลเดียวกันกับ Univac และยังคงใช้งานอยู่ในบางส่วนของยุโรป[ 32 ]
  • Dignus LLC Systems/ASMเป็นแอสเซมเบลอร์ที่เข้ากันได้กับ HLASM ซึ่งสามารถทำงานได้โดยตรงบนระบบ IBM หรือเป็นแอสเซมเบลอร์แบบข้ามแพลตฟอร์ม[ 33 ]
  • โปรแกรมฟรีแวร์PC/370ซึ่งเขียนโดย Don Higgins ต่อมาถูกซื้อกิจการโดยMicro Focus
  • z390เป็นโปรแกรมแอสเซมเบลอร์และโปรแกรมจำลองระบบ System 390 ที่เขียนโดย Don Higgins และเขียนด้วยภาษา Javaเป็นซอฟต์แวร์โอเพนซอร์สและสามารถดาวน์โหลดได้จากhttp://www.z390.org/
  • มหาวิทยาลัยเพนน์สเตทได้พัฒนาชุดโปรแกรมชื่อASSISTซึ่งประกอบด้วยโปรแกรมแอสเซมเบลอร์และโปรแกรมแปลภาษาสำหรับระบบ System 370
  • Tachyon Software LLC ทำการตลาดTachyon Assembler Workbenchซึ่งทำงานบน Windows, Linux/x86, Linux สำหรับ S/390 และ zSeries, AIX และ Solaris [ 34 ]
  • GNU Assembler (gas) เป็นส่วนหนึ่งของGNU Compiler Collection (gcc) สำหรับLinux บน OS/390 และ IBM Z Assembler นี้มีไวยากรณ์เฉพาะที่ไม่สามารถใช้งานร่วมกับ Assembler อื่นๆ สำหรับสถาปัตยกรรมของ IBM ได้

ความสำคัญ

เดิมทีระบบปฏิบัติการ System/360 ทั้งหมดเขียนด้วยภาษาแอสเซมบลี และอินเทอร์เฟซระบบทั้งหมดถูกกำหนดโดยคำจำกัดความมาโคร การเข้าถึงจากภาษาโปรแกรมระดับสูง (HLL) ถูกจำกัดเฉพาะสิ่งที่ภาษานั้นๆ จัดหาให้ และการเรียกใช้ระบบอื่นๆ ต้องเขียนเป็นซับรูทีนแอสเซมบลีที่เรียกใช้จากโปรแกรม HLL นอกจากนี้ IBM ยังอนุญาตให้ปรับแต่งคุณสมบัติของระบบปฏิบัติการได้โดยการติดตั้งผ่านสิ่งที่เรียกว่าExitซึ่งเป็นรูทีนที่ผู้ใช้จัดหาให้เพื่อขยายหรือเปลี่ยนแปลงฟังก์ชันปกติของระบบปฏิบัติการ Exit เหล่านี้จำเป็นต้องเขียนด้วยภาษาแอสเซมบลี ต่อมา IBM ได้เขียนโค้ด OS/360 ใหม่ด้วยภาษาการเขียนโปรแกรมระบบPL/Sแต่ยกเว้นช่วงทดลองใช้สั้นๆ ก็ตัดสินใจที่จะไม่ปล่อยคอมไพเลอร์ PL/S ให้ผู้ใช้ใช้งาน ด้วยเหตุผลเหล่านี้ ภาษาแอสเซมบลีจึงถูกใช้งานอย่างแพร่หลายในระบบของ IBM เป็นเวลาหลายปี

ดูเพิ่มเติม

หมายเหตุ

  1. ^ IBM ระบุขนาดเป้าหมายของซอฟต์แวร์ด้วยตัวอักษร
    • ดี 16 กิโลไบต์
    • อี 32 กิโลไบต์
    • เอฟ 64 กิโลไบต์
    • จี 128 กิโลไบต์
    • H 256 KiB
    • ฉัน 512 กิโลไบต์
  2. ^คำสั่งบางอย่าง เช่น Neural Network Processing Assist (NNPA) ค่อนข้างซับซ้อน
  3. ^บริการบางอย่างจะถูกเรียกใช้ด้วยการเรียกโดยตรงและปล่อยจาก MVS/SP V1R3 เมื่อใช้ Program Call เพิ่มเติม (PC) โดยยังคงอินเทอร์เฟซ SVC เดิมไว้
  4. ^คำสั่งวินิจฉัยไม่มีรหัสปฏิบัติการแอสเซมเบลอร์ แม้ว่าเอกสารมักจะใช้DIAGหรือ Hypervisor Call (HVC); เดิมที DIAG บนเครื่องเปล่าเป็นแบบเฉพาะรุ่นและไม่เข้ากันกับการใช้งาน VM
  5. ^คำจำกัดความของฟิลด์อักขระ 'TARGET' และ 'SOURCE' ระบุความยาวของฟิลด์เหล่านั้น
  6. ^สำหรับ HLASM ในปัจจุบันการอ้างอิงโยงทะเบียนอเนกประสงค์ (ตัวเลือก RXREF ) เป็นอีกทางเลือกหนึ่ง
  7. ^การใช้งาน BALR ส่วนใหญ่ ถูกแทนที่ด้วยBASRคำสั่งอื่นที่คล้ายคลึงกันแล้ว
  8. ^การใช้งานหลายอย่างของคำว่า "of"SVCได้ถูกแทนที่ด้วยPCคำสั่งแล้ว
  9. ^ VM นำไปใช้ใหม่DIAGเป็นHVCคำสั่ง
  10. ^ HLASM ปฏิบัติตามข้อกำหนด SHARE เพื่อรวมการปรับปรุงของ Greg Mushial [ 20 ]ใน Assembler H เข้ากับผลิตภัณฑ์ที่รองรับ
  11. ^ตัวแปรตามUSINGคือตัวแปรที่ระบุถึงนิพจน์ที่สามารถย้ายตำแหน่งได้ แทนที่จะเป็นรายการของรีจิสเตอร์:
     โดยใช้ IHADCB,SYSPRINT ... TM DCBOPTCD,DCBOPTC ทดสอบ OPTCD ใน SYSPRINT ... 
  12. ^ตัวแปรที่มีป้ายกำกับUSINGคือตัวแปรที่จะมีผลเฉพาะกับคำสั่งที่อ้างถึงตัวแปรนั้นอย่างชัดเจน โดยการระบุป้ายกำกับให้กับนิพจน์:
     LA R4,SYSIN LA R5,SYSPRINT ในการใช้งาน IHADCB,R4 ใช้งาน IHADCB,R5 ... TM IN.DCBOFLGS,DCBOFTM ทดสอบ OFLGS ใน SYSIN ... TM OUT.DCBOPTCD,DCBOPTC ทดสอบ OPTCD ใน SYSPRINT ... 
  • เอกสารในรูปแบบ PDF
  • ข้อมูลทั่วไปเกี่ยวกับภาษาแอสเซมบลีระดับสูงสำหรับ z/OS, z/VM และ z/VSE เวอร์ชัน 1.6
  • คู่มือการเขียนโปรแกรมเบื้องต้นเกี่ยวกับภาษาแอสเซมเบลอร์ของ IBM System/360 (ตำราเรียน)
  • คู่มืออ้างอิงภาษาแอสเซมเบลอร์ระดับสูงสำหรับ z/OS, z/VM และ z/VSE
  • โปรแกรมเมอร์ผู้พิถีพิถัน: แอสเซมเบลอร์เมนเฟรมของ IBM
  • การเขียนโปรแกรมภาษาแอสเซมบลีขั้นพื้นฐานสำหรับเมนเฟรม IBM
  • บทนำการเขียนโปรแกรมภาษาแอสเซมบลี OS/390 (เก็บถาวร)
  • คอมไพเลอร์ IBM Assembler F ที่ใช้งานผ่านเว็บ สำหรับการทดลองขนาดเล็ก
  • ASSIST – ระบบประกอบชิ้นส่วนสำหรับการเรียนการสอนและการสอนระบบสำหรับนักเรียน
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=IBM_Basic_assembly_language_and_successors&oldid=1360787629 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ภาษาแอสเซมบลี IBM Basic และรุ่นต่อๆ มา

ภาษาแอสเซมบลี IBM Basic และรุ่นต่อๆ มาเป็นชุดของภาษาแอสเซมบลีและ แอสเซมเบลอร์ที่สร้างขึ้นสำหรับ ระบบเมนเฟรม IBM System/360และระบบรุ่นต่อๆ มาผ่านทางIBM Z

ลักษณะทั่วไป

BAL เป็น ภาษาแอสเซมบลี ใช้ ชุดคำสั่ง ดั้งเดิม ของ สถาปัตยกรรม เมนเฟรมของ IBM ที่มันทำงานอยู่ นั่น คือ System/360 เช่นเดียวกับภาษาโปรแกรมรุ่นต่อจาก BAL ที่ใช้ชุดคำสั่งดั้งเดิมของสถาปัตยกรรมเมนเฟรมของ IBM ที่มันทำงานอยู่ ซึ่งรวมถึง System/360 , System/370 ,...

รูปแบบคำสั่งแอสเซมเบลอร์

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

ประเภทของคำแนะนำ

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