导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]新手问两个汇编程序问题,内详[zjf3338025]

 *第32558篇: [求助]新手问两个汇编程序问题,内详

  
楼 主:zjf3338025 2005年6月24日17:45
 [求助]新手问两个汇编程序问题,内详
1、函数跳转表
         AREA     Jummp, CODE, READWRITE
         CODE32
 
num  EQU     5
        ENTRY
start
        MOV    R0,  #4                ;初始复制,在程序中r0相当于switch(a)中的a
        MOV    R4,#0               ;r4对应跳转的条目编号
        
        CMP     R0,#num             ;比较入口地址和实际入口数目
        BHS     stop                      ;如果入口大于实际入口数目,程序推出
        ADR     R3, JumpTable

        CMP     R0,#2                   ;是调用func1吗?
        MOVEQ R4,#0
        ;*****其他情况省略
        BL      JumpTableFunc
stop  
        MOV   R0,  #0X18               ;程序结束处理
        LDR    R1, =0X20026
        SWI    0X123456

JumpTableFunc
         LDREQU   pc,[R3,R4,LSL #2] ;跳转到对应处理函数
 
JumpTable
         DCD   func1
         DCD   func2
         DCD   func3
         DCD   func4

func1
         ..............;第一种可能
         MOV   PC,LR
;其他函数定义省略

        END
我的问题:程序中r0相当于switch(a)中的a,划线的指令把R0和表示入口数目的num比较是不是不对?

2、交换

           AREA          Sort,CODE,READONLY
           ENTRY
start    
           [U]LDR             R3,[R0]
           LDR                 R2,[R0,#4][/U]           
           BL                   swap
           [U]LDR             R3,[R0]
           LDR                 R2,[R0,#4][/U]      

stop     
           MOV            R0,  #0X18               ;程序结束处理
           LDR             R1, =0X20026
           SWI            0X123456

swap    
           LDR             R0,=src
           LDR             R3,[R0]
           LDR             R2,[R0,#4]
           STR             R2,[R0]
           LDR             R3,[R0,#4]
           MOV            PC,LR                          ;函数返回
           
           AREA           Array,DATA,READWRTIE
src       DCD             2,4
           END 

问题:划线部分是不是没用处?swap调用前,R0还没初始化啊

以上是看书的时候两点疑惑,我是新手,望大侠指点!
  
           

         


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:不知道哪位大哥有PT2314的详细资料,谢谢

[下一篇主题]:我没耍好max197