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 个修改的文件
包含
22 行增加
和
28 行删除
+22
-28
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
+1
-1
ram.lst
ram.lst
+1
-1
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";
const
char
*
sp_inc_keyword
=
"sp_inc"
;
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_inc_main_memory_keyword
=
"[pc+]"
;
// 读出PC指向内存单元的值,同时允许PC加1
const
char
*
mar_main_memory_keyword
=
"[mar]"
;
const
char
*
mar_extern_memory_keyword
=
"<mar>"
;
const
char
*
delimit_char
=
"
\n\t\r
"
;
// 需要忽略的空白字符
...
...
@@ -148,15 +142,19 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
{
{
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_sub_keyword
,
&
a_register_keyword
,
0x86e4ffef
}
// path alu_sub, a
ff ff fe 91
,{
&
alu_add_keyword
,
&
a_register_keyword
,
0x99e4ffef
}
// path alu_add, a
,{
&
alu_sub_keyword
,
&
a_register_keyword
,
0x86e4ffef
}
// path alu_sub, a
,{
&
alu_or_keyword
,
&
a_register_keyword
,
0xbee4ffef
}
// path alu_or, a
,{
&
alu_and_keyword
,
&
a_register_keyword
,
0xbbe4ffef
}
// path alu_and, a
,{
&
alu_adc_keyword
,
&
a_register_keyword
,
0x89e4ffef
}
// path alu_adc, 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_rcr_keyword
,
&
a_register_keyword
,
0x90e5ffef
}
// path alu_rcr, a
,{
&
alu_rcl_keyword
,
&
a_register_keyword
,
0x90e6ffef
}
// path alu_rcl, a
...
...
@@ -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
,
&
mar_main_memory_keyword
,
0xd0f4fbed
}
// path a, [mar] 将a寄存器数据写入地址寄存器指向的内存
,{
&
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]
,{
&
pc_main_memory_keyword
,
&
pc_register_keyword
,
0xfff96f
e
f
}
// path [pc], pc
,{
&
pc_inc_main_memory_keyword
,
&
pc_register_keyword
,
0xfff96fff
}
// path [+pc], pc 读出PC指向主存单元的内容,同时允许PC加1,主要用在jz和jc指令中
,{
&
pc_main_memory_keyword
,
&
pc_register_keyword
,
0xfff96f
f
f
}
// path [pc], pc
,{
&
pc_register_keyword
,
&
sp_register_keyword
,
0xfff3feef
}
// path pc, sp
,{
&
ia_register_keyword
,
&
mar_register_keyword
,
0xfff1f7ef
}
// path ia, mar
,{
&
pc_register_keyword
,
&
mar_register_keyword
,
0xfff3f7ef
}
// path pc, mar
,{
&
rin_register_keyword
,
&
a_register_keyword
,
0xbff0ffef
}
// path rin, a
,{
&
a_register_keyword
,
&
rout_register_keyword
,
0xd0f4ffee
}
// path a, rout
,{
&
mar_main_memory_keyword
,
&
pc_register_keyword
,
0xfff9ebef
}
// 从地址寄存器指定的内存单元读数据到程序计数器pc
,{
&
pc_main_memory_keyword
,
&
sp_register_keyword
,
0xfff97eef
}
// path [pc], sp
执行后pc应加1指向下一条指令
,{
&
mar_main_memory_keyword
,
&
pc_register_keyword
,
0xfff9ebef
}
//
path [mar],pc
从地址寄存器指定的内存单元读数据到程序计数器pc
,{
&
pc_main_memory_keyword
,
&
sp_register_keyword
,
0xfff97eef
}
// path [pc], sp
,{
&
sp_register_keyword
,
&
mar_register_keyword
,
0xfff2f7ef
}
// path sp, mar
,{
&
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
,{
&
csp_counter_keyword
,
&
mar_register_keyword
,
0xfff8f7ef
}
// path csp, mar
...
...
@@ -197,14 +195,10 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
,{
&
sp_inc_keyword
,
&
csp_counter_keyword
,
0xffffffe7
}
// path sp_inc, 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
,{
&
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
mov
r0
,
16
;将立即数16存入寄存器r0
mov
r0
,
16
;将立即数16传送到寄存器r0
mov
a
,
num
;将标号num指定的存储单元内容复制到累加器a中
add
a
,
r0
;将累加器a与寄存器r0相加,结果写回a中
...
...
ram.lst
浏览文件 @
ca51ad2a
0001 ; 示例程序
0002
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中
0006 04 10 add a, r0 ;将累加器a与寄存器r0相加,结果写回a中
0007
...
...
rom.lst
浏览文件 @
ca51ad2a
...
...
@@ -311,14 +311,14 @@
0311
0312 ; jc symbol
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
0316
0317 50C FF FF FF FF dup 5, null
0318
0319 ; jz symbol
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
0323
0324 52C FF FF FF FF dup 5, null
...
...
@@ -328,7 +328,7 @@
0328
0329 ; jmp symbol
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
0333
0334 56C FF FF FF FF dup 5, null
...
...
rom.rxm
浏览文件 @
ca51ad2a
没有这种文件类型的预览
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论