程序如下:
POP DPH
POP DPL
MOV DPTR,#4000H
RL A
MOV B,A
MOVC A,@A+DPTR
PUSH ACC
MOV A,B
INC A
MOVC A,@A+DPTR
PUSH ACC
RET
ORG 4000H
DB 10H,80H,30H,50H,30H,50H
最后(PC)=?,(SP)=?
求具体解释。
对了,执行前有:(A)=02H,(SP)=52H,(51H)=FFH,(52H)=FFH
这个是书上的课后习题,没搞懂原因
单片机的问题: PC的值是不是等于栈指针SP的值?也就是说(PC)=(DPH)+...
DPTR在送#4000H赋值后再未变过。所以:(PC)=(DPH)+(DPL)不成立
看看这道单片机题
而这种变化就体现在SP中值的变化,看图2,SP中的值等于27H不就相当于是一个指针指向27H单元吗?当然在真正的51机中,开始指针所指的位置并非就是数据存放的位置,而是数据存放的前一个位置,比如一开始指针是指向27H单元的,那么第一个数据的位置是28H单元,而不是27H单元,为什么会这样,我们在学...
51单片机的 pc值怎么算?
因为ret指令返回时,出栈的结果是高地址=(52h)=50h;而低地址=(51h)=30h;故最终结果pc值是5030h;
关于单片机的问题
(1)首先该问题是针对51单片机的问题;(2)单片机弹出堆栈是先取内容,在调整指针,即:(sp)=》DPH、DPL、A,sp-1=>sp执行三次。(3)执行步骤为:(42H)->DPH, 42h-1->sp;(41H)->DPL, 41h-1->sp;(40H)->A, 40h-1->sp;(4)因此,(DPH)=60H;(DPL)=70H;(A)=80H;(S...
关于单片机堆栈指针sp变化的问题
为什么不是(SP)=4FH ?应该是4FH。问题二:那50H岂不是没利用到?50H是不用的。复位后,SP=07H。 但是,07H就从来不用于堆栈。第一次压栈,是压入了08H单元。
求汇编中可以互换的指令,高分!满意再加分!
JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值 [2]. 条件转移指令(8条) JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行 JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容...
与中断有关特殊功能寄存器有哪些?
复位时PC = 0000H (2)堆栈指针SP 指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H (3)数据指针DPTR R0、 @R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。 DPTR = DPH + DPL。可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用...
单片机的基本指令有哪些?
需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。 \\x0d\\x0a\\x0d\\x0aPUSH data ;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的...
c51的指针类型
1. 指令指针(PC):用于存储下一条要执行的指令的地址。2. 数据指针(DPTR):用于存储数据地址。C51的数据指针是16位的,可以访问16位的地址空间。3. 堆栈指针(SP):用于存储栈顶地址。C51的堆栈指针是8位的。4. 数据指针的高8位(DPH)和低8位(DPL):DPTR可以拆分为高8位的DPH和低8位...
什么是单片机的特殊功能寄存器
特殊功能寄存器是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM区。它是单片机中最具有特色的部分,现在几乎所有功能的增加和扩展都是通过增加特殊功能寄存器来达到目的的。英文缩写为SFR,是Special Function Register(特殊功能寄存器)的缩写。