IBM Assembler 表搜索

Posted

技术标签:

【中文标题】IBM Assembler 表搜索【英文标题】:IBM Assembler table search 【发布时间】:2014-01-08 21:37:47 【问题描述】:

我正在尝试将表条目的地址加载到寄存器中,然后将表条目的前 2 个位置与输入文件中的字段进行比较,并从那里进行进一步处理。

但是,我似乎无法成功地将表条目的地址加载到寄存器中,就像我的教科书和其他网站显示的那样。我不确定从这里去哪里,任何方向都会有所帮助。我尝试的任何操作都会进入无限循环,或者只是显示 NOTFOUND 消息。

以下是部分代码。

GETREC   EQU   *                              
     GET   TAPEIN,MHOMEOWN                                     
     AP    INCOUNT,=P'1'                        
     AP    CNT100,=P'1'                         
     CP    CNT100,=P'100'                 
     BNE   GETREC                
     PUT   DISKOUT,MHOMEOWN      
     BAL   R10,MNPRCS          
     AP    OTCOUNT,=P'1'
     ZAP   CNT100,=P'0' 
     B     GETREC       
     SPACE 1            
.....

NOTFOUND EQU   *                                            
     MVC   P+10(40),=CL40'PAR XX - NOT FOUND IN PARDTAB'
     MVC   P+14(2),MPARISH                              
     BAL   R8,PRINT                                     
     DC    X'FFFF'                                      
     EJECT                                              

MNPRCS   EQU   *                                            
     LA    R8,PARDTAB                                   
     CLC   MPARISH,0(R8)                                
     BE    COUNT                                        
     BNE   NOTFOUND                                     
     LA    R8,3(R8)                                     
     B     MNPRCS                                       

 table excerpt:
 PARDTAB  EQU   *              
      DC    CL2'01',CL1'3' 
      DC    CL2'03',CL1'2' 
      DC    CL2'04',CL1'5'                                

【问题讨论】:

【参考方案1】:

我找到了自己问题的答案。 MNPRCS 循环中的第二条 LA 指令应该前进到表中的下一行以找到匹配项。但是,当我循环返回以启动该过程时,第一条 LA 指令再次从头开始加载表。所以它导致了无限循环。我将代码更改为以下内容:

MNLOAD   EQU   *              
         LA    R8,PARDTAB     
MNPRCS   CLC   0(2,R8),MPARISH
         BE    COUNT          
         CLC   0(2,R8),=C'..' 
         BE    NOTFOUND       
         LA    R8,3(R8)       
         B     MNPRCS         

【讨论】:

以上是关于IBM Assembler 表搜索的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linux-Assembler 中发出哔哔声?

CoreOS coreos-assembler文档

CoreOS coreos-assembler文档

在 Assembler 中调试 xmm 寄存器

为啥在这种情况下会生成不同的 go-assembler 代码?

assembler 几个小程序