z390主机的汇编代码编程

时间:2011-10-09 03:57:47

标签: assembly mainframe zos

未完成此问题

在这个程序中,一个未知的问题会导致汇编程序因为显然未知的宏而拒绝代码,或者像宏一样看待程序集。我不确定如何纠正这个问题。

我正在使用z390便携式大型机汇编器和仿真器(http://www.z390.org/)。

另一个链接:www.z390.org/z390_Documentation.htm

相关的pdf位于http://tradingwiz.net63.net/pdf/Sessions5and6.pdf

装配手册位于http://publibz.boulder.ibm.com/epubs/pdf/asmr1020.pdf,但我无法应用它。

更新:我仍然想删除有关“缺少宏= DSORG = PS”的错误,我不知道如何告诉汇编程序基址寄存器在哪里(“找不到基址寄存器”)

另一个问题:你知道有没有这方面的资源,特别是那些容易理解的资源?

如果您想了解更多信息,我很乐意为您提供帮助。

        TITLE 'CS 4321 Program #4 by J. Colt Wright'
        PRINT NOGEN    
COPY SUBENTRY

    TITLE 'PROGRAM 4 80/80 LISTING'

    PRINT NOGEN
COPY2 SUBENTRY

    WTO 'PROG4 COPY PROG4 (ASCII) TO COPY (ASCII)'
    OPEN (INFILE,INPUT)
    OPEN (OUTFILE,OUTPUT)
    WTO 'Files opened successfully'
*
LOOP EQU *
GET INFILE,IRECORD
    MVC ORECORD,=CL133' '
    MVC ORECORD(80),IRECORD
    PUT OUTFILE,ORECORD
    B LOOP
*
EOF EQU *
    CLOSE (INFILE,,OUTFILE)
    WTO 'PROG4 ENDED OK'
    SUBEXIT


INFILE  DCB   DDNAME=INFILE,    X
              DSORG=PS,         X
              RECFM=FT,         X
              LRECL=72,         X
              EODAD=EOF,        X
              MACRF=GM          X
*
OUTFILE DCB   DDNAME=OUTFILE,   X
              DSORG=PS,         X
              RECFM=FT,         X
              LRECL=80,         X
              MACRF=PM          
*
IRECORD DC    CL72' '
ORECORD DC    CL80' '
          ENDPGM  DS D
          END COPY

20:22:31 PROG4     MZ390 START USING z390 V1.5.05 ON J2SE 1.6.0_26 10/08/11
20:22:31 PROG4     AZ390 AZ390E error  29      (1/29)211                 DSORG=PS,         X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = DSORG=PS,
20:22:31 PROG4     AZ390 AZ390E error  29      (1/30)212                 RECFM=FT,         X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = RECFM=FT,
20:22:31 PROG4     AZ390 AZ390E error  29      (1/31)213                 LRECL=72,         X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = LRECL=72,
20:22:31 PROG4     AZ390 AZ390E error  29      (1/32)214                 EODAD=EOF,        X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = EODAD=EOF,
20:22:31 PROG4     AZ390 AZ390E error  29      (1/33)215                 MACRF=GM          X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = MACRF=GM
20:22:31 PROG4     AZ390 AZ390E error  29      (1/36)252                 DSORG=PS,         X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = DSORG=PS,
20:22:31 PROG4     AZ390 AZ390E error  29      (1/37)253                 RECFM=FT,         X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = RECFM=FT,
20:22:31 PROG4     AZ390 AZ390E error  29      (1/38)254                 LRECL=80,         X
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = LRECL=80,
20:22:31 PROG4     AZ390 AZ390E error  29      (1/39)255                 MACRF=PM 
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = MACRF=PM
20:22:31 PROG4     AZ390 AZ390E error  29      (1/43)259                 ENDPGM  DS D
20:22:31 PROG4     AZ390 AZ390I ERRSUM missing macro = ENDPGM
20:22:31 PROG4     AZ390 AZ390E ERRSUM Critical Error Summary Option
20:22:31 PROG4     AZ390 AZ390E ERRSUM Fix and repeat until all nested errors resolved
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =DSORG=PS,
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =RECFM=FT,
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =LRECL=72,
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =EODAD=EOF,
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =MACRF=GM
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =LRECL=80,
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =MACRF=PM
20:22:31 PROG4     AZ390 AZ390E ERRSUM missing macro =ENDPGM
20:22:31 PROG4     AZ390 AZ390E ERRSUM total missing   copy   files =0
20:22:31 PROG4     AZ390 AZ390E ERRSUM total missing   macro  files =8
20:22:31 PROG4     AZ390 AZ390E ERRSUM total undefined symbols      =0
20:22:31 PROG4     AZ390 AZ390E ERRSUM total mz390 errors    = 0
20:22:31 PROG4     AZ390 AZ390E ERRSUM total az390 errors    = 10
20:22:32 PROG4     AZ390 AZ390I FID=  1 ERR=  10 c:\Program Files\Automated Software Tools\z390\CS4321\PROG4.MLC
20:22:32 PROG4     MZ390 ENDED   RC=12 SEC= 0 MEM(MB)= 47 IO=2420

        TITLE 'CS 4321 Program #4 by J. Colt Wright' 
        PRINT NOGEN    
COPY          SUBENTRY
    TITLE 'PROGRAM 4 80/80 LISTING'
    PRINT NOGEN
COPY2 SUBENTRY

    WTO 'PROG4 COPY PROG4 (ASCII) TO COPY (ASCII)'
    OPEN (INFILE,INPUT)
    OPEN (OUTFILE,OUTPUT)
    WTO 'Files opened successfully'
*
LOOP EQU *
    GET INFILE,IRECORD
    MVC ORECORD,=CL133' '
    MVC ORECORD(80),IRECORD
    PUT OUTFILE,ORECORD
    B LOOP
*
EOF EQU *
    CLOSE (INFILE,,OUTFILE)
    WTO 'PROG4 ENDED OK'
    SUBEXIT

    SUBEXIT   


INFILE  DCB     DDNAME=INFILE,                                         X
                DSORG=PS,                                              X
                RECFM=FT,                                              X
                LRECL=72,                                              X
                EODAD=EOF,                                             X
                MACRF=GM
*
OUTFILE DCB     DDNAME=OUTFILE,    
                DSORG=PS,                                              X
                RECFM=FT,                                              X
                LRECL=80,                                              X
                MACRF=PM
*
IRECORD DC    CL72' '
ORECORD DC    CL80' '
ENDPGM  DS D
 END COPY


08:39:00 PROG4     MZ390 START USING z390 V1.5.05 ON J2SE 1.6.0_26 10/09/11
08:39:00 PROG4     AZ390 AZ390E error 144      (1/15)141       MVC ORECORD,=CL133' '
08:39:00 PROG4     AZ390 AZ390I no base register found
08:39:00 PROG4     AZ390 AZ390E error  29      (1/39)258                       DSORG=PS,                                                RECFM=FT,                                                LRECL=80,                                               MACRF=PM
08:39:00 PROG4     AZ390 AZ390I ERRSUM missing macro = DSORG=PS,
08:39:00 PROG4     AZ390 AZ390E ERRSUM Critical Error Summary Option
08:39:00 PROG4     AZ390 AZ390E ERRSUM Fix and repeat until all nested errors resolved
08:39:00 PROG4     AZ390 AZ390E ERRSUM missing macro =DSORG=PS,
08:39:00 PROG4     AZ390 AZ390E ERRSUM total missing   copy   files =0
08:39:00 PROG4     AZ390 AZ390E ERRSUM total missing   macro  files =1
08:39:00 PROG4     AZ390 AZ390E ERRSUM total undefined symbols      =0
08:39:00 PROG4     AZ390 AZ390E ERRSUM total mz390 errors    = 0
08:39:00 PROG4     AZ390 AZ390E ERRSUM total az390 errors    = 2
08:39:01 PROG4     AZ390 AZ390I FID=  1 ERR=   2 c:\Program Files\Automated Software Tools\z390\CS4321\PROG4.MLC
08:39:01 PROG4     MZ390 ENDED   RC=12 SEC= 0 MEM(MB)= 47 IO=2374

2 个答案:

答案 0 :(得分:3)

我不是z390模拟器的专家,但据我所知的标准z / OS汇编程序,我会看一下你的连续字符(你编写的DCB宏调用中的'X')。通常它们应该在第72栏中,并且继续声明应该从每个续行的第16栏开始。

在你的第一个DCB的最后一个延续线上,我将删除MACRF = GM上的'X'连续符,因为这是你的陈述的结尾。

你的ENDPGM标签也应该在第1列,否则汇编程序认为它是一个语句/宏调用

给z / OS汇编程序一个机会 - 在20或30年后你会逐渐爱上它。

答案 1 :(得分:1)

对于丢失的宏DSORG = PS ...这是因为你在OUTFILE DCB宏调用的第一行没有延续。几次后,宏调用从OUTFILE DCB向下运行到MACRF = PM,因此除了最后一行之外,你需要在所有行上继续,告诉汇编器它是所有的一个语句。我知道语法的东西是一个痛苦的屁股,但如果你坚持使用汇编程序,特别是宏处理器,你会发现它具有一些非常灵活和优雅的功能。

至于遗失的基地登记册......可能是一些事情。正如我所说,我不知道模拟器,但它看起来好像抱怨没有ORECORD或= CL133''字面的基址寄存器。我猜这是后者。文字通常位于代码中,基于代码中或CSECT末尾的LTORG指令的位置。我无法从列表中看出是否有生成的LTORG指令(可以由SUBENTRY或SUBEXIT生成,但它们是特定于您的安装的宏/副本,所以我无法知道他们做了什么除了猜测)。看着它的奇怪之处在于你有2个SUBENTRY语句和2个SUBEXITS。从猜测这些宏通常做什么,我会期望每个1。因此,尝试取出COPY2 SUBENTRY和其中一个SUBEXITS,看看它是否更好。如果不这样做,看看你是否可以在z390中使用某个选项获得生成的语句的完整列表(将PRINT NOGEN更改为PRINT GEN作为开头),这可能会有所帮助。

我刚刚完成了帮我的孩子做作业,现在这个!祝你好运。

相关问题