楼主要知道单片机的程序存储区和数据存储区是分开的,独立编址。
楼主所述的橡桥这个程序全部是在程序存储区里存放的!
QA1D5: DB 7AH, 0CH, 79H,0C6H, 7BH, 01H, 7DH, 01H
QA1DD: DB 8BH, 61H, 8AH, 62H, 89H, 63H,0E4H,0FFH
QA1E5: DB 0EFH,0C3H, 9DH, 50H, 25H,0ABH, 30H,0AAH
QA1ED: DB 31H,0A9H, 32H, 12H, 63H, 57H,0ABH, 61H
QA1F5: DB 0AAH, 62H,0A9H, 63H, 8FH, 82H, 75H, 83H
QA1FD: DB 00H, 12H, 64H, 04H, 74H, 01H, 25H, 32H
QA205: DB 0F5H, 32H,0E4H, 35H, 31H,0F5H, 31H, 0FH
前头是行号,后头是数据。这些数据是在程序存储区里的 !!前辈说错了。
分布是这样:QA1D5:标志首地址,所以第一个数据地址是QA1D5,但QA1D5只是一个标记,至于具体是多少,要根据编译器把所有汇编语言翻译成机器语言后安排。DB是双字节的意思,所以一个数据占两个字节,实际存放是这样:
00H 31H 00H 0A9H ..... (高位补零)此判
程序区的数据是不能更改的,烧进去就永远在里面了。
单片机里立即寻址、森如改查表指令都是对程序区的数进行的。
ANL 0D9H,#0BFH
#0FBH是立即数,所以放在程序存储器里,是烧进去的,变不了,9DH是数据存储器的地址,假如9DH里放的数是F3H,就是BFH和F3H与运算,结果是B3H,放到9DH里。
MOV 5AH,SP
Sp是一个数据寄存器,存放的是堆栈的地址。此句意思是把堆栈的地址送给数据存储区地址为5AH的寄存器里。
刚开始接触DSP,谈谈我的看法。以F2812为例,物理上的存储区是连续的,程序与数据都要存储在物理没宴介质上。然后把数明岩据总线与程序总线分开,好处就是可以同时完成数据与程序枯槐银的 *** 作,也就是说51至少需要两个时钟周期完成的工作,DSP可以同时完成。不言而喻,处理速度得以提升。对于普林斯顿架构,这种情况不会发生:数据区和程序区是分隔的总线,即使地址相同实际上也位于不同慧答的空间。对于哈佛型架构,这种情况很常见,并且假定程序员对此滑碧毕心知肚信芹明,例如在RAM中跑程序以求获得更高的运行速度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)