IBM大型机汇编语言
### IBM大型机汇编语言知识点概述 #### 一、预备与基础知识 ##### 1.1 PSW & Real Address and Virtual Address **PSW (Program Status Word)**:在IBM大型机中,PSW 是一个非常重要的概念,它包含了当前运行程序的状态信息,包括地址空间的选择、指令地址、状态标志等。在进行程序状态的切换时,PSW 的内容会被保存和恢复,这对于理解和实现程序中断、异常处理等机制至关重要。 **Real Address and Virtual Address**:在IBM大型机系统中,为了提高内存管理的灵活性和安全性,引入了虚拟地址的概念。真实地址是指物理内存中的地址,而虚拟地址则是程序中使用的地址。通过虚拟地址到真实地址的映射,可以实现内存分页、分段等高级管理技术。 ##### 1.2 EBCDIC码 **EBCDIC (Extended Binary Coded Decimal Interchange Code)**:这是一种用于IBM计算机系统的字符编码标准,主要用于表示字母数字和其他特殊字符。EBCDIC 在早期的IBM系统中被广泛使用,尤其是在商业应用中。 ##### 1.3 数的表示、转换与计算 - **字符数据**:在IBM大型机汇编语言中,字符数据通常使用EBCDIC编码来表示。 - **二进制数**:二进制数在IBM大型机中以补码形式表示,这有助于简化算术运算。 - **逻辑数**:逻辑数指的是在逻辑运算中使用的数值,通常是二进制形式,用于进行AND、OR、NOT等操作。 - **十进制数**:十进制数在IBM大型机中可以采用多种表示方式,如定点小数、浮点数、压缩十进制数等。 ##### 1.4 主机环境下汇编语言源程序→可执行模块流程 在IBM大型机环境中,从编写汇编语言源程序到生成可执行模块的过程通常包括以下几个步骤: - 编写源代码; - 使用汇编器将源代码编译成目标代码; - 进行链接编辑,将多个目标文件链接成一个可执行模块; - 最后通过加载器将可执行模块加载到内存中执行。 ##### 1.5 什么是主程序?什么是子程序? - **主程序**:是程序的主要执行部分,通常包含程序的主要逻辑和控制流程。 - **子程序**:也称为函数或过程,是一段可以被主程序或其他子程序调用的代码,用于实现特定的功能。子程序的使用可以提高代码的复用性和可维护性。 ##### 1.6 汇编程序书写格式与样本 - **汇编控制语句**:例如 START 和 END 用于标记程序的开始和结束。 - **USING 指令**:用于指定寄存器作为基地址寄存器,这对于访问内存中的数据非常重要。 ##### 1.7 关于地址: 基地址、变址与相对地址 - **基地址**:在程序中,通常会使用一个寄存器作为基地址寄存器,所有的内存访问都会相对于这个基地址进行。 - **变址**:变址寻址是一种常用的寻址方式,它允许使用某个寄存器的内容加上一个偏移量来形成最终的内存地址。 - **相对地址**:相对地址是相对于当前指令位置的一个偏移量,常用于分支指令中。 ##### 1.8 寄存器的约定 IBM大型机汇编语言中,不同的寄存器有着不同的用途和约定: - 通用寄存器 (GRs):用于存储数据和地址。 - 控制寄存器 (CRs):用于存储条件码。 - 状态寄存器 (ARs):用于存储地址空间信息。 - 浮点寄存器 (FPRs):用于存储浮点数。 ##### 1.9 常数的定义 - **数据区域的定义**:在汇编语言中,可以通过定义数据区域来分配内存空间,并初始化为特定值。 - **常数的定义**:常数是在程序中不会改变的值,可以使用 EQU 指令来定义。 ##### 1.10 指令格式与类型 IBM大型机汇编语言中的指令格式通常包括操作码、操作数等元素,根据不同的功能分为不同类型: - 数据传输指令 (如 MVC):用于在内存和寄存器之间移动数据。 - 算术运算指令 (如 A、S):用于执行加减等基本算术运算。 - 比较指令 (如 CLC):用于比较两个值,并根据结果设置条件码。 #### 二、Sequential Input & Output ##### 2.1 分析一个带有输出文件的汇编语言程序 在IBM大型机汇编语言中,处理顺序输入输出(I/O)的操作涉及到使用专门的宏指令和系统调用来实现文件的打开、关闭、读取和写入等操作。 ##### 2.2 有关输入/出的宏指令 - **OPEN**:用于打开文件。 - **CLOSE**:用于关闭文件。 - **GET (读) & PUT (写)**:分别用于从文件中读取数据和向文件中写入数据。 ##### 2.3 关于 ORG、EQU、PRINT 等指令的介绍 - **ORG 语句**:用于设置地址计数器的值,以便后续指令在指定地址开始存放。 - **EQU “等价”指令**:用于定义符号与数值之间的等价关系。 - **PRINT 操作数**:用于在屏幕上打印输出。 ##### 2.4 什么是保护区?以及关于 STM, LM 指令的介绍 - **保护区**:在IBM大型机中,为了保护程序中的关键数据不被意外修改,可以使用 STM 和 LM 指令来创建和恢复保护区。 #### 三、编程 Move,Comparing & Branching ##### 3.1 MOVE:MVC,MVI,MVZ,MVN - **MVC (Move Character)**:用于在内存中移动字符数据。 - **MVI (Move Immediate)**:用于将立即数移动到内存单元中。 - **MVZ (Move Zero)**:用于将零值移动到内存单元中。 - **MVN (Move Negative)**:用于将负数移动到内存单元中。 ##### 3.2 逻辑比较指令 - **CLC (Compare Character)**:用于比较两个字符数据。 - **CLI (Compare Immediate)**:用于将立即数与内存单元中的值进行比较。 - **CPD (Compare Packed Decimal)**:用于比较两个压缩十进制数。 ##### 3.3 MVCL R1, R2 长传送 用于在两个寄存器之间移动长数据。 ##### 3.4 CLCL R1, R2 两域比较 用于比较两个寄存器中的数据。 ##### 3.4 Branching 逻辑比较转移,算术运算转移及条件转移 - **算术运算转移**:根据算术运算的结果决定程序流向。 - **逻辑比较转移**:根据逻辑比较的结果决定程序流向。 - **条件转移**:使用 BC、BCR 指令实现基于条件码的转移。 #### 四、编程:Packed Decimal ##### 4.1 压缩十进制运算 - **十进制加法指令 AP**:用于执行压缩十进制数的加法运算。 - **十进制减法指令 SP**:用于执行压缩十进制数的减法运算。 - **清零及加十进制指令 ZAP**:用于清空压缩十进制数,并加上一个十进制数。 - **比较十进制指令 CP**:用于比较两个压缩十进制数。 - **十进制乘法指令 MP**:用于执行压缩十进制数的乘法运算。 - **十进制除法指令 DP**:用于执行压缩十进制数的除法运算。 ##### 4.2 PACK & UNPK - **PACKA, B**:用于将两个半字节的十进制数打包成一个字节的压缩十进制数。 - **拆卸:UNPK**:用于将压缩十进制数拆分成两个半字节的十进制数。 ##### 4.3 SRP (压缩十进数的舍入移位) 用于对压缩十进制数进行舍入和移位操作。 #### 五、编程 Table Handling & Editing ##### 5.1 LA 用于计算表索引或偏移量。 ##### 5.2 BCT / BCTR 计数转 用于更新指针指向下一个元素的位置。 ##### 5.3 ED / EDMK 编辑 - **编辑指令:ED**:用于对数据进行编辑操作。 - **编辑并说明:EDMK**:用于编辑数据并提供额外的信息。 #### 六、编程 Binary Arithmetic & Tables ##### 6.1 有关 Binary Arithmetic 指令 - **L 指令**:用于将内存中的数据加载到寄存器中。 - **寄存器装载 LR**:用于将寄存器中的数据加载到另一个寄存器中。 - **多寄存器恢复指令 LM**:用于恢复多个寄存器中的数据。 - **多寄存器保存指令 STM**:用于保存多个寄存器中的数据。 - **存储指令 ST**:用于将寄存器中的数据存储到内存中。 ##### 6.2 二进制数(算术)运算 - **CVB & CVD 指令**:用于在二进制数和压缩十进制数之间进行转换。 - **A、AH、AR 二进数“加”指令**:用于执行二进制数的加法运算。 - **S、SH、SR 二进数“减”指令**:用于执行二进制数的减法运算。 - **M、MH、MR 二进数“乘”指令**:用于执行二进制数的乘法运算。 - **D、DR 二进数“除”指令**:用于执行二进制数的除法运算。 ##### 6.3 比较指令 - **C, CB, CR**:用于比较两个值,并根据结果设置条件码。 - **变址器比较指令 BXLE, BXH**:用于比较变址器中的值。 #### 七、编程 Shifting, Boolean & Bit Operations ##### 7.1 SHIFT 移位指令 用于对二进制数进行左移或右移操作,这在处理位操作时非常有用。 总结起来,IBM大型机汇编语言提供了丰富的指令集和工具,支持各种复杂的数据处理任务,包括数据传输、算术运算、比较和分支控制等。通过熟练掌握这些基础知识和指令,开发人员可以在IBM大型机平台上高效地开发和优化应用程序。
剩余106页未读,继续阅读
- novelty20072014-05-16非常实用的资料,难找啊
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助