自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大型机汇编(HLASM)专栏

若人生只如初见,qq349106216

  • 博客(28)
  • 收藏
  • 关注

原创 COMP-1及COMP-2内部存储解析

在从事大型机的工作中,很多时候我们所做的都是读dump,然后反向找出VSAM/QSAM数据集中的不当记录,尤其当数据集很大的时候,精确定位一条记录很是不便。。。而这里介绍的利用浮点数反向查找就是一个捷径(比如:我们在dump里看到X'C411570A',如果能快速算出-4439.039,再在数据集中搜索-4439.039,相信很容易就能锁定到你想要的目标记录),下面我们解析下,大型机是如何存储浮点数及我们又怎样快速算出其对应的十进制数据。

2014-12-18 12:06:12 6482

原创 大型机汇编(mainframe assembler/HLASM)之经典面试题

1.AMODE 31RMODE 24是什么意思?为什么AMODE不能小于RMODE? 2. 什么是PSW?试说出几个经常用到的字段 3. R1和R15一般都分别做什么用? 4. HLASM是怎么调用子程序的? 5. 为什么要设置base register? 6. HLASM是怎么调用QSAM和VSAM数据集的? 7. 指令LA 5,5是什

2013-10-24 14:54:00 2748

原创 大型机汇编(mainframe assembler/HLASM)之RECFM=VBA

本程序是检测从JCL传过来几个参数,然后把各个参数打印出来,比如://C       EXEC PGM=*.B.SYSLMOD,PARM='BOBGUO,ABCDEFG'    //SYSPRINT DD  DSN=RAGJL.OUTPUT,DISP=(NEW,CATLG,DELETE), //             SPACE=(TRK,(1,1)),LRECL=125,REC

2013-08-28 14:24:50 2590

原创 大型机汇编(mainframe assembler/HLASM)之显示内存实际数据

UNPK  OUTPUT(9),INPUT(5)         TR    OUTPUT,HEXTAB         ...INPUT    DC    X'A0B1C2D3',X'12'OUTPUT   DC    CL8' ',C' 'HEXTAB   EQU   *-C'0'         DC    C'0123456789ABCDEF' 上面的代码是

2013-08-20 08:40:49 2536

原创 大型机汇编(mainframe assembler/HLASM)之S0C7错误

MAIN CSECT      STM 14,12,12(13)      BASR 12,0      USING *,12      ST 13,SAVE+4      LA 13,SAVE START EQU *     MP  P1,P2EXIT EQU *      L 13,SAVE+4      LM 14,12,12(13)

2013-08-15 10:44:27 3327

原创 大型机汇编(mainframe assembler/HLASM)之COBOL解惑

这个问题单单从COBOL层面上解释肯定是解释不通的,但从大型机汇编角度理解就很简单了

2013-08-01 18:01:45 2793

原创 大型机汇编(mainframe assembler/HLASM)之BAS指令

请先仔细地阅读下面的程序,实在看不懂,再看最后的分析//A       EXEC PGM=ASMA90,PARM='OBJECT,NODECK,XREF(SHORT)'//SYSPRINT DD  SYSOUT=*//SYSLIB   DD  DISP=SHR,DSN=SYS1.MACLIB//SYSLIN   DD  DISP=(,PASS),UNIT=SYSDA,SPACE=(

2013-03-22 18:19:34 2736

原创 大型机汇编(mainframe assembler/HLASM)之C++语言对应

