組合語言比較指令用法 |
答題得分者是:mymj
|
莊聖
一般會員 發表:4 回覆:8 積分:2 註冊:2009-04-07 發送簡訊給我 |
各位前輩...最近我做專題做到一個困點
現在需要去使用到比較指令..可是卻發現比較指令編譯時出錯 以下是我的程式↓ ;decode C0 C1 C2 C3 ;check C2 CODE_K1 EQU 01H CODE_K2 EQU 02H CODE_K3 EQU 03H CODE_K4 EQU 04H ;------------------------------- IRCOM EQU 30H COM EQU 32H ;------------------------------- TS EQU 20 DEA EQU 9 IRIN EQU P3.2 PUL EQU P1.7 PUR EQU P1.6 ;------------------------------- ORG 0H JMP BEGIN ;------------------------------- BEGIN: mov R1,DEA CLR PUR CLR PUL SETB IRIN LOOP: MOV R0,#IRCOM CALL IR_IN CALL OP JMP LOOP ;------------------------------- pass: MOV R4,21 mov R5,21 INC DEA SUB R5,DEA (從這行開始到jne那裡我編譯時出了錯誤!!!) CMP R4,21 JNE M ;------------------------------- pass2: MOV R4,21 MOV R5,21 DEC DEA SUB R5,DEA (這裡是一樣的從這到ja的時候出問題!!!) CMP R4,21 JA MADA2 ;------------------------------- PU_BACK: CLR PUL MOV R2,#DEA A1: CALL DEL DJNZ R2,A1 CLR PUL MOV R2,#DEA A2: CALL DEL DJNZ R2,A2 RET ;-------------------------------- PU_FOR: CLR PUL MOV R1,#DEA B1: CALL DEL DJNZ R1,B1 CLR PUL MOV R1,#DEA B2: CALL DEL DJNZ R1,B2 RET ;------------------------------- PU_BACK1: CLR PUR MOV R2,#DEA Y1: CALL DEL DJNZ R2,Y1 CLR PUR MOV R2,#DEA Y2: CALL DEL DJNZ R2,Y2 RET ;-------------------------------- PU_FOR1: CLR PUR MOV R1,#DEA YT1: CALL DEL DJNZ R1,YT1 CLR PUR MOV R1,#DEA YT2: CALL DEL DJNZ R1,YT2 RET ;------------------------------- M: MOV R3,#TS Z1: CALL PU_FOR DJNZ R3,Z1 RET ;------------------------------- MADA2: MOV R3,#TS E1: CALL PU_BACK DJNZ R3,E1 RET ;------------------------------- MADA3: MOV R3,#TS PQ1: CALL PU_FOR1 DJNZ R3,PQ1 RET ;------------------------------- MADA4: MOV R3,#TS MA1: CALL PU_BACK1 DJNZ R3,MA1 RET ;------------------------------- DEL: MOV R5,#1 DELAY1: MOV R6,#2 F1: MOV R7,#17 DJNZ R7,$ DJNZ R6,F1 DJNZ R5,DELAY1 RET ;------------------------------ OP: MOV A,COM CJNE A,#CODE_K1,H1 CALL pass JMP OP H1: MOV A,COM CJNE A,#CODE_K2,H2 CALL pass2 RET H2: MOV A,COM CJNE A,#CODE_K3,H3 CALL pass RET H3: MOV A,COM CJNE A,#CODE_K4,H4 CALL pass2 JMP OP H4: JMP OP ;------------------------------ IR_IN: I1: JNB IRIN,I2 JMP I1 I2: MOV R4,#20 I20: CALL DEL DJNZ R4,I20 JB IRIN,I1 I21: JB IRIN,I3 CALL DEL JMP I21 I3: MOV R3,#0 LL: JNB IRIN,I4 CALL DEL JMP LL I4: JB IRIN,I5 CALL DEL JMP I4 I5: MOV R2,#0 L1: CALL DEL JB IRIN,N1 MOV A,#8 CLR C SUBB A,R2 MOV A,@R0 RRC A MOV @R0,A INC R3 CJNE R3,#8,LL MOV R3,#0 INC R0 CJNE R0,#34H,LL ;----------------------------- N1: INC R2 CJNE R2,#30,L1 RET END 我想知道我編譯錯的那部份出了什麼問題...再來我做的這個是8051單晶片紅外線控制馬達 現在大致上都ok就剩下想讓他利用比較來做出分段這部份出問題而已 不知道有哪位高手可以幫忙解決??? 拜託...因為專題製作快結束了!!! 老師已經下通碟...而我又卡住!!! |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
能貼出錯誤訊息嗎?
===================引 用 莊聖 文 章=================== 各位前輩...最近我做專題做到一個困點 現在需要去使用到比較指令..可是卻發現比較指令編譯時出錯 以下是我的程式↓ ;decode C0 C1 C2 C3 ;check C2 CODE_K1EQU 01H CODE_K2EQU 02H CODE_K3EQU 03H CODE_K4EQU 04H ;------------------------------- IRCOMEQU 30H COMEQU 32H ;------------------------------- TSEQU 20 DEAEQU 9 IRINEQU P3.2 PULEQU P1.7 PUREQU P1.6 ;------------------------------- ORG 0H JMP BEGIN ;------------------------------- BEGIN: mov R1,DEA CLR PUR CLR PUL SETB IRIN LOOP: MOV R0,#IRCOM CALL IR_IN CALL OP JMP LOOP ;------------------------------- pass: MOV R4,21 mov R5,21 INC DEA SUB R5,DEA(從這行開始到jne那裡我編譯時出了錯誤!!!) CMP R4,21 JNE M ;------------------------------- pass2: MOV R4,21 MOV R5,21 DEC DEA SUB R5,DEA (這裡是一樣的從這到ja的時候出問題!!!) CMP R4,21 JA MADA2 ;------------------------------- PU_BACK: CLR PUL MOV R2,#DEA A1:CALL DEL DJNZ R2,A1 CLR PUL MOV R2,#DEA A2:CALL DEL DJNZ R2,A2 RET ;-------------------------------- PU_FOR: CLR PUL MOV R1,#DEA B1:CALL DEL DJNZ R1,B1 CLR PUL MOV R1,#DEA B2:CALL DEL DJNZ R1,B2 RET ;------------------------------- PU_BACK1: CLR PUR MOV R2,#DEA Y1:CALL DEL DJNZ R2,Y1 CLR PUR MOV R2,#DEA Y2:CALL DEL DJNZ R2,Y2 RET ;-------------------------------- PU_FOR1: CLR PUR MOV R1,#DEA YT1:CALL DEL DJNZ R1,YT1 CLR PUR MOV R1,#DEA YT2:CALL DEL DJNZ R1,YT2 RET ;------------------------------- M: MOV R3,#TS Z1:CALL PU_FOR DJNZ R3,Z1 RET ;------------------------------- MADA2: MOV R3,#TS E1:CALL PU_BACK DJNZ R3,E1 RET ;------------------------------- MADA3: MOV R3,#TS PQ1:CALL PU_FOR1 DJNZ R3,PQ1 RET ;------------------------------- MADA4: MOV R3,#TS MA1:CALL PU_BACK1 DJNZ R3,MA1 RET ;------------------------------- DEL: MOV R5,#1 DELAY1: MOV R6,#2 F1:MOV R7,#17 DJNZ R7,$ DJNZ R6,F1 DJNZ R5,DELAY1 RET ;------------------------------ OP: MOV A,COM CJNE A,#CODE_K1,H1 CALL pass JMP OP H1:MOV A,COM CJNE A,#CODE_K2,H2 CALL pass2 RET H2:MOV A,COM CJNE A,#CODE_K3,H3 CALL pass RET H3:MOV A,COM CJNE A,#CODE_K4,H4 CALL pass2 JMP OP H4: JMP OP ;------------------------------ IR_IN: I1:JNB IRIN,I2 JMP I1 I2:MOV R4,#20 I20:CALL DEL DJNZ R4,I20 JB IRIN,I1 I21:JB IRIN,I3 CALL DEL JMP I21 I3:MOV R3,#0 LL:JNB IRIN,I4 CALL DEL JMP LL I4:JB IRIN,I5 CALL DEL JMP I4 I5:MOV R2,#0 L1:CALL DEL JB IRIN,N1 MOV A,#8 CLR C SUBB A,R2 MOV A,@R0 RRC A MOV @R0,A INC R3 CJNE R3,#8,LL MOV R3,#0 INC R0 CJNE R0,#34H,LL ;----------------------------- N1:INC R2 CJNE R2,#30,L1 RET END 我想知道我編譯錯的那部份出了什麼問題...再來我做的這個是8051單晶片紅外線控制馬達 現在大致上都ok就剩下想讓他利用比較來做出分段這部份出問題而已 不知道有哪位高手可以幫忙解決??? 拜託...因為專題製作快結束了!!! 老師已經下通碟...而我又卡住!!! |
莊聖
一般會員 發表:4 回覆:8 積分:2 註冊:2009-04-07 發送簡訊給我 |
SUB R5,DEA(從這行開始到jne那裡我編譯時出了錯誤!!!)
CMP R4,21 JNE M SUB R5,DEA (這裡是一樣的從這到ja的時候出問題!!!) CMP R4,21 JA MADA2 這是我錯的地方 ===================引 用 莊聖 文 章=================== 各位前輩...最近我做專題做到一個困點 現在需要去使用到比較指令..可是卻發現比較指令編譯時出錯 以下是我的程式↓ ;decode C0 C1 C2 C3 ;check C2 CODE_K1EQU 01H CODE_K2EQU 02H CODE_K3EQU 03H CODE_K4EQU 04H ;------------------------------- IRCOMEQU 30H COMEQU 32H ;------------------------------- TSEQU 20 DEAEQU 9 IRINEQU P3.2 PULEQU P1.7 PUREQU P1.6 ;------------------------------- ORG 0H JMP BEGIN ;------------------------------- BEGIN: mov R1,DEA CLR PUR CLR PUL SETB IRIN LOOP: MOV R0,#IRCOM CALL IR_IN CALL OP JMP LOOP ;------------------------------- pass: MOV R4,21 mov R5,21 INC DEA SUB R5,DEA(從這行開始到jne那裡我編譯時出了錯誤!!!) CMP R4,21 JNE M ;------------------------------- pass2: MOV R4,21 MOV R5,21 DEC DEA SUB R5,DEA (這裡是一樣的從這到ja的時候出問題!!!) CMP R4,21 JA MADA2 ;------------------------------- PU_BACK: CLR PUL MOV R2,#DEA A1:CALL DEL DJNZ R2,A1 CLR PUL MOV R2,#DEA A2:CALL DEL DJNZ R2,A2 RET ;-------------------------------- PU_FOR: CLR PUL MOV R1,#DEA B1:CALL DEL DJNZ R1,B1 CLR PUL MOV R1,#DEA B2:CALL DEL DJNZ R1,B2 RET ;------------------------------- PU_BACK1: CLR PUR MOV R2,#DEA Y1:CALL DEL DJNZ R2,Y1 CLR PUR MOV R2,#DEA Y2:CALL DEL DJNZ R2,Y2 RET ;-------------------------------- PU_FOR1: CLR PUR MOV R1,#DEA YT1:CALL DEL DJNZ R1,YT1 CLR PUR MOV R1,#DEA YT2:CALL DEL DJNZ R1,YT2 RET ;------------------------------- M: MOV R3,#TS Z1:CALL PU_FOR DJNZ R3,Z1 RET ;------------------------------- MADA2: MOV R3,#TS E1:CALL PU_BACK DJNZ R3,E1 RET ;------------------------------- MADA3: MOV R3,#TS PQ1:CALL PU_FOR1 DJNZ R3,PQ1 RET ;------------------------------- MADA4: MOV R3,#TS MA1:CALL PU_BACK1 DJNZ R3,MA1 RET ;------------------------------- DEL: MOV R5,#1 DELAY1: MOV R6,#2 F1:MOV R7,#17 DJNZ R7,$ DJNZ R6,F1 DJNZ R5,DELAY1 RET ;------------------------------ OP: MOV A,COM CJNE A,#CODE_K1,H1 CALL pass JMP OP H1:MOV A,COM CJNE A,#CODE_K2,H2 CALL pass2 RET H2:MOV A,COM CJNE A,#CODE_K3,H3 CALL pass RET H3:MOV A,COM CJNE A,#CODE_K4,H4 CALL pass2 JMP OP H4: JMP OP ;------------------------------ IR_IN: I1:JNB IRIN,I2 JMP I1 I2:MOV R4,#20 I20:CALL DEL DJNZ R4,I20 JB IRIN,I1 I21:JB IRIN,I3 CALL DEL JMP I21 I3:MOV R3,#0 LL:JNB IRIN,I4 CALL DEL JMP LL I4:JB IRIN,I5 CALL DEL JMP I4 I5:MOV R2,#0 L1:CALL DEL JB IRIN,N1 MOV A,#8 CLR C SUBB A,R2 MOV A,@R0 RRC A MOV @R0,A INC R3 CJNE R3,#8,LL MOV R3,#0 INC R0 CJNE R0,#34H,LL ;----------------------------- N1:INC R2 CJNE R2,#30,L1 RET END 我想知道我編譯錯的那部份出了什麼問題...再來我做的這個是8051單晶片紅外線控制馬達 現在大致上都ok就剩下想讓他利用比較來做出分段這部份出問題而已 不知道有哪位高手可以幫忙解決??? 拜託...因為專題製作快結束了!!! 老師已經下通碟...而我又卡住!!! |
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
莊聖
一般會員 發表:4 回覆:8 積分:2 註冊:2009-04-07 發送簡訊給我 |
|
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
|
莊聖
一般會員 發表:4 回覆:8 積分:2 註冊:2009-04-07 發送簡訊給我 |
;decode C0 C1 C2 C3
;check C2 CODE_K1 EQU 01H CODE_K2 EQU 02H CODE_K3 EQU 03H CODE_K4 EQU 04H ;------------------------------- IRCOM EQU 30H COM EQU 32H ;------------------------------- TS EQU 40 DEA EQU 9 IRIN EQU P3.2 PUL EQU P1.7 PUR EQU P1.6 ;------------------------------- ORG 0000H JMP BEGIN ;------------------------------- BEGIN: CLR PUR CLR PUL SETB IRIN LOOP: MOV R0,#IRCOM CALL IR CALL OP JMP LOOP ;------------------------------- pass: INC DEA MOV A,#DEA CJNE A,#21,M2 RET ;------------------------------- pass2: DEC DEA MOV A,#DEA CJNE A,#9,M2 RET ;------------------------------- M2: MOV R3,#TS E1: CALL PU_BACK DJNZ R3,E1 RET ;------------------------------- MADA3: MOV R3,#TS PQ1: CALL PU_FOR1 DJNZ R3,PQ1 RET ;------------------------------- MADA4: MOV R3,#TS MA1: CALL PU_BACK1 DJNZ R3,MA1 RET ;------------------------------- PU_BACK: SETB PUL MOV R2,#DEA A1: CALL DEL DJNZ R2,A1 CLR PUL MOV R2,#(200-DEA) A2: CALL DEL DJNZ R2,A2 RET ;-------------------------------- PU_FOR: SETB PUL MOV R1,#DEA B1: CALL DEL DJNZ R1,B1 CLR PUL MOV R1,#(200-DEA) B2: CALL DEL DJNZ R1,B2 RET ;------------------------------- PU_BACK1: SETB PUR MOV R2,#DEA Y1: CALL DEL DJNZ R2,Y1 CLR PUR MOV R2,#(200-DEA) Y2: CALL DEL DJNZ R2,Y2 RET ;-------------------------------- PU_FOR1: SETB PUR MOV R1,#DEA YT1: CALL DEL DJNZ R1,YT1 CLR PUR MOV R1,#(200-DEA) YT2: CALL DEL DJNZ R1,YT2 RET ;------------------------------- M: MOV R3,#TS Z1: CALL PU_FOR DJNZ R3,Z1 RET DEL: MOV R5,#1 DELAY1: MOV R6,#2 F1: MOV R7,#17 DJNZ R7,$ DJNZ R6,F1 DJNZ R5,DELAY1 RET ;------------------------------ OP: MOV A,COM CJNE A,#CODE_K1,H1 CALL pass RET H1: MOV A,COM CJNE A,#CODE_K2,H2 CALL pass2 RET H2: MOV A,COM CJNE A,#CODE_K3,H3 CALL pass RET H3: MOV A,COM CJNE A,#CODE_K4,H4 CALL pass2 JMP OP H4: JMP OP ;------------------------------ IR: I1: JNB IRIN,I2 JMP I1 I2: MOV R4,#20 I20: CALL DEL DJNZ R4,I20 JB IRIN,I1 I21: JB IRIN,I3 CALL DEL JMP I21 I3: MOV R3,#0 LL: JNB IRIN,I4 CALL DEL JMP LL I4: JB IRIN,I5 CALL DEL JMP I4 I5: MOV R2,#0 L1: CALL DEL JB IRIN,N1 MOV A,#8 CLR C SUBB A,R2 MOV A,@R0 RRC A MOV @R0,A INC R3 CJNE R3,#8,LL MOV R3,#0 INC R0 CJNE R0,#34H,LL ;----------------------------- N1: INC R2 CJNE R2,#30,L1 RET END 上面是我改過的程式碼.這次在裡面添加了加減法功能..編譯之後沒有錯誤!!! 可是不知道為什麼馬達就是沒動作.... 詢問過老師他說語意錯誤...我不是很瞭解 所以在上來問各位高手...可以告訴我 這次的錯誤是哪裡????
編輯記錄
莊聖 重新編輯於 2009-11-29 01:17:41, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |