push+dptr为什么不对

作者&投稿:能昌 (若有异议请与网页底部的电邮联系)

方邓15334274355问: 51单片机的 pc值怎么算? -
荔蒲县克塞回答: A=( 50h ),SP=( 50h ),(51H)=( 30h ),(52H)=(50h ),PC=( 5030h ) pc总是指向下一条指令的首地址的.但是在返回的时候得看堆栈中的数了.上面程序执行完之后: (A)=50H; sp=50H(因为在程序中,sp减了两次,后来又加了两次,在程序最后...

方邓15334274355问: 51单片机中断是否自动PUSH?
荔蒲县克塞回答: 不会,它只会自动把SP保存,PUSH进去,但DPTR A B等是不会的,因为中断不知道会在什么时候来临,所以这三个寄存器也要PUSH

方邓15334274355问: 单片机的指令判断正误 -
荔蒲县克塞回答: MOV @R3,20H ; 错 MOVX R2,@DPTR;错 MOVX A,@DPTR ;对 MOVX A,@A+DPTR;错 POP ACC;对 POP A ;错 PUSH ACC;对 PUSH A ;错 POP R0 ;错 POP 00H ;对 PUSH R2 ;错 PUSH 02H ;对 JZ A,rel;错 JZ rel ; 对 ...

方邓15334274355问: 以下哪一条指令的写法是错误的( ). -
荔蒲县克塞回答:[选项] A. INC DPTR B. DEC A C. MOV R0,#0FEH D. PUSH A

方邓15334274355问: 请帮解释一下单片机程序各步骤 -
荔蒲县克塞回答: POP DPH ;从堆栈中弹出一个8位二进制数到DPH中, POP DPL ;从堆栈中弹出一个8位二进制数到DPL中 MOV DPTR,#4000H ;给DPTR赋值#4000h RL A ; 累加器A的内容左移一位 MOV B,A ; 把累加器 A的内容送到寄存器B中 MOVC A,...

方邓15334274355问: 单片机中MOVC A,@DPTR 这个为什么是错的? 一定要MOVC A,@A+DPTR? -
荔蒲县克塞回答: 这是固定格式,必须是:MOVC A,@A+DPTR

方邓15334274355问: 单片机程序中的修正值 -
荔蒲县克塞回答: 应该是 MOV A,#14H ;修正值送A 才对,14应该是16进制数,正好等于十进制得20,因为PC总指向下一条指令.

方邓15334274355问: mcs51单片机中,dptr和sp分别是()的寄存器.a、dptr和sp均为8位 b、dptr为8 -
荔蒲县克塞回答: 选择A sp是8位的寄存器 汇编语言中SP是堆栈寄存器.堆栈——是一段按照后进先出(LIFO)原则组织起来的连续存储区域.用于程序保存或恢复数据,或用于子程序调用及中断响应时保护与恢复现场.SP是堆栈指针寄存器,存放着当前堆栈栈顶地址. 一般情况下,对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现在指令操作数当中.例如: PUSH AX;累加器AX的内容压栈保存,(SP)=(SP)-2 POP BX;堆栈内保存的累加器AX的内容弹出到BX寄存器中,(SP)=(SP)+2使用PUSH、POP指令使用堆栈,要注意进出栈的匹配,否则将引起不可预期的后果.

方邓15334274355问: 初学汇编:代码中有句:push cx dx,push不是单操作数吗?这样写debug能过,变为:push dx.为什么如此? -
荔蒲县克塞回答: 没看懂你的意思,你的意思是说在debug中push cx dx变成了push dx??首先push确实是单操作的,push cx dx是错误的语法,你是不是在debug中直接写入指令的?那像你那样写的话,你写入push ax bx cx dx也能过,也就是说debug无法检查你这个错误,这是错误的用法,以后等你学习了写源码,就不要使用debug直接写入了


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网