本人选择了几个个人认为比较好的方法,并找出C语言中于此对应的语句(不断更新中...)。 LA 0,1LA 1,5BXLE 0,0,*           (BXLE 5,6,ABC: 如果R5的值加上R6的值 SRA 0,1 用C语言表示应该是:for ( i = 1; i                    i = i >> 1;

2013-03-21 14:29:01 2314

原创 大型机汇编(mainframe assembler/HLASM)之Branch

以上基本上就是一般情况下,经常用到的branch指令,感觉看上去很多,下面我们稍微梳理下,或许对于记忆有些好处: 1. compare比较,既然比较就应该有大于小于等于之分,所以有BE BH BL BNE BNH BNL六种2. TM(test under mask),它是检测一个byte中的某些bit是0还是1的,所以有三种情况,全0全1或0和1都有,所以有BO BZ BM BNO

2013-02-18 14:39:47 2584 2

转载 Reading LIST output(三)

The new compiler options used here are:MAP - provides a mapping of all data division items plus all implicitly declared variablesThe Run time option TERMTHDACT(DUMP) requests a formatted dump in t

2012-12-20 13:18:36 3700

转载 Reading LIST output(二)

The new compiler options used in this program are:LIST - produces 8 pieces of output- Assembler listing of program initialization code- Program Global Table information- Constant Global Table

2012-12-20 13:17:22 2552

转载 Reading LIST output(一)

The compiler options used in this program are:APOST - treat the apostrophe as enclosing string literalsFLAG(X,Y) X = lowest level of syntax error message to issue Y = also embed message

2012-12-20 13:15:59 2302

原创 TGT and DSA

TGT存储的是你程序运行环境的一些信息            000710  000000  72 BYTE SAVE AREA            000758  000048  TGT IDENTIFIER            00075C  00004C  NEXT AVAILABLE BYTE ADDRESS FOR CEL            000760  0

2012-12-20 11:02:58 2313

原创 大型机汇编(mainframe assembler/HLASM)之中断向量表

LinkageMacroFunctionSVC 00XDAPReads or writes direct access volumesSVC 00EXCPExecutes a channel program for graphic access method (GAM)

2012-11-21 16:53:56 2386

原创 大型机汇编(mainframe assembler/HLASM)之线程工作栈

如果在一个可装载模块中,一个程序被多个程序或者被另一个程序多次调用,而恰巧本程序又在运行时出错了,我们怎么快速锁定其实被谁(父程序)调用的呢?(JAVA中有线程工作栈可以很容易找到,而COBOL或者HLASM就有点犯难了),甚至是更上层的程序;或者如果它被一个程序多次调用,我们怎么确定是在哪次被调用时出了问题? 一般情况下,我们可以加DISPLAY来跟踪,不过这样太费时,很多情况下,我们需

2012-11-15 13:54:59 2149

原创 大型机汇编(mainframe assembler/HLASM)之S0C4解读

PROGSUB CSECT                                   STM R14,R12,12(R13)                      BALR R12,R0                              USING *,R12                              ST R13,SAVE+4

2012-10-26 22:08:58 3248

原创 大型机汇编(mainframe assembler/HLASM)之加密与解密

1.加密既然要加密,我们就要制定加密的算法规则(密码表):TRTABLE  DC    256X'0'                                        ORG   TRTABLE+C'A'                                        DC    AL1(25,16,37,2,14,8,7,21,10)

2012-10-23 18:50:10 2169

原创 大型机汇编(mainframe assembler/HLASM)之显示变量值('DISPLAY' in COBOL)

In COBOL, we can use DISPLAY to display some variable's value; Instead, we can issue macro WTO(Write To Operator) in assembler to meet it. WTO MF=(E,LISTMSG1) LTR R15,R15

2012-10-19 15:46:23 2330

原创 大型机汇编(mainframe assembler/HLASM)之代码loop篇

从后往前检测TMED中的每个bit是0还是1,并且根据结果从前往后给FLAGS赋值          LA    R1,3                 LA    R5,TMED+2           LA    R4,FLAGS LOOPFLAG DS    0H                   LA    R14,01               LA

2012-08-27 15:29:30 2033

原创 大型机汇编(mainframe assembler/HLASM)之代码精简高效

下面是写于上个世纪的一段代码,本人感觉写得非常好,现在与大家一起分享共同研究。虽然现在的编程风格都不提倡用*来代替当前地址了,但这种简洁高效的编程思想及注释的详尽,还是可以借鉴的。代码的功能注释中解读的非常详细。 POPBKREC DS   0H                                                        29200000*--

2012-07-13 20:08:44 2099

原创 大型机汇编(mainframe assembler/HLASM)之STCK/STCKE

插个题外话,为什么有些程序要用汇编写,一般来说,主要有:1)在运算速度上有要求。比如银行,保险类的打印某些报表,这些报表在夜间batch运行阶段,可能会被数亿次地调用。2)某些程序过于依赖于底层。比如有些从文件中读取的数据,需要在内存里开辟空间(或许建立一个table,或许建立一个chain...)来维护它,在整个系统运行阶段,就要有程序对这块内存进行维护。而对此块内存的操作用汇编写就比较

2012-07-01 08:32:34 1485

原创 大型机汇编(mainframe assembler/HLASM)之藏巧于拙

本文只说设计思想不谈技术,其思想是一个老外架构师告诉我的,现在整理如下:一般情况下,在嵌有CICS的汇编程序中,都多多少少涉及TWA(transaction work area)的概念,单从字面上就可以看出,这块区域是在整个transaction的运行中保持有效的。现假设,TWA中存放的有很多个指针,这些指针分别指向不同的地址空间,现内存中有一块表区域,大小为1000字节,具体为:prof

2012-06-30 09:58:58 1372

原创 大型机汇编(mainframe assembler/HLASM)之DUMP解读

PSW AT TIME OF ERROR 078D0000 00007F86078D0000 00007F86是出错时的PSW,一般情况下,我们在乎的有CC(18-19BIT), Program Mark(20-23BIT), Addressing(32BIT), Instruction Address(33-63BIT)     CC-Condition Code: 一般被用来判断否跳转

2012-06-28 06:09:36 1849

原创 大型机汇编(mainframe assembler/HLASM)之CICS调用

一般情况下,写一个嵌有CICS调用的HLASM程序,我们只要这样写就可以了:ABC      CSECT         ...          EXEC CICS ...         ...         END这样汇编器/编译器在编译的时候就会自动地把诸如DFHEIGBL DFHEISTG DFHEIENT DFHEIRET DFHEIEND这些系统定义的宏给加

2012-06-25 21:27:07 1225

原创 大型机汇编(mainframe assembler/HLASM)之LOCTR

LOCTR--Multiple location counters其主要作用就是为了方便程序员编写代码,程序员可以把一个功能强大的程序分割成好多小的代码段,然后在分别放在不同的PS/PDS dataset里,而在每个dataset里可以专门定制特定的变量为本dataset里的过程服务。 000000                00000 00BE4  1530 DFHEISTG DSE

2012-06-17 16:34:03 1079

原创 大型机汇编(HLASM)之随时显示所有寄存器里的数值

L    R6,4(R13)                                 LA   R6,16(R6)                                 LA   R7,12                            LOOP     LA   R6,4(R6)                                  MVC

2012-06-13 07:32:50 1085

原创 大型机汇编(mainframe assembler/HLASM)之LA指令

000104 5840 5060            00060  2988          L     R4,DFHEICAP    000108 4140 4000            00000  2989          LA    R4,0(R4)         懂大型机汇编的都知道上面两句是什么意思。前者load value,后者load address。

2012-06-08 22:51:36 2745

原创 大型机汇编(HLASM)之多进程指令CS 和 CDS

大型机汇编语言中的多进程处理是通过某些特殊指令来完成的,比如本文的CS(compare and swap)和CDS(compare double and swap),下面详细介绍其功能。   在多进程环境中,比如在CICS环境下,某些transaction会被多个task调用,这种情况下某些全局变量(比如counter,flag),就可能同时被多个task同时修改。。。   现在介绍的CS

2012-06-07 22:33:40 1087

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除