搜索
bottom↓
回复: 8

开始学汇编:IARSTM8第一个汇编,LED闪烁

[复制链接]

出0入0汤圆

发表于 2011-1-23 16:16:25 | 显示全部楼层 |阅读模式
开始学汇编,IARSTM8第一个汇编程序。

IARSTM8新建ASM工程,模板里的启动代码是错误的,需要自己写向量表。
使用与IARSTM8 C语言相同的虚拟寄存器。函数调用寄存器传递规则也参照IAR STM8 C。
(这样汇编,C能够混用,C能调用汇编,汇编也能调用C)
手上没示波器,延时函数延时不准。


#include "proj_incs.h"
//IAR STM8寄存器使用规则:
//A,X,Y,?b0-?b7 草稿寄存器
//?b8-?b15      存储寄存器


        PUBLIC  main

        SECTION `.near_func.text`:CODE:NOROOT(0)
main:
        CLR       A        
        LD        CLK_CKDIVR, A    // 主时钟 = 16MHZ
        
        LD        A, #0x01         //PD0设置成推挽输出
        LD        PD_DDR, A           
        LD        PD_CR1, A                     
        CLR       A
        LD        PD_CR2, A
            
main_loop:
        BRES      PD_ODR, #0x0     //PD0输出0

        LDW       X, #1000         //延时
        CALL      delay_ms

        BSET      PD_ODR, #0x0     //PD0输出1


        LDW       X, #1000         //延时
        CALL      delay_ms
        
        JRA       main_loop      
      

        SECTION `.near_func.text`:CODE:REORDER:NOROOT(2)
        CODE
delay_ms:
        TNZW      X
        JRNE      __delay_ms_2
__delay_ms_0:
        RET
__delay_ms_1:
        TNZW      X
        JREQ      __delay_ms_0
__delay_ms_2:
        DECW      X
        LDW       Y, #0x3d4
__delay_ms_3:
        DECW      Y
        TNZW      Y
        JREQ      __delay_ms_1
        JRA       __delay_ms_3
              

        END

点击此处下载 ourdev_613022IXSDJD.zip(文件大小:63K) (原文件名:stm8_asm.zip)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-1-23 16:54:53 | 显示全部楼层
备忘标记下

出0入0汤圆

发表于 2011-1-23 18:55:58 | 显示全部楼层
你敢发汇编啊,当心被这里的人喷你不懂软件工程哦!

出0入0汤圆

 楼主| 发表于 2011-1-23 19:16:53 | 显示全部楼层
如果不懂软件工程,大家不说,也是不懂。
如果懂软件工程,大家再怎么喷,也还是懂。

出0入85汤圆

发表于 2011-1-23 21:36:14 | 显示全部楼层
非常的好

出0入0汤圆

发表于 2011-1-23 22:19:44 | 显示全部楼层
这东西不常见啊!

出0入0汤圆

发表于 2012-8-16 22:19:21 | 显示全部楼层
学习一下汇编,顶上!

出0入0汤圆

发表于 2017-7-18 09:57:51 | 显示全部楼层
我也正在学STM8的汇编指令,之前也一直用IAR C语言开发,发现明明可以一条指令搞定的东西,C语言居然编译一堆指令出来.比如,我要判断全局变量State的第3位是1还是0,if((State>>3)&0x1),如果用汇编指令
BTJT State,#3,rel;一条就搞定(rel可以是跳转的标号),然面IAR给我编译的是
LD A,State
SRL A
SRL A
SRL A
AND A,#1
CP A,#0x00
JQEQ 06


出0入0汤圆

发表于 2017-7-18 10:30:50 | 显示全部楼层
xiaobo768015 发表于 2017-7-18 09:57
我也正在学STM8的汇编指令,之前也一直用IAR C语言开发,发现明明可以一条指令搞定的东西,C语言居然编译一堆 ...

编译器搞的那一大串汇编是没错的。你自己写的一条指令BTJT这个并不是ARM的标准指令,至少我在cortex-M0的手册里找不到。
RISC是允许用户自定义指令的,你可以理解成define一个宏,然后这个宏可以完成你后面那一大串汇编指令的功能。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-22 05:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表