单片机汇编语言,中断程序执行完后返回后的主程序为什么是30H或50H怎么算的希望专家们帮忙详解一下

能举一个中断程序的例子说明一下吗?

中断返回后,一些寄存器的值大小变化的因素有以下几种:
1、堆栈的出入栈顺序改变
2、服务程序过程中的语句改变追问

好比主程序从0000H开始,中断成后返回主程序地址就变成了30H ,这30H它是怎么算出来的呢能详细说一下吗

追答

那是因为进入中断前程序执行到30H这里了,进入中断前,自动会讲当前的地址压入堆栈。

追问

我想问30h是怎么得出来的中断完成后反回到主程序地址却变成30h是编程序员自己算的吗怎么算

追答

不是程序员计算的,中断返回地址完全是随机的,是靠单片机自己处理的,具体是多少完全取决于进入中断时候程序执行到什么地址。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-25
可能情况:进入中断程序后有没有保护现场(PUSH ACC PUSH PSW),在要出中断程序之前有没有恢复现场(POP PSW POP ACC),有没有设置SP的初始位置等

用汇编语言写单片机程序开头为什么一般都这样:ORG 0000H LJMP START...
ORG 30H 是你程序的代码开始地址,由于30H以前有中断向量入口和寄存器的地址,所以一般用户程序都是从30H开始的。

单片机汇编语言变址寻址?
变址寻址可以方便地访问数组、字符串等数据结构,提高了程序的效率和灵活性。

为什么C语言程序中pc值总是50H?
sp=50H(因为在程序中,sp减了两次,后来又加了两次,在程序最后ret有在返回的时候减了两次,即地址出栈,故最终结果是50h。(51h)=30h;(52h)=50h;因为ret指令返回时,出栈的结果是高地址=(52h)=50h;而低地址=(51h)=30h;故最终结果pc值是5030h;...

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

单片机汇编,将内RAM 30H-50H里的最小数找出来存到内RAM的6FH单元中...
ORG 0100H ;主程序从0100H开始 ; ;主控程序START: MOV R0,#50H ;用R0间接寻址 MOV X,#0FFH ;预先存入一个字节所能装下的最大值LOOP: MOV A,@R0 ;取得一个源数据 CLR C ;为做减法做准备 SUBB A,X ;源数据-X中数据 JNC NUM ;结果大于或等于转移 MOV X,@R0 ;结果小于X中数据,替换NUM: DEC ...

单片机汇编语言
(2000h)=12h,(2001h)=46h,(2002h)=00h,(2003h)=7bh,(2004h)=00h,(2005h)=10h 绝对正确,看看我得唱歌程序就知道了 ;T0中断次数计数寄存器20H;音调长度寄存器30H;音调寄存器31H SPEAKER BIT P2.0 ORG 0000H LJMP START ORG 000BH INC 20H MOV TH0,#0D8H MOV TL0,#0EFH RETI ORG ...

51单片机汇编语言中DEC指令问题:如果30H中为#00H,执行DEC 30H后,30H...
30H中为#00H,执行DEC 30H后,30H地址单元中是什么?--- 0000 0000减一后是1111 1111,也就是0FFH,也就是255。DEC 30H 指令不影响标志位,所以Cy、OV、Ac和P,都不变。只有运算功能的指令、比较指令影响标志位,INC\/DEC 指令是不影响标志位的。呵呵 ...

单片机编程题,用汇编语言 设计子程序,计算RAM 30H~3FH中的和,结果为1...
MOV R0, #30H ;加数首地址 MOV R2, #16 ;共加16次 LOOP:MOV A, R4 ;取来低8位 ADD A, @R0 ;加上 MOV R4, A MOV A, R3 ;取来高8位 ADDC A, #0 ;加上进位 MOV R3, A INC R0 DJNZ R2, LOOP RET E...

单片机汇编语言,求给这个很短程序写一下注释
R0 MOV @R0,2AH INC R0 SETB 00H NEXT: DJNZ R7,LOOP \/\/R7自减1后不为零,则跳转至LOOP JB 00H,START SJMP (20H)=0D3H,(21H)=30H,(22H)=45H,(23H)=82H 后面的分析是一样的 DEC是自减1;SETB是置位 SJMP:短跳转 ...

51单片机汇编程序,将存放在内部RAM起始地址为30H和40H的两个3字节无...
;启动入口 ORG 0000H;复位启动 LJMP START;ORG 0100H;;;主控程序 START:MOV A,30H ADD A,40H MOV 70H,A MOV A,31H ADDC A,41H MOV 71H,A MOV A,32H ADDC A,42H MOV 72H,A ADDC A,#0 MOV 73H,A JMP END;

相似回答
大家正在搜