Re: [問題] 請問各位先進一個組合bit的問題

看板ASM (組合語言)作者 (我愛ASM)時間17年前 (2007/07/11 01:10), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/5 (看更多)
※ 引述《ck1362 (單晶片控制)》之銘言: : 接著把計時的時間(TH0與TL0)給輸出至七段顯示器 [略] : → ck1362:恩...我的意思是我現在可能有一筆16bit的資料,但是8051的暫 07/10 23:09 : → ck1362:器是8bit,這樣我無法使用一些邏輯運算或是搬移的指令,我是 07/10 23:11 : → ck1362:有想過自定義出一個16bit的暫存器,可是我無法使用指令來處 07/10 23:12 : → ck1362:理這筆資料了XD 07/10 23:14 : → ck1362:恩,8051只能處理8bit的資料,而我現在要把TH0與TL0兩個8bit 07/11 00:11 : → ck1362:的值給組合成16Bit的值,但是我又必須對這16bit的值作處理 07/11 00:12 : → ck1362:所以不知道該如何下手@@ 07/11 00:14 你應該是想說把TH0和TL0存在RAM 空間上,然後透過四則運算 去算出每個七段的值。我不知道你的七段顯示有幾位。不過除 非是當場邊算邊顯示,不然每個七段顯示的值都應會佔到至少 4個bits,或是偷懶直接用8bits存。那你的四則運算就要自己 寫。 例如32位元除法:你可以改成16位元版本,意思是一樣的.... 這是之前參考8051單晶片 徹底研究--基礎篇 後面的程式碼, 不過很不幸書上的code有錯,下面是後來自己修正過的,雖然 有Mail給旗標請他們勘誤,不過新刷的書還是沒修正...XD 裡面還會呼叫一個SUB32,他是一個32位元減法的副程式,減法 比較簡單我就不PO了.... ;32bits Divide ;BUF:12Bytes ;BUF[3]BUF[2]BUF[1]BUF[0] = BUF[3]BUF[2]BUF[1]BUF[0] / BUF[11]BUF[10]BUF[9]BUF[8] ;Work Area:BUF[7]BUF[6]BUF[5]BUF[4] ;Using reg R0,R1,R2,R3 DIV32: MOV R1,#(BUF+4) CALL CIDM4 ;清除Work Area MOV R3,#32 ;SHIFT COUNT CLR C F6: MOV R1,#BUF MOV R2,#(BUF+4) F7: MOV A,@R1 RLC A MOV @R1,A DJNZ R2,F7 MOV R0,#(BUF+7) MOV R1,#(BUF+11) MOV R2,#BUF CALL IDC JC F8 MOV R0,#(BUF+4) MOV R1,#(BUF+8) CALL SUB32 F8: CPL C DJNZ R3,F6 MOV R1,#BUF MOV R2,#BUF F9: MOV A,@R1 INC R1 DJNZ R2,F9 RET -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.132.23.74 ※ 編輯: MasterChang 來自: 140.132.23.74 (07/11 01:14)

10/26 23:49, , 1F
其實他有更正…在他之後出的書裡面= =
10/26 23:49, 1F
文章代碼(AID): #16axrnMT (ASM)
文章代碼(AID): #16axrnMT (ASM)