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 表搜索的主要内容,如果未能解决你的问题,请参考以下文章