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

[复制链接]
 楼主| 战地记者 发表于 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 | 显示全部楼层

不用

除非你还要跳回来继续
 楼主| 战地记者 发表于 2007-1-17 15:13 | 显示全部楼层

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

知道了,其实我原来也一直认为不会,只不过今天看别人一段程序,里面既没有函数调用也没中断,只有几个跳转,却来了一大堆PUSH和POP,所以才问问!
 楼主| 战地记者 发表于 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里面存了什么宝贝?
头晕~~~~~~~谁帮我分析,以后见你贴我就狂顶~~~~~~~~~~~~~~~~哈哈
lixun00 发表于 2007-1-17 15:57 | 显示全部楼层

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

 楼主| 战地记者 发表于 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

 楼主| 战地记者 发表于 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 
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

粉丝
快速回复 在线客服 返回列表 返回顶部