[請益] 8051的程式請教

看板ASM (組合語言)作者 (熱火一哥)時間14年前 (2011/05/28 04:21), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
小弟是組合語言的新手 我想問雖然是作業 但絕對不是叫各位前輩幫我寫 是想請各位幫我看看我寫的程式碼出錯在哪 我真的DEBUG好久了 我覺得有可能是我一開始定義的空間錯了 但是我看教授的上課講義,也找不到哪裡有問題 燒錄程式也沒有顯示ERROR 拜託各位幫個忙看一下了 http://ppt.cc/gQNU <==這是程式流程 以下是我寫的程式碼 ORG 00H NUMBER: DB 58H ;學號末兩碼 DATE: DB 22H ;生日日期 NUMBER2: DB 06H NUMBER3: DB 08H NUMBER4: DB 03H NUMBER5: DB 05H RESULTC: DS 1 RESULTD: DS 1 COMPARE: MOV A,NUMBER MOV B,DATE DIV AB JNZ START1 LJMP START2 START1: MOV A,NUMBER ;A減B SUBB A,DATE ADD A,NUMBER2 ;A減B加6 MOV B,NUMBER3 ;(A減B加6)除8 DIV AB MOV RESULTC,A MOV RESULTD,B MOV R2,RESULTD LJMP DISPLAY START2: MOV A,DATE ;B減A SUBB A,NUMBER ADD A,NUMBER4 ;B減A加3 MOV B,NUMBER5 ;(B減A加3)除5 DIV AB MOV RESULTC,A MOV RESULTD,B MOV R2,RESULTD DISPLAY: MOV DPTR,#TABLE MOV A,RESULTC ;丟入商數 MOVC A,@A+DPTR MOV P1,A ;使七段顯示器顯示數字 ACALL DELAY MOV R1,#FFH MOV P1,R1 ;熄滅 ACALL DELAY DJNZ R2,DISPLAY ;餘數-1不為零的話跳回DISPLAY MOV R1,#00H ;結束後全亮 MOV P1,R1 ACALL DELAY LJMP END DELAY: MOV R5,#200 S1: MOV R6,#100 S2: MOV R7,#50 DJNZ R7,$ ;R7減1,若非0則跳回自己 DJNZ R6,S2 ;R6減1,若非0則跳回S1 DJNZ R5,S1 ;R5減1,若非0則跳回S2 TABLE: DB 01H ; 0 DB 4FH ; 1 DB 12H ; 2 DB 06H ; 3 DB 4CH ; 4 DB 24H ; 5 DB 60H ; 6 DB 0FH ; 7 DB 00H ; 8 DB 04H ; 9 RET END: END 請各位幫幫忙了,感謝!!!! -- █◣ by jimmy508 █▇▅▃▁ ◢██◣ ▇▇▇▇▇▇▇▇▇██◣ ◢▋ █ ◥◣◢◤ ▅SNSD█ █ █ ═╗═╗ ██◥◣◢◤▋▋▍ ▌◢█ ◢◤◥◣ ████ ◢ █ █ █ ║ ║ ██ ◥◤ ▋█ ● ▎▊ █ ║ ═╗║ ▁▁▁▁▁▁▁▁▁▎ ╔╝╔╝ ██ ▋ ◥◤ ▎ 人║ ═╣╠ ╚═╚═ 歡迎搭乘少時車隊,您好,我是 ║ / ║ ,很高興為您服務。 車隊編號 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.238.191

05/28 04:42, , 1F
檢查A>=B 把A-B,C沒有設定就是A>=B C設定就是A<B 不是用
05/28 04:42, 1F

05/28 04:44, , 2F
DIV ,另外,一般DB大多寫在後面,而且應該要宣告區段
05/28 04:44, 2F

05/28 04:45, , 3F
比較不會不小心被編譯器當成CODE
05/28 04:45, 3F

05/28 04:47, , 4F
另外,7BAR的資料這樣寫會被當CODE,CPU會當掉,還有,程
05/28 04:47, 4F

05/28 04:47, , 5F
式結束要寫一個死迴圈避免CPU亂跑EX: SJMP $
05/28 04:47, 5F

05/28 04:49, , 6F
(你的DELAY跟TABLE混在一起,END後面沒定義)
05/28 04:49, 6F

07/01 01:59, , 7F
高手 高手 高高手XD 厲害 一下就挑很多問題出來
07/01 01:59, 7F
文章代碼(AID): #1Du0VQQV (ASM)
文章代碼(AID): #1Du0VQQV (ASM)