mainframe assembler
文章平均质量分 67
dy1818dy
这个作者很懒,什么都没留下…
展开
-
大型机汇编(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 · 2785 阅读 · 0 评论 -
大型机汇编(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 · 1091 阅读 · 0 评论 -
大型机汇编(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 · 1864 阅读 · 0 评论 -
大型机汇编(mainframe assembler/HLASM)之藏巧于拙
本文只说设计思想不谈技术,其思想是一个老外架构师告诉我的,现在整理如下:一般情况下,在嵌有CICS的汇编程序中,都多多少少涉及TWA(transaction work area)的概念,单从字面上就可以看出,这块区域是在整个transaction的运行中保持有效的。现假设,TWA中存放的有很多个指针,这些指针分别指向不同的地址空间,现内存中有一块表区域,大小为1000字节,具体为:prof原创 2012-06-30 09:58:58 · 1391 阅读 · 0 评论 -
大型机汇编(mainframe assembler/HLASM)之代码精简高效
下面是写于上个世纪的一段代码,本人感觉写得非常好,现在与大家一起分享共同研究。虽然现在的编程风格都不提倡用*来代替当前地址了,但这种简洁高效的编程思想及注释的详尽,还是可以借鉴的。代码的功能注释中解读的非常详细。 POPBKREC DS 0H 29200000*--原创 2012-07-13 20:08:44 · 2119 阅读 · 0 评论 -
大型机汇编(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 · 2343 阅读 · 0 评论 -
大型机汇编(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 · 3268 阅读 · 0 评论 -
大型机汇编(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 · 2399 阅读 · 0 评论 -
大型机汇编(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 · 1103 阅读 · 0 评论 -
大型机汇编(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 · 2052 阅读 · 0 评论 -
大型机汇编(mainframe assembler/HLASM)之线程工作栈
如果在一个可装载模块中,一个程序被多个程序或者被另一个程序多次调用,而恰巧本程序又在运行时出错了,我们怎么快速锁定其实被谁(父程序)调用的呢?(JAVA中有线程工作栈可以很容易找到,而COBOL或者HLASM就有点犯难了),甚至是更上层的程序;或者如果它被一个程序多次调用,我们怎么确定是在哪次被调用时出了问题? 一般情况下,我们可以加DISPLAY来跟踪,不过这样太费时,很多情况下,我们需原创 2012-11-15 13:54:59 · 2159 阅读 · 0 评论 -
大型机汇编(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 · 2330 阅读 · 0 评论 -
大型机汇编(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 · 2552 阅读 · 0 评论 -
大型机汇编(mainframe assembler/HLASM)之CICS调用
一般情况下,写一个嵌有CICS调用的HLASM程序,我们只要这样写就可以了:ABC CSECT ... EXEC CICS ... ... END这样汇编器/编译器在编译的时候就会自动地把诸如DFHEIGBL DFHEISTG DFHEIENT DFHEIRET DFHEIEND这些系统定义的宏给加原创 2012-06-25 21:27:07 · 1245 阅读 · 0 评论 -
大型机汇编(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 · 3351 阅读 · 0 评论 -
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 · 2328 阅读 · 0 评论 -
大型机汇编(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 · 2609 阅读 · 0 评论 -
COMP-1及COMP-2内部存储解析
在从事大型机的工作中,很多时候我们所做的都是读dump,然后反向找出VSAM/QSAM数据集中的不当记录,尤其当数据集很大的时候,精确定位一条记录很是不便。。。而这里介绍的利用浮点数反向查找就是一个捷径(比如:我们在dump里看到X'C411570A',如果能快速算出-4439.039,再在数据集中搜索-4439.039,相信很容易就能锁定到你想要的目标记录),下面我们解析下,大型机是如何存储浮点数及我们又怎样快速算出其对应的十进制数据。原创 2014-12-18 12:06:12 · 6609 阅读 · 0 评论 -
大型机汇编(HLASM)之随时显示所有寄存器里的数值
L R6,4(R13) LA R6,16(R6) LA R7,12 LOOP LA R6,4(R6) MVC原创 2012-06-13 07:32:50 · 1100 阅读 · 0 评论 -
大型机汇编(mainframe assembler/HLASM)之STCK/STCKE
插个题外话,为什么有些程序要用汇编写,一般来说,主要有:1)在运算速度上有要求。比如银行,保险类的打印某些报表,这些报表在夜间batch运行阶段,可能会被数亿次地调用。2)某些程序过于依赖于底层。比如有些从文件中读取的数据,需要在内存里开辟空间(或许建立一个table,或许建立一个chain...)来维护它,在整个系统运行阶段,就要有程序对这块内存进行维护。而对此块内存的操作用汇编写就比较原创 2012-07-01 08:32:34 · 1501 阅读 · 0 评论 -
大型机汇编(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 · 2601 阅读 · 2 评论 -
大型机汇编(mainframe assembler/HLASM)之COBOL解惑
这个问题单单从COBOL层面上解释肯定是解释不通的,但从大型机汇编角度理解就很简单了原创 2013-08-01 18:01:45 · 2810 阅读 · 0 评论 -
大型机汇编(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 · 2775 阅读 · 0 评论 -
大型机汇编(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 · 2179 阅读 · 0 评论 -
大型机汇编(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 · 2748 阅读 · 0 评论