OS390汇编入门第十章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Page 19 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小测验
执行完下面的代码段后,R7最终的十进制值是多少? LH R7 ,=H’10’ BCTR R7 ,0 AR R7 ,R7 BCTR R7 ,0 ______________
复习
© Copyright HUST 2008. All rights reserved.
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
计数循环指令 (续 )
BCTR指令 BCTR指令的功能和BCT指令类 似,区别是第二个操作数是寄存 器,该寄存器的内容存放的是要 跳转的地址。 例如:BCTR R3,R1 该指令将R3减1,如果结果不等 于0,则跳转到R1所指的地址处 去执行。
导言
© Copyright HUST 2008. All rights reserved.
Page 5 of 50
OS/390汇编语言提高
单元
循环
� � �
迭代循环 地址运算 数组处理
© Copyright HUST 2008. All rights reserved.
Page 6 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小测验
编写LH指令来初始化BCT使用的寄存器,下面的代码用来对一个星期中每天的数据 进行求和。请填写完代码。
___________________________ PROCDAY EQU * * 处理每天的数据 . ……. BCT R4,PROCDAY
复习
© Copyright HUST 2008. All rights reserved.
概念
© Copyright HUST 2008. All rights reserved.
Page 11 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
迭代循环结构的使用 (续) 如何创建一个迭代循环 迭代循环能够通过一个计数器和比 较指令后跟一个转移指令来创建 .
LH R3,=H ’1 ’ R3,=H’ MTHLOOP EQU * * 处理数据 * 月份 * 用月份设置R3 的值 AH R3,=H ’1 ’ R3,=H’ CH R3,=H ’12 ’ R3,=H’ 12’ 月份增量 所有月份是否都已处理 初始化 从1计数
• 理解运用基本指令来实现迭代循环结构 • 掌握基本的算术地址操作 • 掌握如何处理数组
导言
© Copyright HUST 2008. All rights reserved.
Page 8 of 50
OS/390汇编语言提高
单元
循环
� � �
迭代循环 地址运算 数组处理
© Copyright HUST 2008. All rights reserved.
© Copyright HUST 2008. All rights reserved.
Page 22 of 50
OS/390汇编语言提高
单元
循环
� � �
迭代循环 地址运算 数组处理
© Copyright HUST 2008. All rights reserved.
Page 23 of 50
OS/390汇编语言提高
Page 9 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小节目标
• 定义迭代循环 • 理解迭代循环 • 掌握计数循环指令(BCT)
导言
© Copyright HUST 2008. All rights reserved.
Page 10 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
迭代循环
数组
计数器 条件分支
Continued…
术语表
© Copyright HUST 2008. All rights reserved.
Page 21 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小节总结
• 定义迭代循环 • 理解迭代循环 • 掌握计数循环指令(BCT)
总结
导言
© Copyright HUST 2008. All rights reserved.
Page 2 of 50
OS/390汇编语言提高
导言 第一单元 循环 —— 阐明实现迭代循环结构的基本指令,基本的地址算术 操作和如何处理数组 第二单元 逻辑移位指令 —— 阐述布尔函数、转移指令和带有屏蔽字的位 测试指令 第三单元 模块化编程 —— 阐述了编写汇编语言模块的过程以及在完整程 序中插入退出模块 第四单元 编写完整的程序 —— 阐述怎样写出完整的程序,以及程序中模 块之间的相互关系 .
复习
© Copyright HUST 2008. All rights reserved.
Page 13 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小测验
添加延长助记符完成下面的代码,对一个星期中每天的数据进行求和。 PROCDAY * . LH R5,=H’1’ EQU * 处理每天的数据的代码 AH R5,=H ’1’ CH R5,=H ’7’ ______ PROCDAY
取址指令 LA
L和LA之间的不同 在这两种情况下,第二个操作数的有效 地址都是通过基址加偏移和索引寄存器 中的内容计算得到的。但是在LA指令 中,有效地址放在第一个寄存器中。对 L指令而言,有效地址中的内容放在第 一个操作数表示的寄存器中。 例: LA R4,ARRAY 该指令将ARRAY的存储器地址放在了 R4中。
复习
© Copyright HUST 2008. All rights reserved.
Page 14 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
计数循环指令
什么是计数循环指令BCT? BCT指令是为处理迭代循环而设计的。 指令的执行将寄存器R的内容减1。如果 R此时不包含0,则转移到由LOOP指定 的地址去执行(即继续循环)。如果R 包含0,则执行BCT指令的下一条指令 (即退出循环)。指令的执行不影响状 态码CC。
单元 : 循环
单元介绍
在设计和编写汇编程序经常会遇到需要重复执行一段机器指令。这就是循 环。 本单元通过循环的应用实例来研究一般的循环技术 .
导言
© Copyright HUST 2008. All rights reserved.
Page 7 of 50
OS/390汇编语言提高
单元 : 循环
单元目标
导言
© Copyright HUST 2008. All rights reserved.
Page 4 of 50
OS/390汇编语言提高
课程目标 (续 )
• 编写汇编语言模块或是插入退出程序到完整程序. • 生成传递控制和接受控制,传递数据和接受数据的代码 • 使用定长和变长的参数列表 • 构造完整的汇编程序
迭代循环结构的使用 什么是循环? 循环是能够重复执行同一顺序的机 器指令的编码技术。 什么是迭代循环? 迭代循环是在编码时就知道要做多 少次循环 ,而不是在执行时才知道最 终状态的那种情形 .
数组 1月 2月 . . . . 12 月
下一个 入口
处理
结果
< 循环
比较 计数 =
存储结果
Continued…
BCTR R3, R1
概念
© Copyright HUST 2008. All rights reserved.
Pageຫໍສະໝຸດ Baidu17 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
计数循环指令 (续 )
BCTR指令 实际上当BCTR的第二个操作数是0时不 分支,因此,BCTR指令可以直接实现 对寄存器实现减一的操作。 使用下面的代码: SH R7,=H ’1’ 和使用 BCTR R7,0 这两段代码的区别是BCTR不会引起溢 出而且不设置条件码。
SH
R7,=H'1'
代码从R7 减去立即数1 (需要2+4=6 字节)
BCTR R7, 0 第二个操作数为0时,代码不会出现分支 允许从R7减去1(需要2字节)
概念
© Copyright HUST 2008. All rights reserved.
Page 18 of 50
OS/390汇编语言提高
OS/390汇编语言提高
© Copyright HUST 2008. All rights reserved.
OS/390汇编语言提高
课程概述
本课程学习如何去提升汇编语言的基本技能,所以针对的是应用程序 员。同样也适合于对希望扩展自己编程技能知识的汇编程序员。本课程对 于曾经在非 MVS环境中使用汇编编程过,而且希望学习 MVS的输入输出 和调试工具的编程人员也是非常有帮助的。
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
计数循环指令 (续 )
如何使用BCT? 使用BCT涉及到下面的步骤: 1. 在循环体前,将循环需要执行的 次数装载进一个通用寄存器 (GPR)中。 2. 编写循环体,用BCT作为最后一 条指令,使用已初始化的寄存器 和循环的开始地址为其操作数。 右边的代码展示了如何用BCT指令
LA指令: RX格式
LA 第一个操作数 R4 内容
R4,ARRAY 第二个操作数 ( 基址偏移) 数组 地址
用数组地址替换R4内容
LA
CC -状态码不改变
概念
© Copyright HUST 2008. All rights reserved.
Page 25 of 50
OS/390汇编语言提高
单元 : 循环 小节: 地址运算
单元 : 循环 小节: 地址运算
小节目标
• 定义和描述地址运算 • 掌握取址指令 • 理解地址运算的局限性
导言
© Copyright HUST 2008. All rights reserved.
Page 24 of 50
OS/390汇编语言提高
单元 : 循环 小节: 地址运算
地址运算
在循环处理数组的过程中,循环每次重 复处理数组中不同的元素。在循环过程 中每次都必须改变当前元素的地址。 操作数据地址的过程叫做地址运算。 在地址运算中最重要的指令是取址指令 LA,该指令将第二个操作数的地址放在 第一个操作数中,不改变状态码。
12 个月份循环计数
’ 12 ’ LH R3,=H R3,=H’ 12’ MTHLOOP EQU * *
按月13-处理数据 (值在 R3中)
* BCT R3,MTHLOOP
Continued…
概念
© Copyright HUST 2008. All rights reserved.
Page 16 of 50
BNH MTHLOOP
没有处理完,则跳 转到MTHLOOP
概念
© Copyright HUST 2008. All rights reserved.
Page 12 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小测验
对一个迭代循环 ,下面哪个描述了循环次数最开始知道的时间 ? A. B. C. D. 程序设计和编写时 程序汇编时 当程序链接时 当程序执行时
导言
© Copyright HUST 2008. All rights reserved.
Page 3 of 50
OS/390汇编语言提高
课程目标
• 使用LA和BCT指令实现循环 • 处理数组和其他结构的数据 • 执行布尔和移位操作 • 将状态码和测试位联系起来 • 用TM指令来进行位测试
Continued…
BCT指令: RX格式
BCT
R6,LOOP
循环计数寄存器
分支地址 ( 主存)
R6 10 计数器 • 程序每循环一次,计数器减少1 • 计数器到达0时,执行下一条指令
CC -状态码不改变 Continued…
概念
© Copyright HUST 2008. All rights reserved.
Page 15 of 50
Page 20 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
术语表
循环 程序中的一组语句重复执行,或执行一定的次数直到条件为真 或为假。 用一条语句导致程序去执行一个或更多语句的过程.在高级语言 中迭代循环的例子,如:FOR,DO,REPEAT...UNTIL,DO…WHILE 一个全是同一个类型数据列表,每个元素都能通过索引或地址引 用。数组是数据结构的一部分,而数据结构是计算机编程中重要 的基础. 在程序中,用一个变量来计数。 在某些条件下,将控制转交给另一条指令的汇编指令(即当某些条件 为真或为假时转移)
相关文档
最新文档