Cortex-M3汇编实践分享(原创)

2019-07-21 06:03发布

之前发了个汇编语言编写的工程,里面代码一大堆,但是如果真的直接去啃这份代码相信还是比较麻烦的,而且帖子发过之后反应也不是很大,所以决定把写这个程序的过程也分享出来,图文并茂希望大家有用,算是我在论坛潜水这么久的回报吧。

编写过程中有参考的一些文档也一并上传,今天先奉上第一章内容(后面的还没写
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
31条回答
whsbk
2019-07-26 01:49
学习的动力就是移植NES,但下面的汇编要更换自己开发板的接线方法,完全找不着北,虽然作者已经写了很注释,楼主能帮忙看看假设我要把FC的三个手柄信号线改到PA9,PA10, PA11该怎么做
joy0_W                ;4016  手柄1+选通
;----------------------------------------------------------------------------
        tst r0,#1
        orr lr,#0x01                ;lr最低位置1防止进入arm状态
        bxne lr

        ldr r0,=0x40011408 ; 端口输入数据寄存器(GPIOD_IDR)0x40011408        按键端口
        ldr r0,[r0]                 ;        PD9    11     12    13    14    15设置成的输入          按下为0
                                  ;   key 6     1      2         3           4         5

                        ;        ((右  <<7)|(左  <<6)|(下  <<5)|(上  <<4)|Start<<3)|Select<<2)|(B  <<1)| A   )
                        ;                         5                 3                                                                1                  2                        4        按键编号
       
        lsr r0,r0,#8         ;>>8  只要高8位
        rsb r0,r0,#0xff   ; R0 = #0xff-R0      反向减法?   取反                  nes需要按下为1
                                        ;                        76543210
                                        ;                        54321 6                按键编号
                                        ;                        11111010                8位数据

        and r2,r0,#0x80   ;按键5 在对应位

        and r1,r0,#0x20   ;按键3
        orr r2,r1,lsl#1         ;                        <<1

        and r1,r0,#0x8 ;按键1
        orr r2,r1                ;按键1 在对应位

        and r1,r0,#0x10 ;按键2
        orr r2,r1,lsr#2 ;        >>2

        and r1,r0,#0x40 ;按键4
        orr r2,r1,lsr#6  ;    >>6                 r2是键值
        orr r2,r2,#0x100000                  ;20位表示控制器在位

        str r2,joy0serial
;        orr lr,#0x01                ;lr最低位置1防止进入arm状态
        bx lr

一周热门 更多>