打印

跳转是不是也要分配堆栈保护数据?

[复制链接]
1868|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
战地记者|  楼主 | 2007-1-17 14:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
其中我对上面的
这几句始终不能理解:
开始A=0
LOOP:  POP A
        MOVX @DPTR,A
        INC  A
        PUSH A
        XRL A,#0FFH      //异或的功能是什么啊;   是不停从0检测到255??????                
        JNZ CESHI 

相关帖子

沙发
战地记者|  楼主 | 2007-1-17 14:51 | 只看该作者

别笑俺啊 有问就问 虽然初级了点

使用特权

评论回复
板凳
computer00| | 2007-1-17 15:01 | 只看该作者

不用。跳转又不是函数调用.

使用特权

评论回复
地板
lanmp| | 2007-1-17 15:05 | 只看该作者

不用

除非你还要跳回来继续

使用特权

评论回复
5
战地记者|  楼主 | 2007-1-17 15:13 | 只看该作者

知道了,其实我原来也一直认为不会

知道了,其实我原来也一直认为不会,只不过今天看别人一段程序,里面既没有函数调用也没中断,只有几个跳转,却来了一大堆PUSH和POP,所以才问问!

使用特权

评论回复
6
战地记者|  楼主 | 2007-1-17 15:37 | 只看该作者

这段程序没读懂,谁有空哈哈考虑帮我看看哈

ORG     00H                                   
        SJMP START
START:  MOV SP,#5FH
        MOV DPTR,#7FFFH   
 MAIN:  MOV R0,#2
        MOV A,#00H
        PUSH A
CESHI:  JNB  P3.2,LOOP                         
        AJMP BACK
 LOOP:  POP A
        MOVX @DPTR,A
        INC  A
        PUSH A
        XRL A,#0FFH                       
        JNZ CESHI               
 BACK:  JNB  P3.2,FAI                          
        DJNZ R0,DECI
        AJMP AVE
  FAI:  MOV  A,#00H
        PUSH A
        AJMP LOOP
 DECI:  POP A
        DEC A
        CJNE A,#00H,NIG
        PUSH A
        AJMP LOOP
  NIG:  MOVX @DPTR,A                           
        PUSH A
        JNB  P3.2,ADJUST
        AJMP DECI
ADJUST: POP A
        MOV R1,A
        AJMP CESHI
   AVE: MOV R7,#10
        AJMP DELAY
 LOOP1: MOV  A,R1                              
        MOV  B,#2
        DIV  AB
        MOVX @DPTR,A
 JB P3.2,$
        PUSH A
        MOV R0,#2
        AJMP CESHI
DELAY:                                         ;延时子程序
 A1:    MOV R6,#100
 A2:    MOV R5,#200
 A3:    NOP
        NOP
        NOP
        DJNZ R5,A3
        DJNZ R6,A2
        DJNZ R7,A1
        AJMP LOOP1
跳转来跳转去,我都不知道A里面存了什么宝贝?
头晕~~~~~~~谁帮我分析,以后见你贴我就狂顶~~~~~~~~~~~~~~~~哈哈

使用特权

评论回复
7
lixun00| | 2007-1-17 15:57 | 只看该作者

你自己画个流程图,就清楚了

使用特权

评论回复
8
战地记者|  楼主 | 2007-1-17 21:53 | 只看该作者

我试过了

其中我对上面的
这几句始终不能理解:
开始A=0
LOOP:  POP A
        MOVX @DPTR,A
        INC  A
        PUSH A
        XRL A,#0FFH      //异或的功能是什么啊;   是不停从0检测到255??????                
        JNZ CESHI 

DECI:  POP A
        DEC A
        CJNE A,#00H,NIG
        PUSH A
        AJMP LOOP

使用特权

评论回复
9
战地记者|  楼主 | 2007-1-17 21:54 | 只看该作者

11

其中我对上面的
这几句始终不能理解:
开始A=0
LOOP:  POP A
        MOVX @DPTR,A
        INC  A
        PUSH A
        XRL A,#0FFH      //异或的功能是什么啊;   是不停从0检测到255??????                
        JNZ CESHI 

使用特权

评论回复
10
twz8858877| | 2007-1-18 11:07 | 只看该作者

re

程序倒不是很难,具体分析要跟硬件搭配,就是dptr指向的是什么?p3.2输入的是什么?程序主要是根据p3.2状态进行加一或减一并送dptr指向的外设,压栈是为了保存加一或减一后的数以便下次使用。 
XRL A,#0FFH      //异或的功能是什么啊;   是不停从0检测               
JNZ CESHI 
这两句就相当于CJNE A,#0FFH,CESHI

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

487

帖子

1

粉丝