解码一行 PASCAL 代码



我是PASCAL的新手,我正在研究PASCAL代码。如果有人帮助我理解这段代码,我将不胜感激。

readagain1:     
        Write(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+1)], fileio_dcb.usr_buf^[WRD((2*j)+0)])):4:16);     
        Write(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+3)], fileio_dcb.usr_buf^[WRD((2*j)+2)])):4:16);     
        Write(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+5)], fileio_dcb.usr_buf^[WRD((2*j)+4)])):4:16);     
        Write(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+7)], fileio_dcb.usr_buf^[WRD((2*j)+6)])):4:16);     
        Write(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+9)], fileio_dcb.usr_buf^[WRD((2*j)+8)])):4:16);     
        Write(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+11)], fileio_dcb.usr_buf^[WRD((2*j)+10)])):4:16);     
        Write(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+13)], fileio_dcb.usr_buf^[WRD((2*j)+12)])):4:16);     
        WriteLn(' ', (BYWORD(fileio_dcb.usr_buf^[WRD((2*j)+15)], fileio_dcb.usr_buf^[WRD((2*j)+14)])):4:16);     
        j := j+8;     
        IF (j < 100) THEN GOTO readagain1;
        j := 0;     
        int_dcb.txt_buf.r := 0;     
        WriteLn;
        WriteLn('Reading txt_buf ; ');

readAgain1 是已声明的标签。

十六进制数正在从文件中读取到缓冲区(fileio_dcb.usr_buf)中,并且正在对读取的十六进制数执行某些操作。我将不胜感激任何帮助,以了解正在对号码执行的操作。

我的猜测是,每次迭代它都会写出 13 行(=100/8 四舍五入)行,每行有 8 个(16 位)字大小的十六进制数字。每行都有一个前导空格。

它可能是一种非典型(非Borland)方言,可以使用:4:16写十六进制值(我假设这意味着以16为基数,4位宽)。大多数典型的方言(和标准方言?)只使用 :x:y 作为浮点数。

BYWORD() 和 WRD() 不是标准标识符,我猜这是一些将两个字节组合成一个单词的嵌入式方言。也许它只能从对齐的地址中读取单词,并且这些内置/宏解决方法是针对此的。

请注意,这都是基于"很可能这样做"。片段不够完整,方言不标准。

相关内容

  • 没有找到相关文章

最新更新