IBM大型机汇编语言
### IBM大型机汇编语言知识点总结 #### 一、预备与基础知识 ##### 1.1 PSW & Real Address and Virtual Address **1.1.1 PSW(Program Status Word)** PSW,即程序状态字,是IBM大型机中一个非常重要的概念。它是一个64位的数据结构,用于保存处理器的状态信息,包括当前执行指令的位置、系统模式、中断屏蔽状态等关键信息。在IBM大型机环境中,PSW对于跟踪和控制程序执行至关重要。 **1.1.2 Virtual Address:** 虚拟地址是指在程序运行时使用的地址空间中的地址。IBM大型机支持虚拟内存技术,这意味着应用程序可以在一个比实际物理内存大得多的虚拟地址空间中进行操作。通过使用虚拟地址,可以实现内存保护、分页管理等功能,从而提高系统的安全性和效率。 ##### 1.2 EBCDIC 码 EBCDIC(Extended Binary Coded Decimal Interchange Code),即扩展二进制编码十进制交换码,是一种由IBM开发的字符编码标准。与ASCII码不同,EBCDIC主要用于IBM大型机系统中。它使用8位来表示一个字符,可以支持更广泛的字符集,包括多种国际语言字符。 ##### 1.3 数的表示、转换与计算 **1.3.1 字符数据** 字符数据通常使用ASCII或EBCDIC编码表示。在IBM大型机汇编语言中,可以使用`.BYTE`或`.CHAR`指令来定义字符数组或字符串。 **1.3.2 二进制数** 二进制数在计算机中是最基本的数值表示方式。IBM大型机汇编语言中可以通过`.BYTE`指令来定义二进制数,例如`.BYTE 2'B11010110`表示定义一个字节的二进制值为`11010110`。 **1.3.3 逻辑数** 逻辑数通常指的是布尔值或位字段。IBM大型机汇编语言提供了多种指令来操作这些值,如`AND`、`OR`、`XOR`等逻辑操作指令。 **1.3.4 十进制数** 十进制数在IBM大型机汇编语言中有两种主要形式:固定点数和压缩十进制数(Packed Decimal)。固定点数通常使用`.F`指令定义,而压缩十进制数则使用`.PF`指令定义。 ##### 1.4 主机环境下汇编语言源程序→可执行模块流程 在IBM大型机环境中,从汇编语言源程序到可执行模块的过程涉及多个步骤: 1. **编写源代码**:使用汇编语言编写程序。 2. **汇编**:通过汇编器将源代码转换成目标代码。 3. **链接**:链接器将多个目标文件组合成一个可执行模块。 4. **加载**:加载程序到内存并准备好运行。 ##### 1.5 什么是主程序?什么是子程序? **主程序**是指包含程序入口点的程序,通常是程序的开始部分,负责初始化资源和调用其他函数或子程序。 **子程序**则是为了特定任务而设计的独立功能单元,可以被多次调用。子程序有助于提高代码的复用性和可维护性。 ##### 1.6 汇编程序书写格式与样本 **1.6.1 汇编控制语句:START、END** - `START`:指定汇编过程的开始。 - `END`:指定汇编过程的结束。 **1.6.2 汇编控制语句:USING指令** `USING`指令用于设置一个寄存器作为基址寄存器,这对于访问内存中的数据非常重要。 ##### 1.7 关于地址: 基地址、变址与相对地址 - **基地址**:指定了一个固定的内存地址,用于计算实际地址。 - **变址**:指通过变址寄存器与偏移量相加得到实际地址。 - **相对地址**:相对于当前指令地址的一个偏移量。 ##### 1.8 寄存器的约定 IBM大型机汇编语言中,寄存器有特定的用途和约定: - **通用寄存器**(如R1-R15)用于存储数据和地址。 - **专用寄存器**(如PSW寄存器)用于特定的功能。 ##### 1.9 常数的定义 **1.9.1 数据区域的定义** 使用`.DS`指令来定义数据区域,例如`.DS 1F`表示定义了一个单字节的浮点数存储区域。 **1.9.2 常数的定义** 常数可以通过`.DC`指令定义,例如`.DC F'123.45'`定义了一个浮点数常量。 ##### 1.10 指令格式与类型: 指令格式与类型例子 IBM大型机汇编语言中的指令格式通常包括操作码和操作数。操作码指示要执行的操作,而操作数则指出该操作的具体对象。例如,`L R1,=F'123.45'`表示将浮点数`123.45`加载到寄存器R1中。 #### 二、Sequential Input & Output **2.1 分析一个带有输出文件的汇编语言程序** 处理输入输出时,IBM大型机汇编语言提供了多种指令和宏指令来简化文件操作过程。例如,`OPEN`宏指令用于打开文件,`GET`指令用于读取文件内容,`PUT`指令用于向文件写入数据。 **2.2 有关输入/出的宏指令** - **OPEN**:用于打开文件。 - **CLOSE**:用于关闭文件。 - **GET(读)& PUT(写)**:分别用于从文件读取数据和向文件写入数据。 **2.3 关于ORG, EQU, PRINT等指令的介绍** - **ORG语句(置地址计数器)**:用于指定下一条指令的地址。 - **EQU “等价”指令**:用于定义符号常量。 - **PRINT 操作数**:用于打印操作数的值。 **2.4 什么是保护区?以及关于STM, LM 指令的介绍** **保护区**是指一段受保护的内存区域,通常用于存储临时数据或敏感数据。`STM`(Store Multiple)指令用于保存一组寄存器的内容到内存中,`LM`(Load Multiple)指令用于从内存中恢复一组寄存器的内容。 #### 三、编程 Move,Comparing & Branching **3.1 MOVE:MVC,MVI ,MVZ,MVN** - **MVC D1(L1,B1),D2(B2)**:将从地址D2(B2)开始的L1个字节的数据移动到从地址D1(B1)开始的位置。 - **MVI D1(B1),I2**:将立即数I2直接写入到地址D1(B1)所指向的字节。 - **MVZ、MVN D1(B1),D2(B2)**:分别用于移动零长度数据和非对齐数据。 **3.2 逻辑比较指令** - **CLC D1(L,B1),D2(B2)**:比较D1(L,B1)与D2(B2)中的数据。 - **CLI**:直接数逻辑比较指令,用于比较一个寄存器中的内容与一个立即数。 - **十进制比较CP D1(L1,B1),D2(L2,B2)**:比较两个压缩十进制数。 **3.3 MVCL R1,R2 长传送** `MVCL`指令用于将一个寄存器中的数据复制到另一个寄存器中,用于处理长数据。 **3.4 CLCL R1,R2 两域比较** `CLCL`指令用于比较两个寄存器中的数据。 **3.4 Branching逻辑比较转移,算术运算转移及条件转移** - **算术运算转移**:根据算术运算的结果进行转移。 - **逻辑比较转移**:根据逻辑比较指令的结果进行转移。 - **条件转移:BC、BCR**:基于条件寄存器的位进行转移。 #### 四、编程:Packed Decimal **4.1 压缩十进制运算** - **十进制加法指令AP**:对压缩十进制数执行加法操作。 - **十进制减法指令SP**:对压缩十进制数执行减法操作。 - **清零及加十进制指令ZAP**:将压缩十进制数清零并加上一个指定的值。 - **比较十进制指令CP**:比较两个压缩十进制数。 - **十进制乘法指令MP**:对压缩十进制数执行乘法操作。 - **十进制除法指令DP**:对压缩十进制数执行除法操作。 **4.2 PACK & UNPK** - **PACK A,B**:将无符号整数转换为压缩十进制格式。 - **拆卸:UNPK**:将压缩十进制数转换为无符号整数。 **4.3 SRP( 压缩十进数的舍入移位)(Shift & Round Packed)** `SRP`指令用于压缩十进制数的舍入移位操作。 #### 五、编程 Table Handling & Editing **5.1 LA** `LA`指令用于计算一个表达式的值并将其存储到指定的寄存器中。 **5.2 BCT / BCTR 计数转** `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**:用于比较变址器中的数据。 - **插入与存入字符IC、STC**:用于在指定位置插入或存储字符。 - **屏蔽插入与存入字符ICM,STCM**:用于在指定位置插入或存储字符,并允许指定掩码。 #### 七、编程 Shifting, Boolean & Bit Operations **7.1 SHIFT 移位指令** - **SLL**:逻辑左移单寄存器指令。 - **SRL**:逻辑右移单寄存器指令。 - **SLDL**:逻辑左移双寄存器指令。 - **SRDL**:逻辑右移双寄存器指令。 - **SLA**:算术左移单寄存器指令。 - **SRA**:算术右移寄存器指令。 - **SLDA**:算术左移双寄存器指令。 **7.2 有关Boolean 指令** - `AND`:按位与操作。 - `OR`:按位或操作。 - `XOR`:按位异或操作。 - `NOT`:按位取反操作。 **7.3 有关Bit Operations指令** - `SET`:设置指定位置的位。 - `TEST`:测试指定位置的位是否为1。 - `CLEAR`:清除指定位置的位。 #### 八、编程 Subroutines & Macros **8.1 内部子程序** - **BAL(内部)子程序**:调用位于同一段内的子程序。 - **BALR(外部)子程序**:调用位于另一段内的子程序。 **8.2 子程序参数传递** - **调用序列的约定方法**:规定了如何通过寄存器传递参数。 - **参数地址区的约定方法**:规定了如何通过内存地址传递参数。 **8.3 宏指令介绍** - **宏指令与子程序的区别**:宏指令在编译时展开,而子程序在运行时调用。 - **宏指令的形式**:宏指令通常包含一系列预定义的操作。 - **符号参数**:宏指令可以接受符号参数,以便在不同的调用中使用不同的值。 - **宏定义及宏调用**:宏定义指定了宏的结构和行为,宏调用则是使用宏定义来执行特定的任务。 - **关于宏的两个例子**:通过具体的示例来展示如何定义和使用宏指令。 以上就是IBM大型机汇编语言的主要知识点总结,涵盖了从基础知识到高级主题的各个方面,旨在帮助学习者全面了解这一领域的核心概念和技术细节。
剩余106页未读,继续阅读
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 洞见研报江阴振宏重型锻造(锻件及粉末冶金制品制造商,振宏重工(江苏)股份有限公司)创投信息
- 大学生在线租房平台--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 垃圾分类网站-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生就业服务平台--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于java的美食信息推荐系统的设计与实现pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 洞见研报科沃斯(家庭服务机器人研发与生产商,科沃斯机器人股份有限公司)创投信息
- 大学生创新创业项目管理系统--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生平时成绩量化管理系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 工资信息管理系统--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 当代中国获奖的知名作家信息管理系统的设计与实现pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 房屋租赁管理系统boot--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 果蔬作物疾病防治系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 爱心商城系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 商务安全邮箱邮件收发-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 洞见研报卢米蓝(新型OLED材料研发生产商,宁波卢米蓝新材料有限公司)创投信息
- 基于python后端开发框架
- 1
- 2
前往页