我是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),并且正在对读取的十六进制数执行某些操作。对于理解正在对号码执行的操作,我将不胜感激。
答案 0 :(得分:0)
我的猜测是每次迭代它会写出13(= 100/8向上舍入)行,每行有8(16位)字大小的十六进制数。每条线都有一个领先的空间。
这可能是一种非典型的(非Borland)方言,它可以使用:4:16写出十六进制值(我假设这意味着基数为16,4位宽)。大多数典型的方言(和标准?)只使用:x:y表示浮点数。
BYWORD()和WRD()不是标准标识符,我猜这是一些将两个字节组合成一个单词的嵌入式方言。也许它只能读取对齐地址中的单词,并且是这些内置/宏的解决方法。
请注意,这完全基于&#34;最有可能的是&#34;。片段不够完整,方言不标准。