Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DM1000
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸大学计算机学院
教师群组
赵鹏翀-zpc
DM1000
提交
ca51ad2a
提交
ca51ad2a
1月 18, 2019
创建
作者:
李川
提交者:
李川
1月 18, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改跳转微指令
上级
aa7b47b9
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
26 行增加
和
32 行删除
+26
-32
ALU.dlsche
ALU.dlsche
+0
-0
ALU.dlsche.svg
ALU.dlsche.svg
+0
-0
DM1000.dlsche
DM1000.dlsche
+0
-0
DM1000.dlsche.svg
DM1000.dlsche.svg
+0
-0
PC.dlsche
PC.dlsche
+0
-0
PC.dlsche.svg
PC.dlsche.svg
+0
-0
microasm.c
microasm.c
+15
-21
microasm.exe
microasm.exe
+0
-0
ram.asm
ram.asm
+3
-3
ram.lst
ram.lst
+3
-3
rom.lst
rom.lst
+3
-3
rom.rxm
rom.rxm
+2
-2
没有找到文件。
ALU.dlsche
浏览文件 @
ca51ad2a
没有这种文件类型的预览
ALU.dlsche.svg
浏览文件 @
ca51ad2a
这个 源代码变更 因为 太大 而不能显示。 你可以
浏览blob
。
DM1000.dlsche
浏览文件 @
ca51ad2a
没有这种文件类型的预览
DM1000.dlsche.svg
浏览文件 @
ca51ad2a
这个 源代码变更 因为 太大 而不能显示。 你可以
浏览blob
。
PC.dlsche
浏览文件 @
ca51ad2a
没有这种文件类型的预览
PC.dlsche.svg
浏览文件 @
ca51ad2a
差异被折叠。
点击展开。
microasm.c
浏览文件 @
ca51ad2a
...
@@ -85,15 +85,9 @@ const char* alu_not_keyword = "alu_not";
...
@@ -85,15 +85,9 @@ const char* alu_not_keyword = "alu_not";
const
char
*
sp_inc_keyword
=
"sp_inc"
;
const
char
*
sp_inc_keyword
=
"sp_inc"
;
const
char
*
sp_dec_keyword
=
"sp_dec"
;
const
char
*
sp_dec_keyword
=
"sp_dec"
;
const
char
*
int_number_keyword
=
"int_number"
;
// 中断号
const
char
*
int_ia_keyword
=
"int_ia"
;
const
char
*
int_pc_keyword
=
"[int_pc]"
;
// 访问主存或外设的操作数
// 访问主存或外设的操作数
const
char
*
pc_main_memory_keyword
=
"[pc]"
;
const
char
*
pc_main_memory_keyword
=
"[pc]"
;
const
char
*
pc_inc_main_memory_keyword
=
"[pc+]"
;
// 读出PC指向内存单元的值,同时允许PC加1
const
char
*
mar_main_memory_keyword
=
"[mar]"
;
const
char
*
mar_main_memory_keyword
=
"[mar]"
;
const
char
*
mar_extern_memory_keyword
=
"<mar>"
;
const
char
*
delimit_char
=
"
\n\t\r
"
;
// 需要忽略的空白字符
const
char
*
delimit_char
=
"
\n\t\r
"
;
// 需要忽略的空白字符
...
@@ -148,15 +142,19 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
...
@@ -148,15 +142,19 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
{
{
{
NULL
,
NULL
,
0x0
}
// 未用
{
NULL
,
NULL
,
0x0
}
// 未用
,{
&
pc_main_memory_keyword
,
&
ir_register_keyword
,
0xfff93fef
}
// path [pc], ir ff e3 ff ff
// 注意:在本文档中,所有微指令编码都是从低字节到高字节的顺序编码的。
// 以取指微指令path [pc], ir为例,它的32位编码,从低字节到高字节依次为:[7:0]=ff,[15:8]=f9,[23:16]=3f, [31:24]=ef;
// 而在DM1000中,按照阅读习惯,将高位字节放在前面,低位字节放在后面。
// 因此,在源代码窗口和存储器窗口中显示的是“ef 3f f9 ff”,即微指令编码[31:0]=ef3ff9ff。
,{
&
pc_main_memory_keyword
,
&
ir_register_keyword
,
0xfff93fef
}
// path [pc], ir
,{
&
alu_add_keyword
,
&
a_register_keyword
,
0x99e4ffef
}
// path alu_add, a
ff ff fe 90
,{
&
alu_add_keyword
,
&
a_register_keyword
,
0x99e4ffef
}
// path alu_add, a
,{
&
alu_sub_keyword
,
&
a_register_keyword
,
0x86e4ffef
}
// path alu_sub, a
ff ff fe 91
,{
&
alu_sub_keyword
,
&
a_register_keyword
,
0x86e4ffef
}
// path alu_sub, a
,{
&
alu_or_keyword
,
&
a_register_keyword
,
0xbee4ffef
}
// path alu_or, a
,{
&
alu_or_keyword
,
&
a_register_keyword
,
0xbee4ffef
}
// path alu_or, a
,{
&
alu_and_keyword
,
&
a_register_keyword
,
0xbbe4ffef
}
// path alu_and, a
,{
&
alu_and_keyword
,
&
a_register_keyword
,
0xbbe4ffef
}
// path alu_and, a
,{
&
alu_adc_keyword
,
&
a_register_keyword
,
0x89e4ffef
}
// path alu_adc, a
,{
&
alu_adc_keyword
,
&
a_register_keyword
,
0x89e4ffef
}
// path alu_adc, a
,{
&
alu_sbb_keyword
,
&
a_register_keyword
,
0x96e4ffef
}
// path alu_sbb, a
,{
&
alu_sbb_keyword
,
&
a_register_keyword
,
0x96e4ffef
}
// path alu_sbb, a
,{
&
alu_shr_keyword
,
&
a_register_keyword
,
0x90d5ffef
}
// path alu_shr, a
ff ff fc b7
,{
&
alu_shr_keyword
,
&
a_register_keyword
,
0x90d5ffef
}
// path alu_shr, a
,{
&
alu_shl_keyword
,
&
a_register_keyword
,
0x90d6ffef
}
// path alu_shl, a
,{
&
alu_shl_keyword
,
&
a_register_keyword
,
0x90d6ffef
}
// path alu_shl, a
,{
&
alu_rcr_keyword
,
&
a_register_keyword
,
0x90e5ffef
}
// path alu_rcr, a
,{
&
alu_rcr_keyword
,
&
a_register_keyword
,
0x90e5ffef
}
// path alu_rcr, a
,{
&
alu_rcl_keyword
,
&
a_register_keyword
,
0x90e6ffef
}
// path alu_rcl, a
,{
&
alu_rcl_keyword
,
&
a_register_keyword
,
0x90e6ffef
}
// path alu_rcl, a
...
@@ -173,22 +171,22 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
...
@@ -173,22 +171,22 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
,{
&
a_register_keyword
,
&
rx_register_keyword
,
0xd0b4ffef
}
// path a, rx
,{
&
a_register_keyword
,
&
rx_register_keyword
,
0xd0b4ffef
}
// path a, rx
,{
&
a_register_keyword
,
&
mar_main_memory_keyword
,
0xd0f4fbed
}
// path a, [mar] 将a寄存器数据写入地址寄存器指向的内存
,{
&
a_register_keyword
,
&
mar_main_memory_keyword
,
0xd0f4fbed
}
// path a, [mar] 将a寄存器数据写入地址寄存器指向的内存
,{
&
pc_main_memory_keyword
,
&
rx_register_keyword
,
0xffb97fef
}
// path [pc], rx
,{
&
pc_main_memory_keyword
,
&
rx_register_keyword
,
0xffb97fef
}
// path [pc], rx
,{
&
mar_extern_memory_keyword
,
&
a_register_keyword
,
0xbff97fef
}
// path <mar>, a 从地址寄存器指定的外部设备读数据到a寄存器
,{
&
alu_aout_keyword
,
&
mar_main_memory_keyword
,
0xd0f4fbec
}
// path alu_aout, [mar]
,{
&
alu_aout_keyword
,
&
mar_main_memory_keyword
,
0xd0f4fbec
}
// path alu_aout, [mar]
,{
&
pc_main_memory_keyword
,
&
pc_register_keyword
,
0xfff96f
e
f
}
// path [pc], pc
,{
&
pc_main_memory_keyword
,
&
pc_register_keyword
,
0xfff96f
f
f
}
// path [pc], pc
,{
&
pc_inc_main_memory_keyword
,
&
pc_register_keyword
,
0xfff96fff
}
// path [+pc], pc 读出PC指向主存单元的内容,同时允许PC加1,主要用在jz和jc指令中
,{
&
pc_register_keyword
,
&
sp_register_keyword
,
0xfff3feef
}
// path pc, sp
,{
&
pc_register_keyword
,
&
sp_register_keyword
,
0xfff3feef
}
// path pc, sp
,{
&
ia_register_keyword
,
&
mar_register_keyword
,
0xfff1f7ef
}
// path ia, mar
,{
&
ia_register_keyword
,
&
mar_register_keyword
,
0xfff1f7ef
}
// path ia, mar
,{
&
pc_register_keyword
,
&
mar_register_keyword
,
0xfff3f7ef
}
// path pc, mar
,{
&
pc_register_keyword
,
&
mar_register_keyword
,
0xfff3f7ef
}
// path pc, mar
,{
&
rin_register_keyword
,
&
a_register_keyword
,
0xbff0ffef
}
// path rin, a
,{
&
rin_register_keyword
,
&
a_register_keyword
,
0xbff0ffef
}
// path rin, a
,{
&
a_register_keyword
,
&
rout_register_keyword
,
0xd0f4ffee
}
// path a, rout
,{
&
a_register_keyword
,
&
rout_register_keyword
,
0xd0f4ffee
}
// path a, rout
,{
&
mar_main_memory_keyword
,
&
pc_register_keyword
,
0xfff9ebef
}
// 从地址寄存器指定的内存单元读数据到程序计数器pc
,{
&
mar_main_memory_keyword
,
&
pc_register_keyword
,
0xfff9ebef
}
//
path [mar],pc
从地址寄存器指定的内存单元读数据到程序计数器pc
,{
&
pc_main_memory_keyword
,
&
sp_register_keyword
,
0xfff97eef
}
// path [pc], sp
执行后pc应加1指向下一条指令
,{
&
pc_main_memory_keyword
,
&
sp_register_keyword
,
0xfff97eef
}
// path [pc], sp
,{
&
sp_register_keyword
,
&
mar_register_keyword
,
0xfff2f7ef
}
// path sp, mar
,{
&
sp_register_keyword
,
&
mar_register_keyword
,
0xfff2f7ef
}
// path sp, mar
,{
&
sp_register_keyword
,
&
csp_counter_keyword
,
0xff72ffef
}
// path sp, csp
,{
&
sp_register_keyword
,
&
csp_counter_keyword
,
0xff72ffef
}
// path sp, csp
,{
&
pc_main_memory_keyword
,
&
ia_register_keyword
,
0xfff97feb
}
// path [pc], ia
执行后pc应加1指向下一条指令
,{
&
pc_main_memory_keyword
,
&
ia_register_keyword
,
0xfff97feb
}
// path [pc], ia
,{
&
pc_main_memory_keyword
,
&
asr_register_keyword
,
0xfff97def
}
// path [pc], asr
,{
&
pc_main_memory_keyword
,
&
asr_register_keyword
,
0xfff97def
}
// path [pc], asr
,{
&
csp_counter_keyword
,
&
mar_register_keyword
,
0xfff8f7ef
}
// path csp, mar
,{
&
csp_counter_keyword
,
&
mar_register_keyword
,
0xfff8f7ef
}
// path csp, mar
...
@@ -197,14 +195,10 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
...
@@ -197,14 +195,10 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
,{
&
sp_inc_keyword
,
&
csp_counter_keyword
,
0xffffffe7
}
// path sp_inc, csp
,{
&
sp_inc_keyword
,
&
csp_counter_keyword
,
0xffffffe7
}
// path sp_inc, csp
,{
&
sp_dec_keyword
,
&
csp_counter_keyword
,
0xffffffef
}
// path sp_dec, csp
,{
&
sp_dec_keyword
,
&
csp_counter_keyword
,
0xffffffef
}
// path sp_dec, csp
,{
&
pc_register_keyword
,
&
mar_main_memory_keyword
,
0xfff3fbed
}
// path pc, [mar] 将pc值写入mar指向的
内存
,{
&
pc_register_keyword
,
&
mar_main_memory_keyword
,
0xfff3fbed
}
// path pc, [mar] 将pc值写入mar指向的
存储单元
,{
&
asr_register_keyword
,
&
pc_register_keyword
,
0xfff7efef
}
// path asr, pc
,{
&
asr_register_keyword
,
&
pc_register_keyword
,
0xfff7efef
}
// path asr, pc
,{
&
sp_register_keyword
,
&
asr_register_keyword
,
0xfff2fdef
}
// path sp, asr
,{
&
sp_register_keyword
,
&
asr_register_keyword
,
0xfff2fdef
}
// path sp, asr
,{
&
int_number_keyword
,
&
ia_register_keyword
,
0xfffbffeb
}
// path int_number, ia 将中断号给ia寄存器
,{
&
int_ia_keyword
,
&
pc_register_keyword
,
0xfff1dfef
}
// path int_ia, pc
,{
&
int_pc_keyword
,
&
pc_register_keyword
,
0xfff95fef
}
// path int_pc, pc
};
};
...
...
microasm.exe
浏览文件 @
ca51ad2a
没有这种文件类型的预览
ram.asm
浏览文件 @
ca51ad2a
; 示例程序
; 示例程序
.
text
.
text
mov
r0
,
16
;将立即数16存入寄存器r0
mov
r0
,
16
;将立即数16传送到寄存器r0
mov
a
,
num
;将标号num指定的存储单元内容复制到累加器a中
mov
a
,
num
;将标号num指定的存储单元内容复制到累加器a中
add
a
,
r0
;将累加器a与寄存器r0相加,结果写回a中
add
a
,
r0
;将累加器a与寄存器r0相加,结果写回a中
Endless_Loop
:
Endless_Loop
:
jmp
Endless_Loop
;死循环
jmp
Endless_Loop
;死循环
...
...
ram.lst
浏览文件 @
ca51ad2a
0001 ; 示例程序
0001 ; 示例程序
0002
0002
0003 .text
0003 .text
0004 00 8C 10 mov r0,
16 ;将立即数16存入寄存器r0
0004 00 8C 10 mov r0,
16 ;将立即数16传送到寄存器r0
0005 02 78 07 mov a, num
;将标号num指定的存储单元内容复制到累加器a中
0005 02 78 07 mov a, num ;将标号num指定的存储单元内容复制到累加器a中
0006 04 10 add a, r0
;将累加器a与寄存器r0相加,结果写回a中
0006 04 10 add a, r0 ;将累加器a与寄存器r0相加,结果写回a中
0007
0007
0008 Endless_Loop:
0008 Endless_Loop:
0009 05 AC 05 jmp Endless_Loop ;死循环
0009 05 AC 05 jmp Endless_Loop ;死循环
...
...
rom.lst
浏览文件 @
ca51ad2a
...
@@ -311,14 +311,14 @@
...
@@ -311,14 +311,14 @@
0311
0311
0312 ; jc symbol
0312 ; jc symbol
0313 500 FF FF FF FF inc pc
0313 500 FF FF FF FF inc pc
0314 504
E
F 6F F9 FF path [pc], pc ;将 PC 指定存储单元的内容作为指令地址加载到 PC 中,实现程序跳转
0314 504
F
F 6F F9 FF path [pc], pc ;将 PC 指定存储单元的内容作为指令地址加载到 PC 中,实现程序跳转
0315 508 CF FF FF FF reset upc
0315 508 CF FF FF FF reset upc
0316
0316
0317 50C FF FF FF FF dup 5, null
0317 50C FF FF FF FF dup 5, null
0318
0318
0319 ; jz symbol
0319 ; jz symbol
0320 520 FF FF FF FF inc pc
0320 520 FF FF FF FF inc pc
0321 524
E
F 6F F9 FF path [pc], pc
0321 524
F
F 6F F9 FF path [pc], pc
0322 528 CF FF FF FF reset upc
0322 528 CF FF FF FF reset upc
0323
0323
0324 52C FF FF FF FF dup 5, null
0324 52C FF FF FF FF dup 5, null
...
@@ -328,7 +328,7 @@
...
@@ -328,7 +328,7 @@
0328
0328
0329 ; jmp symbol
0329 ; jmp symbol
0330 560 FF FF FF FF inc pc
0330 560 FF FF FF FF inc pc
0331 564
E
F 6F F9 FF path [pc], pc
0331 564
F
F 6F F9 FF path [pc], pc
0332 568 CF FF FF FF reset upc
0332 568 CF FF FF FF reset upc
0333
0333
0334 56C FF FF FF FF dup 5, null
0334 56C FF FF FF FF dup 5, null
...
...
rom.rxm
浏览文件 @
ca51ad2a
没有这种文件类型的预览
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论