Assembly: 汇编语言中Segment段的定义语法
起因:
从最简单的demo开始学习Assembly,按照书上的代码,原原本本的敲了一遍,虽然有了正确的结果,但却报了一个 warning
(如下).
源代码(Source Code)如下:
warning
的大致意思是说,将汇编语言的 保留字
作为 变量符号 使用!
baidu之后找到解决方案,将栈字段如下修改即可:
stacksg SEGMENT stack
db 1024 dup(?)
stacksg ends
warning
消失,但此时我产生了疑问,那就是 SEGMENT段
的 定义语法完整格式
到底是什么呢?
然而,baidu一番没有任何相关的完整的文章,用了小飞机之后,终于找到了Assembly language的说明文档:
网址参见文末 Refences;
Segment 段定义语法:
segname SEGMENT class 〚relocation 〚alignment〛〛
segname : 段名称
,段名相当于标号, 代表 段地址;
SEGMENT : 汇编语言中的 段标识符
;
class :
basic class(类) 指定了 segment段 对应的内存空间,并被linker(链接器) 用于连接所有属于那个class(类)的段。
User-Defined Classes
用户定义 class 可以访问与 basic class 名称相同的地址空间,但具有更大的灵活性,并且可以更精细的控制 程序段 program segment.
relocation :
指定linker(链接器)如何重定位该 段segment
.
alignment :
对齐 关键字是可选的,并且可以指定linker(链接器) 分配 segment 的方式.
详情请参见: https://www.keil.com/support/man/docs/a51/a51_st_segment.htm
References