迪文K600+ OS 汇编语言支持
迪文官网
为迪文 DGUS K600+ 平台的 OS 汇编语言(.asm 文件)提供 VS Code IDE 级别的语言支持。
语法高亮
- 支持全部 55 条汇编指令及 3 条伪指令(EQU / DB / DW)的关键字高亮
- OS 寄存器(R0-R255)与 DGUS 寄存器(D#)自动着色
- 支持十六进制(0x...)、十进制数字、字符串、注释的语法高亮
- 标签与 EQU 常量的语义高亮
智能补全
- 输入指令助记符时自动弹出补全列表,附带指令格式与说明
- 操作数位置自动提示 EQU 常量和标签符号
- 支持跨文件符号补全
悬停提示
- 鼠标悬停在指令上显示格式、功能描述与使用示例
- 悬停在寄存器上显示寄存器类型与编号
- 悬停在 EQU 常量或标签上显示定义信息
跳转与导航
- 支持跳转到 EQU 常量和标签的定义位置
- 支持查找所有引用(Find All References)
- 标签可点击跳转(Document Link)
- 大纲视图展示 EQU 定义和标签结构
重命名重构
- 支持 EQU 常量和标签的全局重命名,自动更新所有引用位置
代码格式化
使用 Shift+Alt+F 格式化当前文件。
- 标签 / EQU / DB / DW 顶格书写
- 汇编指令(LDWR、MOV 等)缩进 4 个空格
- 指令操作数对齐:指令助记符 + 空格统一宽度,操作数起点对齐
- 连续 EQU 对齐:多行连续 EQU 的
EQU 关键字列对齐,前后至少 4 个空格
- 连续行内注释对齐:多行连续代码行的
; 列对齐
- 注释缩进:独立行注释的缩进跟随下一行代码
- 逗号规范化:逗号后统一一个空格
; 格式化前 → 格式化后
xx equ 1 XX EQU 1
x equ 3 X EQU 3
xxx equ 2 XXX EQU 2
ldwr r20,0x1234 ; load LDWR R20, 0x1234 ; load
mov r0,r10,4 ; copy MOV R0, R10, 4 ; copy
goto main ; jump GOTO MAIN ; jump
诊断验证
- 寄存器范围检查:自动检测超出 R0-R255 范围的寄存器编号
- 参数数量检查:根据指令格式验证操作数数量是否正确
- 寄存器类型检查:验证
R# 位置的参数必须为 OS 寄存器,D# 位置的参数必须为 DGUS 寄存器
- 未定义符号检查:指令中引用的 EQU 常量或标签未定义时报错
支持的指令类别
| 类别 |
指令 |
| 数据装载 |
LDBR, LDWR, LDADR |
| 数据传送 |
MOV, MOVDR, MOVRD, MOVXR, MOVXX, MOVXL, MOVC, MOVA |
| 算术运算 |
ADD, SUB, MAC, SMAC, DIV, INC, DEC, SQRT |
| 逻辑运算 |
AND, OR |
| 数据转换 |
HEXBCD, BCDHEX, ASCHEX, HEXASC, EXP |
| 位操作 |
BITS, BITI |
| 比较跳转 |
CJNE, IJNE, JS, TESTS, GOTO, CALL, RET |
| 串口通信 |
COMSET, COMTXI, RDXLEN, RDXDAT |
| 校验计算 |
CRCA, CRCC, SUMADD, SUMADDC, SUMXOR |
| 系统功能 |
NOP, END, TIME, ERASE, LIBSCH, SCANADD, EXIT, FECEN, FECDE, ADDL14, WRLINE |
配置项
| 设置项 |
说明 |
默认值 |
dwin-asm.ignore |
忽略的文件路径模式(glob) |
[] |
dwin-asm.format.inlineCommentGap |
代码与内联注释 ; 之间的空格数 |
8 |
dwin-asm.format.instructionColumnWidth |
指令助记符 + 空格的总宽度,用于对齐操作数 |
8 |
| |