STM8S103汇编文档和注意
1、官方文档《STM8 CPU programming manual》介绍了指令和寻址方式
2、辅助类文档,boot loader文档《STM8 bootloader》
3、关于一些实例和伪指令的介绍,网搜《STM8S第1章-第5章》,已下载至本人电脑cpu-stm8s目录下和《asm_lnk_user_manual.pdf》
4、关于一些实际应用,网搜《STM8S-汇编》,已下载至本人电脑cpu-stm8s目录下
5、详细教科书《STM8S系列单片机原理与应用》
6、STVD安装目录下的\asm\ 的文档《asm_lnk_user_manual.pdf》和asmdemo文件夹下的例程
1、EQU和#define的区别?
2、寄存器间接寻址(X),表示X为指针,对标为:PIC的间接寻址,INDF0-2
3、LD和MOV的区别?
LD是和寄存器交互时用
MOV只能和mem交互用
4、如何定义为位变量
COMM_LCD
DS.B 1
#define F_TEST COMM_LCD,#5
其中DS.B必不可少
5、()和[]的区别
两者都是间接寻址(何谓间接寻址即指针)
不过()指的是寄存器间接寻址或者以mem为基址+寄存器的变址寻址 例如:LD A,(X)和LD A,($5000,X)
[]为mem,以存储单元作间址的间接寻址方式是STM8 CPU特有的间接寻址方式 。操作数所在的储存单元的地址存放在00段内另一个存储单元中,16位地址要带后缀.W;24位地址形式带后缀.E 例如LD [$50.W],A,
总结:ld A,[$F5]等价于ld A,(($F5))
6、如何定义查表,且表中存放地址
NEC中DW SEG0_LCD
ST中DC.W?而不是DS.W
7、short mem和long mem
如果定义在0-FF,则为short mem,定义在100后面的变量则为long mem,short mem的指令周期比long mem的指令周期短。
定义的ram0变量,FLAG2:DS.B 1 后面如果LD A,FLAG2则会将FLAG2的地址变为long mem;如果FLAG2.B:DS.B 1则会将FLAG2的地址变为short mem
8、将模块的标号也加上后缀.B但是出现问题,报错"as1 : Error 84: Byte Size label has val > 255! (need WORDS?) 'MAIN_LOOP'
"
9、Label属性、地址模式和segment属性的联系
Labe有3属性:size,relativity和scope,size:B、W(word默认)、L(4字节)
当Label的地址为0x00-0xFF时,既可以作为long mem也可以作为short mem,如果加上.B则作为short mem。
当label的地址其他时,不可以为b
Label的属性为relative 和absolute,常量为absolute,其余为relative,Lable的属性由linker决定,程序员不能显式改变
segmeng的对齐方式有byte、word等,这是说segmeng的边界必须以字节对齐、字对齐或其他方式对齐,
具体参考STVD安装目录下的 asm文件夹下的《asm_lnk_user_manual.pdf》
10、STM8S为大端模式,即高字节存放在低地址,即如果你ADDW X,TMP0_MSB有问题,其中TMP0_MSB是8位的假设值=9,但是X是16位的,将TMP0_MSB时,默认会转换为低字节为0,高字节为TMP0_MSB的值,即ADDW X,0x900
11、查表用LD A,(DIS_TAB,X),其中DIS_TAB为定义的表,X为索引,在flash区定义表格用DC.B、DC.W和DC.L;在ram区定义变量用DS.B,而且千万千万要注意,DS等宏指令不能顶格,前面必须至少一个TAB
STM8S103汇编文档和注意的更多相关文章
- Xamarin技术文档------VS多平台开发
此技术业余时间研究,仅供大家学习参考,不涉及深入研究,有一定开发基础的人员,应该都能较快上手. 一.简介 Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单.Xamarin的产品简 ...
- Sandcastle帮助文档生成器使用介绍
一.软件介绍 Sandcastle是一个管理类库的文档编译器,是用于编译发布组件(Assembly)信息的一个工具,这个工具通过反射和Xslt技术,可以从dll文件及其xml注释(命令行编 ...
- Sandcastle入门:创建C#帮助文档
Sandcastle入门:创建C#帮助文档 今天学到了一个东西:利用vs2005生成的dll/xml来生成帮助文档. 完成这个伟大任务的是Sandcastle,微软推出的类库文档编译工具. 在开始这篇 ...
- 较全的IT方面帮助文档
http://www.shouce.ren/post/d/id/108632 XSLT参考手册-新.CHMhttp://www.shouce.ren/post/d/id/108633 XSL-FO参考 ...
- 魔改——MFC MDI程序 定制 文档模板 运行时全部打开 禁用关闭按钮
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- Sandcastle生成帮助文档
http://www.cnblogs.com/net515/p/3311584.html Sandcastle帮助文档生成器使用介绍 一.软件介绍 Sandcastle是一个管理类库的文档 ...
- 《Java开发学习大纲文档》V7.0
<Java开发学习大纲文档>V7.0简介: 本文档是根据企业开发所需要掌握的知识点大纲进行总结汇编,是Java开发工程师必备知识体系,系统化学习针对性非常强,逻辑分析能力非常清晰;技术方面 ...
- OllyScripts 0.92帮助文档
-------------------------------Olly脚本插件v0.92 制作: SHaG文档汉化:ZMWorm[CCG][TT]E-Mail:TranslationTeam[at]1 ...
- 遇到Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的情况
一.问题及原因 有这样一种调用逻辑:A.exe调用B.dll.现在想要在B的源代码中打断点,从A发起进行调试,却给出了"当前不会命中断点.还没有为该文档加载任何符号"的提示.感觉十 ...
随机推荐
- 利用hexo+github创建个人博客
因为想拥有一个独属于自己的个人博客啊. 安装部署hexo 进入一个安全的目录,cd ~/Desktop 在 GitHub 上新建一个空 repo,repo 名称是「你的GitHub用户名.github ...
- python 3.x 学习笔记16 (队列queue 以及 multiprocessing模块)
1.队列(queue) 用法: import queue q = queue.Queue() #先进先出模式 q.put(1) #存放数据在q里 作用: 1)解耦 2)提高效率 class qu ...
- Java NIO(三)通道
概念 通道(Channel)由java.nio.channels包定义的.channel表示IO源与目标打开的连接,类似流,但不能直接访问数据,只能与Buffer进行交互 通道类似流,但又有不同: 既 ...
- ZBrush 4R7中自定义笔刷
为了便于雕刻,ZBrush®很人性化地设计了自定义笔刷.随着ZBrush软件版本不断更新,功能也在不断完善.只是在笔刷面板ZBrush软件就为用户提供了上百种之多,如果我们想要用某种笔刷,一个个找起来 ...
- Java数据库开发
Nosql数据库使用场景 首先需要确认一个问题,nosql能做什么?在现在的开发领域中nosql可以实现文档存储(BSON.JSON).缓存存储.图像缓存(图像搜索),但是对于nosql的具体应用场景 ...
- 洛谷P1816 忠诚 分块
分块真的是很暴力呀… 暴力查询左端,暴力查询又端点,中间整体部分直接 $O(1)$ 求出. 注意编程细节:belong[i]=(i−1)/block+1,这样可以保证序列被分成这样的: Code: # ...
- Codeforces Round #506 (Div. 3) D-F
Codeforces Round #506 (Div. 3) (中等难度) 自己的做题速度大概只尝试了D题,不过TLE D. Concatenated Multiples 题意 数组a[],长度n,给 ...
- $attr和$listeners is readonly
https://www.jb51.net/article/132371.htm 出现这个问题的原因,主要是因为在使用的时候出现了A组件调用B组件,B组件再调用了C组件.而直接使用了A组件修改C组件的数 ...
- vue 根据下拉框动态切换form的rule
taskCategorySelect (val) { // 任务类别下拉选择 if ( val == 5 ) { this.cameraORgateway = false; // true不可以使用 ...
- 3.如何构建Cython代码
一.与Python不同的是,Cython代码需要进行编译.发生两个阶段 将一个.pyx文件用Cython编译成一个.c文件中,包括Python扩展模块代码 将.c文件使用C编译器编译成.so文件(在w ...