Assembly: 汇编语言中Segment段的定义语法

起因:

从最简单的demo开始学习Assembly,按照书上的代码,原原本本的敲了一遍,虽然有了正确的结果,但却报了一个 warning (如下). Assembler: 汇编语言中Segment段的定义语法_解决方案
源代码(Source Code)如下:
Assembler: 汇编语言中Segment段的定义语法_保留字_02

warning 的大致意思是说,将汇编语言的 保留字 作为 变量符号 使用!

baidu之后找到解决方案,将栈字段如下修改即可:

stacksg SEGMENT stack
    db 1024 dup(?)
stacksg ends

warning 消失,但此时我产生了疑问,那就是 SEGMENT段定义语法完整格式 到底是什么呢?
然而,baidu一番没有任何相关的完整的文章,用了小飞机之后,终于找到了Assembly language的说明文档:
Assembler: 汇编语言中Segment段的定义语法_解决方案_03
网址参见文末 Refences;

Segment 段定义语法:

segname SEGMENT class 〚relocation 〚alignment〛〛

segname : 段名称,段名相当于标号, 代表 段地址
SEGMENT : 汇编语言中的 段标识符
class :
basic class(类) 指定了 segment段 对应的内存空间,并被linker(链接器) 用于连接所有属于那个class(类)的段。
Assembler: 汇编语言中Segment段的定义语法_assembler_04
User-Defined Classes
用户定义 class 可以访问与 basic class 名称相同的地址空间,但具有更大的灵活性,并且可以更精细的控制 程序段 program segment.

relocation :
指定linker(链接器)如何重定位该 段segment .

Assembler: 汇编语言中Segment段的定义语法_标识符_05

alignment :
对齐 关键字是可选的,并且可以指定linker(链接器) 分配 segment 的方式.

Assembler: 汇编语言中Segment段的定义语法_保留字_06

详情请参见: https://www.keil.com/support/man/docs/a51/a51_st_segment.htm

References

  1. https://www.keil.com/support/man/docs/a51/a51_st_segment.htm
  2. javascript:void(0)
  3. https://www.tutorialspoint.com/assembly_programming/assembly_memory_segments.htm