Re: [問題] 請教8051指令的問題

看板ASM作者 (ksirf)時間12年前 (2011/10/15 14:22), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
指令長度的規則為A/DPTR/C/Rn/Ri/AB不計算,因這些都有特別的指領支援 例如: mov a, #data 有三個欄位,每個欄位可以用1byte表示,所以為3但a不算所以為2bytes mov a, Rn 有三個欄位,但a, Rn不算所以為1byte INC A 二個欄位,A不算所以為1byte INC DPTR 二個欄位,DPTR不算所以為1byte INC ACC 二個欄位,因ACC不是A,所以算2bytes MOVX A, @DPTR 三個欄位,但A/DPTR不算所以為1BYTE CJNE Rn, #const8, rel 四個欄位,但Rn不算,所以為3byte 特別注意的是 LCALL/ACALL/LJMP/...這些指令 MOV DPTR, #const16 雖然只三個欄位,其中的const16要算二個bytes, 所以指令長度為4-1=3 太久沒寫51了,有錯再請版上高手幫忙指出 ※ 引述《WolfLord (呆呆小狼)》之銘言: : ※ 引述《wcw519 (chenwei)》之銘言: : : MOV A#data 指令長度:2Byte 執行時間:1週期 : : MOV A,Rn 指令長度:1Byte 執行時間:1週期 : : MOV A,direct 指令長度:2Byte 執行時間:1週期 : : MOV A,@Ri 指令長度:1Byte 執行時間:1週期 : : 我想知道這指令長度與執行時間的週期次數是怎麼計算的? : 基本上你指要有這個印象、想法就差不多是這樣了: : 1.標準8051一個M週期要12個Crystal震盪週期(M Cycle) : 2.在CPU裡面的資料移動 1個M Cycle,位元移動2個M Cycle : 3.設定位元、資料(包含清除)1個M Cycle : 4.邏輯演算下,CPU內班資料1個M Cycle,從ROM般資料2個M Cycle, : 從外部般資料3個M Cycle : 5.牽涉位元搬移、移動要2個M Cycle : 6.一般分期條件要2個M Cycle,牽涉間接資料或長跳躍要3個M Cycle : 7.外部資料操作3個M Cycle : 8.乘除法4個M Cycle : 9.16位元操作(DPTR)2個M Cycle : 差不多就是這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.202.170 ※ 編輯: ksirf 來自: 114.43.202.170 (10/15 14:23) ※ 編輯: ksirf 來自: 114.43.202.170 (10/16 12:08)
文章代碼(AID): #1EcIQF59 (ASM)
文章代碼(AID): #1EcIQF59 (ASM)