全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1305
推到 Plurk!
推到 Facebook!

<C++> MACRO讀檔位置抓錯 煩請大大幫幫忙~^^

尚未結案
團長
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-30 16:30:05 IP:61.67.xxx.xxx 未訂閱
以下是我的source code 結果是有run出來 不過就是會有些許的位置貼錯 麻煩幫我看一下哪邊出錯 謝謝^^  主程式如下:::
 
#include 
#include 
#include 
#include 
#include 
struct source
{        
        char m1[50];
        char m2[50];
        char m3[50];
};
struct sicxe
{
        char m4[10];   //op4   讀SIC/XE code
};
void main(void)
{            struct source        x[250];
        struct sicxe        y[120];
        char read[50];
        char tp[250][100];
        int i=0,j=0,g=0,l=0,T=0;
        FILE *lp;
        FILE *fp;
        lp=fopen("SICXE1.txt","r");
        fp=fopen("02.txt","r");
        while(feof(lp)==0)
        {
                {
                        fscanf(lp,"%s",y[l].m4);
                }
                l  ;        
        }
        int F;
        while(feof(fp)==0)    //檢查是否讀檔讀到底
        {        
                fscanf(fp,"%s",read);  //注解判斷
                if (strcmp(read,".")==0)
                {
                        fgets(tp[T],256,fp);
                        T  ;
                }
                else
                {
                        for(g=0;g
以下為macro展開檔
COPY        START     0
RDBUFF      MACRO     &INDEV,&BUFADR,&RECLTH
.
.           MACRO TO READ RECORD INTO BUFFER
.
            CLEAR     X
            CLEAR     A
            CLEAR     S
            LDT      #4096
            TD       =X'&INDEV'
            JEQ       *-3
            RD       =X'&INDEV'
            COMPR     A,S
            JEQ       * 11
            STCH      &BUFAND,X
            TIXR      T
            JLT       *-19
            STX       &RECLTH
            MEND
WRBUFF      MACRO     &OUTDEV,&BUFAND,&RECLTH
.
.           MACRO TO WRITE RECORD FROM BUFFER
.
            CLEAR     X
            LDT       &RECLTH
            LDCH      &BUFAND,X
            TD       =X'&OUTDEV'
            JEQ       *-3
            WD       =X'&OUTDEV'
            TIXR      T
            JLT       *-14
            MEND
.
.           MAIN PROGRAM
.
FIRST       STL       RETADR
CLOOP       RKBUFF    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    發表人 - 團長 於 2005/07/01  00:47:09
        
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-30 23:38:47 IP:218.168.xxx.xxx 未訂閱
您好:    PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合 >
團長
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-01 00:50:08 IP:61.67.xxx.xxx 未訂閱
不好意思 已修正原始碼 我在判斷MEND的那行時會把在mend下面那一行的指令往上拉 煩請各位幫我抓出那邊錯誤
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-01 09:23:46 IP:61.228.xxx.xxx 未訂閱
02.txt是你列出來的macro展開檔嗎?另外SICXE1.txt檔的內容呢?
團長
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-01 13:22:42 IP:61.67.xxx.xxx 未訂閱
SICXE1.txt內容  
 
MEND
ADD
 ADD
ADDF
 ADDF
ADDR
AND
 AND
CLEAR
COMP
 COMP
JEQ
COMPF
 COMPF
COMPR
STX
DIV
 DIV
DIVF
 DIVF
DIVR
FIX
FLOAT
HIO
TD
 TD
J
 J
JGT
JLT
JSUB
LDA
LDB
LDCH
LDF
LDL
LDS
LDT
LDX
LPS
 JEQ
 JGT
 JLT
 JSUB
 LDA
 LDB
 LDCH
 LDF
 LDL
 LDS
 LDT
 LDX
 LPS
MUL
 MUL
MULF
 MULF
MULR
NORM
 OR
OR
 RD
RD
RMO
RSUB
 RSUB
SHIFTL
SHIFTR
SIO
SSK
STA
STB
STCH
STF
STI
STL
STS
STSW
STT
SUB
SUBF
 SSK
 STA
 STB
 STCH
 STF
 STI
 STL
 STS
 STSW
 STT
 STX
 SUB
SUBF
SUBR
SVC
TIO
 TIX
TIX
TIXR
 WD
WD    
要做macro展開的檔案內容("."和". macro.....的是注解")
COPY        START     0
RDBUFF      MACRO     &INDEV,&BUFADR,&RECLTH
.
.           MACRO TO READ RECORD INTO BUFFER
.
            CLEAR     X
            CLEAR     A
            CLEAR     S
            LDT      #4096
            TD       =X'&INDEV'
            JEQ       *-3
            RD       =X'&INDEV'
            COMPR     A,S
            JEQ       * 11
            STCH      &BUFAND,X
            TIXR      T
            JLT       *-19
            STX       &RECLTH
            MEND
WRBUFF      MACRO     &OUTDEV,&BUFAND,&RECLTH
.
.           MACRO TO WRITE RECORD FROM BUFFER
.
            CLEAR     X
            LDT       &RECLTH
            LDCH      &BUFAND,X
            TD       =X'&OUTDEV'
            JEQ       *-3
            WD       =X'&OUTDEV'
            TIXR      T
            JLT       *-14
            MEND
.
.           MAIN PROGRAM
.
FIRST       STL       RETADR
CLOOP       RKBUFF    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
 
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-04 11:42:01 IP:61.228.xxx.xxx 未訂閱
你輸出的結果是否只是要把註解的部分拿掉呢?另外有個問題在你展開檔內的WRBUFF是OP CODE 還是前端的參數而已? 還有END應該也是OP CODE吧.如果是OP CODE的話請在sicxe1.txt檔內把它們都加入. 我把你的程式部分作了一些簡化,你參考看看:
        while(feof(fp)==0)    //檢查是否讀檔讀到底
        {        
                fscanf(fp,"%s",read);  //注解判斷
                if (strcmp(read,".")==0)
                {
                        fgets(tp[T],256,fp);
                        T  ;
                }
                else
                {
                        for(g=0;g     
        
團長
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-05 02:43:41 IP:61.67.xxx.xxx 未訂閱
謝謝GeorgeKu的回應 WDBUFF和WRBUFF是MACRO要呼叫的副程式名稱 而END並沒有在SIC/XE的指令集裡面 所以也不加入在SIC/XE的指令 在呼叫方面 從MAIN開始做展開的動作 裡面包含著各個參數的設定 不過程式還是無法正確低呼叫並展開 最近被它弄的心浮氣燥的~"~
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-07-06 09:20:02 IP:61.228.xxx.xxx 未訂閱
因為我對SIC/XE不懂,所以沒辦法理解你所要完成的目標,但是從妳MACRO檔內容看來,我對WRBUFF的作法會有些疑問,你可否確認一下以下的作法是正確的.
WRBUFF      MACRO     &OUTDEV,&BUFAND,&RECLTH
            WRBUFF    05,BUFFER,LENGTH
ENDFIL      WRBUFF    05,EOF,THREE
系統時間:2024-06-02 1:25:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!