線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1140
推到 Plurk!
推到 Facebook!

指正Keil C code錯誤的地方!

 
hys0608
一般會員


發表:4
回覆:3
積分:1
註冊:2005-07-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-27 06:43:27 IP:218.175.xxx.xxx 未訂閱
請問各位:     如下組合語言的副程式,我寫成Keil C code雖然pass complier後,但是結果並非所預期。所以請問各位,能否指正Keil C code錯誤的地方(組合語言是ok的)!     
 
[assemble code start]    X EQU 30H
Y EQU 31H
EX EQU 32H
EY EQU 33H
XBUFFER EQU 34H
YBUFFER EQU 35H
DBUF EQU 36H    MOV X,#01
MOV Y,#01
MOV EX,#20
MOV EY,#80
MOV DBUF,#FFH
CALL DDRAMWR_BW_BLOCK
.
.
.
;--------------------------------------------
DDRAMWR_BW_BLOCK:
PUSH 1
PUSH 2
PUSH 3
PUSH 4    CLR C
MOV A,EX
SUBB A,X
INC A
MOV XBUFFER,A
CLR C
MOV A,EY
SUBB A,Y
INC A
MOV YBUFFER,A    MOV A,Y
DEC A
MOV B,#20
MUL AB    CLR C    ADD A,X
CJNE A,#00H,BW62_BLK
DEC B    BW62_BLK: DEC A
MOV R1,A
MOV A,B
ADDC A,#0
MOV R2,A
CLR C    BW22_BLK: MOV R3,XBUFFER
BW12_BLK:
MOV A,DBUF
CPL A
CALL DATA_WR    BW52_BLK: INC R1    MOV A,R1
DEC A
CJNE A,#255,BW32_BLK    MOV R1,#0
INC R2
CLR C
BW32_BLK: DJNZ R3,BW12_BLK    CLR C
MOV A,#20
SUBB A,XBUFFER
ADD A,R1
MOV R1,A
MOV A,R2
ADDC A,#0
MOV R2,A
DJNZ YBUFFER,BW22_BLK    POP 4
POP 3
POP 2
POP 1    RET    ;--------------------------------------    DATA_WR: ;Write data to MEM thru 1352
PUSH DPL
PUSH DPH
; CLR C
MOV DPL,R1
MOV DPH,R2
CLR P3.4 ;MEMCS#=0,
CLR P3.1
CLR P3.0
CLR P1.0 ;Ereset=0;
MOVX @DPTR,A
SETB P3.4 ;MEMCS#=1
POP DPH
POP DPL
RET
;--------------------------------------------
[assemble code end]    [c51 code start]    unsigned char xdata * data Addr;
Show_bar(0x01,0x01,0x20,0x80,0xff);    //==================
void Show_bar(unsigned char x, unsigned char y,unsigned char ex, unsigned char ey,unsigned char DBUF)
{
unsigned char c,x1,y1,YHL,YH,YL,xbuffer,ybuffer;
CY=0;
c=CY;
xbuffer=(ex-c-x) 1;
ybuffer=(ey-c-y) 1;    YHL=(y-1)*0x14;
YH=(YHL&0xff00)>>8;
YL=(YHL&0x00ff);    c=0;
YL=YL x;
if(YL=!0)
{
x1=YL--;
y1=YL c 0;
}
else
{
YH--;
x1=YL--;
y1=YL c 0;
}    loop1:
if(ybuffer!=0)
{
loop:
if(xbuffer!=0)
{
DBUF=~DBUF;    P3_4=0;
P3_1=0;
P3_0=0;
P1_0=0;
*Addr=DBUF;
P3_4=1;    x1  ;
x1--;
if(x1!=255)
{
xbuffer--;
}
else
{
x1=0;
y1  ;
c=0;
}
goto loop;
}
else
{
c=0;
x1=0x14-xbuffer x1;
y1=y1 c 0;
}
ybuffer--;
goto loop1;
}
}
//=========================
[c51 code end] 

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-27 07:52:51 IP:220.134.xxx.xxx 未訂閱
1>請將你的標題改為"問題".並取一有意義的名稱. compiler pass, code就沒有錯. 2>po程式碼請縮排, 不知如何做請參考版規. 3>請清楚描述問題, 何謂結果並非預期? 請修改配合~~謝謝!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
系統時間:2024-07-03 9:27:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!