作者ksirf (ksirf)
看板ASM
标题Re: [问题] 请教8051指令的问题
时间Sat Oct 15 14:22:05 2011
指令长度的规则为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)