对SIC/XE中JLT *-19的理解感到困惑

问题描述 投票:0回答:1

这是 LELAND L beck 的《系统软件》一书中的程序(系统编程简介)

我正在尝试了解 MACROS 的工作原理

这演示了宏的使用

我的疑问是 JEQ *-19 是什么意思以及 JEQ *-3 是什么意思

当我用谷歌搜索时,它说它跳回 19 条指令 那么它会到达哪里 我如何找出 19 条指令并精确定位控制流落地的位置

有什么方法可以让我练习 sic/xe 程序...任何虚拟机或者这样我可以尝试一下..我将非常感谢任何建议...

     COPY START 0
     RDBUFF MACRO &INDEV,&BUFADR,&RECLTH

    CLEAR X
    CLEAR A
    CLEAR S
    +LDT #4096
    TD =X'&INDEV'
    JEQ *-3
    STCH &BUFADR,X
    TIXR T
    JLT *-19
    STX &RECLTH
    MEND



WRBUFF MACRO  &OUTDEV,&BUFADR,&RECLTH
     CLEAR X
     LDT  &RECLTH
     TD  =X'&OUTDEV'
     JEQ  *-3
     WD   =X'&OUTDEV'
     TIXR  T
     JLT  *-14
      MEND



...
MAIN PROGRAM
FIRST STL RETADR

CLOOP  RDBUFF F1,BUFFER,LENGTH  
       LDA LENGTH
       COMP  #0
       JEQ   ENDFIL
       WRBUFF 05,BUFFER,LENGTH
       J     CLOOP
ENDFIL WRBUFF 05,EOF,THREE
      J      @RETADR
 EOF    BYTE   C`EOF`
THREE   WORD   3
RETADR  RESW  1
LENGTH  RESW   1
BUFFER RESB   4096
     END   FIRST

任何帮助将不胜感激。提前致谢和问候

loops assembly sic
1个回答
0
投票

字符

*
计算当前指令的地址,并且
-3
减去三个字节(不是其中的指令)。

    TD =X'&INDEV'
    JEQ *-3

在这种情况下,

*
将计算为
JEQ
地址的值,因此
*-3
将计算为
TD
的地址(因为
TD
指令在内存中占用3个字节)。

类似地,

JLT *-19
将跳转到
CLEAR A
CLEAR
TIXR
采用格式2,
+LDT
采用格式4,其他采用格式3,相加为19)。

© www.soinside.com 2019 - 2024. All rights reserved.