1、 计算机组成原理和系统结构 课程设计 班级学号:0137-2-8 学生姓名:李 乐 指导老师:王 森、陈 媛 计算机科学和工程学院 1月 目 录 一、课程设计目标 3 二、模型机设计步骤 3 三、试验装置 4 四、设计题目 4 题目一: 4 题目二: 4 题目三: 4 题目四: 4 五、课程设计心得 4 六、附录 4 附录1(数据通路): 4 附录2(系统连线参考图) 4 附录3 (微指令格式) 42 七、参考文件……………………………………………………………………………………..22
2、 一、课程设计目标 经过对一个简单计算机设计,对计算机基础组成、部件设计、部件间连接、微程序控制器设计、微指令和微程序编制和调试等过程有更深了解,加深对理论课程了解。 二、模型机设计步骤 设计一台完整计算机,大致需按以下次序来考虑: 1. 确定设计目标 确定所设计计算机功效和用途。 2. 确定指令系统 确定数据表示格式、位数、指令编码、类型、需要设计哪些指令及使用寻址方法,并给出具体编码,比如指令操作码,地址码等位数及多种编码含义。 3. 确定总体结构(寄存器、加法器、选择器设置和数据通路设计) 总体结构设计包含
3、确定各部件设置和它们之间数据通路结构。在此基础上,就能够拟出多种信息传输路径,和实现这些传输所需要微命令。 对于部件设置,比如要确定运算器部件采取什么结构,控制器是微程序控制还是硬联控制等。 综合考虑计算机速率、性能价格比、可靠性等要求,设计合理数据通路结构,确定采取何种方案内总线及外总线。数据通路不一样,实施指令所需要操作就不一样,计算机结构也就不一样。 4. 设计指令实施步骤 数据通路确定后,就能够设计指令系统中每条指令实施步骤。 依据指令复杂程度,确定每条指令所需要机器周期数。对于微程序控制计算机,依据总线结构,需考虑哪些微操作能够安排在同一条微指令中,哪些微操作不能安排在
4、同一条微指令中。 5. 确定微程序地址 确定后续微地址形成方法,确定每个微程序地址及分支转移地址。 6. 微指令代码化 依据微指令格式,将微程序步骤中全部微指令代码化。首先写出每个微地址和该地址对应微指令代码(共24位二进制信息),以下表所表示: 微地址 S3 S2 S1 S0 M CN WE A9 A8 A B C UA5…UA0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0
5、 1 1 0 1 1 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 3 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 其中:微地址表示控制存放器地址,后面24位表示微指令。 然后将每个微地址和对应微指令转换成16进制,并写在一行,格式为: $M********,前面2个‘*’表示该微指令在微控制器中地址,后面6个‘*’表示该微指令代码。如上述表中四条
6、微指令写成: $M00018110:表示在控制存放器地址00h处代码是018110h。 $M0101ED82:表示在控制存放器地址01h处代码是01ED82h。 $M0200C048:表示在控制存放器地址02h处代码是00C048h。 $M0300E004:表示在控制存放器地址03h处代码是00E004h。 7. 编写工作程序并代码化 编写测试用工作程序,并写出内存映像,用二进制表示。然后代码化用16进制来表示,格式为:$P****,前面2个‘*’表示该内存地址,后面2个‘*’表示该地址数据。比如: $P0044:表示在内存地址00h处数据是44h。 $P0146:表示在内
7、存地址01h处数据是46h。 8. 联机操作文件建立 为了从PC机下载工作程序和微程序,需要建立联机操作文件,该文件是一般文本文件,扩展名为TXT,可用记事原来建立,要求: a、 测试用工作程序排在文件前面,每个内存地址及代码占一行; b、 微指令代码排在文件后面,每个微地址及微指令代码占一行; 比如,下面是一个试验文件(文件名:sample.txt): $P0044 $P0146 $P0298 $M00018108 $M0101ED82 $M0200C050 9.连接试验线路 依据附录2试验线路图连接试验线路,其中第1题和第2题用图1(简单模型机连线
8、图)连线,第3题和第4题用图2(复杂模型机连线图)连线。 10.下载工作程序和微程序 使用唐全部软件将工作程序和微程序下载到试验箱内存和控制存放器中。其中,自带电源线试验箱用NCMP53软件,开启软件后使用F4[装载]进行下载;外接电源线试验箱用CMPP软件,开启软件后在菜单中选择[转储]/[装载]进行下载。 11.调试 在总调试前,先按功效模块进行组装和分调,因为只有各功效模块工作正常后,才能确保整机正常运行。能够使用控制台命令SWA、SWB不一样取值,或使用联机软件检验内存程序是否正确,微程序是否正确。 当全部功效模块全部调试正常后,进入总调试。能够使用单步微指令方法实施
9、工作程序,也能够直接使用连续方法实施程序。在实施过程中,能够经过联机软件数据通路图查看信息在计算机中传送路径,更有利于掌握数据通路结构。这么也能够直接验证程序和微程序正确性。 假如运行结果不正确,需要返回来修改程序或微程序,每次修改后,需要重新完成第10步,将程序和微程序下载到试验箱中。 三、试验装置 TDN-CM++计算机组成原理教学试验系统一台,排线若干。 四、设计题目 题目一: 1. 试验要求: 设计一台模型计算机,实现下列指令系统,并经过给定工作程序验证上述指令系统。 本设计实现模型机共包含五条机器指令:IN(输入)、ADD(加法)、STA(存数)、OUT(输出)、
10、JMP(无条件转移),其指令格式以下(前4位为操作码): 助记符 机器指令码(二进制) 说明 微程序入口地址 (八进制) IN 00000000 “INPUT DEVICE”中开关状态—>R0 10 (取指令后续微指令默认地址为10) ADD addr 00010000 XXXXXXXX RO+[addr]——>R0 11 STA addr 00100000 XXXXXXXX RO——>[addr] 12 OUT addr 00110000 XXXXXXXX [addr]——>LED 13 JMP addr 01000000 XXXXXXXX
11、 addr——>PC 14 其中IN为单字长(8位),其它为双字长指令,XXXXXXXX为addr对应二进制地址码。 2. 在测试程序装入内存后,机器自动实施控存中00号微指令,产生控制台命令,其步骤以下(01为取指微指令地址): 3. 依据附录2图1(简单模型机连线图)连接试验线路。 4. 本设计工作程序内存映象(装入起始地址00H)以下: 地址(二进制) 内容(二进制) 助记符 说 明 十六进制代码 0000 0000 0000 0000 IN 将输入数据送R0寄存器 0000 0000 0001 0001 000
12、0 ADD [OAH] 0110 0000 0010 0000 1010 RO+[0AH]—>R0 020A 0000 0011 0010 0000 STA [0BH] 0320 0000 0100 0000 1011 R0—>[0BH] 040B 0000 0101 0011 0000 OUT [0BH] 0530 0000 0110 0000 1011 [0BH]—>LED 060B 0000 0111 0100 0000 JMP 01 0740 0000 1000 0000 0001 01H—>PC
13、 0801 0000 1010 0000 0001 输入自定数据 0A01 5. 本设计程序步骤图以下: 6. 微程序(关键ADD部分) 微地址 S3 S2 S1 S0 M CN WE A9 A8 A B C UA5…UA0(后续地址) 十六进制代码 0 3 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0300E004 0 4 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0
14、 0 0 0 0 0 0 1 0 1 0400B005 0 5 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0501A206 0 6 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 06959A01 0 9 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 0901ED83 分析: 程序思想以下:首
15、先将输入数据送R0寄存器,然后送到ALU单元实施ADD操作,加法完成后将结果再送到R0寄存器,然后STA跳转,将R0寄存器数据送到0BH,然后送显示器显示,送显后立即JMP指令回到微程序01步,即继续实施ADD加法,一直循环。 微程序中,当A9=0,A8=0时,选中Y0; 当A9=0,A8=1时,选中Y1; 当A9=1,A8=0时,选中Y2; 当A9=1,A8=1时,选中Y3 微指令解释:指令中S3…CN为全0表示不实施任何运算操作,A9,A8如开始解释表示选择外设,均为1表示选中扩展单元(EX UNIT)Y3,而依据试验
16、接线图可知,Y3表示不做任何操作,A,B,C字段为依据试验线路图中起作用单元,从09开始A,B,C分别为110,110,110表示LDAR,PC-B,LDPC有效(附录图3),依据数据通路图,即是PC->AR,PC并自动+1,UA5…UA0为000011,即下址为下一条微指令地址03H。09实施完后依据下址抵达03,其中 A9,A8为01即是选中Y1,Y1和WE相连表示存放器工作,即RAM->BUS->AR,后续地址为04H。04指令中,A,B,C字段分别为011,000,000表示LDDR2有效,即表示将内存中数据传送到DR2寄存器中,RAM->BUS->DR2,后续地址为05H。05这条指
17、令A,B,C字段为010,001,000,即是LDDR1,RS-B有效,表示叫R0数据传送到DR1寄存器中,R0->DR1,后续地址为06H。06指令既为ADD运算,S3…CN为100101,A,B,C字段为001,101,000,即LDRi,ALU-B逻辑运算单元有效,实施运算操作,将DR1和DR2中数据相加,完成后将结果传送到R0,(DR1)+(DR2)->R0。即完成了一次加法操作。ADD指定完成后有JMP跳转到01H。一直循环进行加法运算, 微指令代码以下: $M00018110 $M0700E00D $M0E00E00F $M15070A01 $M0101ED82
18、 $M08001001 $M0F00A015 $M1600D181 $M0200C048 $M0901ED83 $M1001ED92 $M17070A10 $M0300E004 $M0A01ED87 $M1101ED94 $M18068A11 $M0400B005 $M0B01ED8E $M1200A017 $M0501A206 $M0C01ED96 $M13018001 $M06959A01 $M0D028201 $M1400 7. 测试数据:FEH 结果为:FE->FF->00->01->…->FE->FF->00->… 一直循环,每次加1。
19、 8. 结果分析:ADD实施是不产生进位加法,所以试验结果只是每次在原来数据上加01H。不产生进位加。 题目二: 1. 试验要求: 设计一台模型计算机,实现下列指令系统,并经过下列工作程序验证上述指令系统。 本模型机共包含五条机器指令:IN(输入)、ADD(加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式以下(前4位为操作码): 助记符 机器指令码 说明 微程序入口地址(八进制) IN 00000000 “INPUT DEVICE”中开关状态—>R0 10 (取指令后续微指令默认地址为10) ADC Imm 00010000
20、XXXXXXXX RO+ Imm+cy——>R0 11 STA addr 00100000 XXXXXXXX RO——>[addr] 12 OUT addr 00110000 XXXXXXXX [addr]——>LED 13 JMP addr 01000000 XXXXXXXX addr——>PC 14 其中IN为单字长(8位),其它为双字长指令,XXXXXXXX为addr对应二进制地址码或Imm所对应二进制数据(补码形式)。 2. 连接试验线路在测试程序装入内存后,机器自动实施控存中00号微指令,产生控制台命令,其步骤以下(01为取指微指令地址):
21、 3. 依据附录2图1(简单模型机连线图)连接试验线路。 4. 本设计实现模型机共包含五条机器指令:IN(输入)、ADC(带进位加法)、STA(存数)、OUT(输出)、JMP(无条件转移) 。 本设计工作程序内存映象(装入起始地址00H)以下: 地址(二进制) 内容(二进制) 助记符 说 明 十六进制代码 0000 0000 0000 0000 IN 将输入数据送R0寄存器 0000 0000 0001 0001 0000 ADC O1H 0110 0000 0010 0000 0001 RO+01H+cy—>R0 0201
22、0000 0011 0010 0000 STA [0AH] 0320 0000 0100 0000 1010 R0—>[0AH] 040A 0000 0101 0011 0000 OUT [0AH] 0530 0000 0110 0000 1010 [0AH]—>LED 060A 0000 0111 0100 0000 JMP 01 0740 0000 1000 0000 0001 01H—>PC 0801 0000 1010 0000 0001 输入自定数据 0A01 本设计程序步骤图以下: 5
23、. 微程序解释(关键解释ADC) 微地址 S3 S2 S1 S0 M CN WE A9 A8 A B C UA5…UA0(后续地址) 十六进制代码 0 4 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0400B005 0 5 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0501A206 0 6 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1
24、 0 0 0 0 0 1 06959B41 0 9 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0901ED84 分析: 程序思想以下:首先将输入数据送R0寄存器,然后送ALU单元实施ADC操作,ADC为带进位加法,所以结果是在ADD基础上又多加了一个CY(进位标志),ADC完成后结果送到R0寄存器,然后STA跳转,将R0寄存器数据送到[0AH],然后送显示器显示,送显后立即JMP指令回到微程序01步,即回到ADC继续实施带进位加法,一直循环。 微程序中,当A9=0,A8=0时
25、选中Y0; 当A9=0,A8=1时,选中Y1; 当A9=1,A8=0时,选中Y2; 当A9=1,A8=1时,选中Y3 微指令解释:指令中S3…CN为全0表示不实施任何运算操作,A9,A8表示选择外设,均为1表示选中扩展单元(EX UNIT)Y3,即为不做任何操作,从09开始,A,B,C字段分别为110,110,110表示LDAR,PC-B,LDPC有效(附录3说明),依据数据通路图,即是PC->AR,PC并自动+1,后续地址为04H。 04为送数,A,B,C字段分别为011,000,000表示LDDR2有效,即表示将内存中数据
26、传送到DR2寄存器中,RAM->BUS->DR2,后续地址为05H; 05中A,B,C字段为010,001,000,即是LDDR1,RS-B有效,表示将R0中数据传送到DR1寄存器中,R0->DR1,后续地址为06H; 06指令为ADC加法指令,其中S3…CN为100101,即实施带进位加法运算,A,B,C字段为001,101,101,即为选中LDRi,ALU-B,AR,在ALU单元中将DR1和DR2中数据相加并将结果输出到R0中,同时AR置0,(DR1)+(DR2)->R0,AR=0,后续地址为01H。ADC运算完成。 微指令中cn为控制信号 当cn=1,而且ar=0时,把上次运行结
27、果带入下次运算。 当cn=0,屏蔽上次运行结果,不带入下次运算。 全部微指令代码以下: $M00018110 $M0700E00D $M0D028201 $M13018001 $M0101ED82 $M08001001 $M0E00E00F $M1400 $M0200C048 $M0901ED84 $M0F00A015 $M15070A01 $M0400B005 $M0A01ED87 $M1001ED92 $M1600D181 $M0501A206 $M0B01ED8E $M1101ED94 $M17070A10 $M06959B41 $M0C
28、01ED96 $M1200A017 $M18068A11 6. 测试数据:FEH 结果为:FE->FF->00->02->03->04->…->FF->00->02->… 做循环加法 7. 结果分析:本程序实施是产生进位加法,测试数据中 FF+01后会产生进位,控制信号CN=1,AR=0,把上次运行结果带入下次运算,进位产生01就自动带入到下次运算中,最终结果为00+01=02。 题目三: 1. 试验要求: 设计一台模型计算机,实现下列指令系统,并用指定工作程序验证上述指令系统。 本模型机指令系统及指令格式以下(前4位为操作码): 助记符号 指令格
29、式 功效 微程序入口地址 (八进制) MOV rs,rd 1000 Rs rd Rsàrd 30 ADC rs,rd 1001 Rs rd Rs+rd+cyàrd 31 BZC 00 00 00 00 D 当cy=1或z=1时,DàPC 不然,次序实施 20 (取指令后续微指令默认地址为20) IN rd 0100 01 Rd Input Device àrd 24 OUT rd 0101 10 Rd Rdà Output Device 25 HLT 0110 00 00 停机 26
30、 其中, rs为源寄存器,rd为目标寄存器,并要求: Rs或rd 选定寄存器 00 01 10 R0 R1 R2 2. 连接试验线路在测试程序装入内存后,机器自动实施控存中00号微指令,产生控制台命令,其步骤以下(01为取指微指令地址): 3. 依据附录2图2(复杂模型机连线图)连接试验线路。 4. 本设计实现模型机共包含五条机器指令:IN(输入)、ADC(带进位加法)、MOV(移动)、BZC(条件转移)、OUT(输出)、HLT(停机)。 本设计工作程序内存映象(装入起始地址00H)以下: 地址(二进制) 内容(二进制) 助记符 说
31、明 十六进制代码 0000 0000 0100 0100 IN 将输入数据送R0寄存器 0044 0000 0001 0100 0110 IN 将输入数据送R2寄存器 0146 0000 0010 1001 1000 ADC RO+01H+cy—>R0 0298 0000 0011 1000 0001 MOV R0—>R1 0381 0000 0100 0101 1001 R1—>LED 0459 0000 0101 0000 0000 BZC 0500 0000 0110 0000 0010 02—>D 0602
32、 0000 0111 0110 0000 HLT 停机 0760 5. 本设计程序步骤图以下: 6. 微程序解释(以BZC为例) 微地址 S3 S2 S1 S0 M CN WE A9 A8 A B C UA5…UA0(后续地址) 十六进制代码 0 3 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0300A023 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1
33、1001ED83 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9001 3 0 0 0 0 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 3005DB81 分析: 程序思想以下:此程序是输入两个数据相加,首先将输入一个数到R0寄存器,然后输入另外一个到R2寄存器,完成后将时局送ALU单元实施ADC操作,ADC为带进位加法,所以结果是在ADD基础上又多加了一个CY(进位标志),ADC完成后结果送到R0寄存器,然后
34、MOVE命令将R0中数送到R1,然后送显示器显示,接着BZC跳转,判定是否循环实施,如ADC加法中产生了进位,CY=1,则送显后立即JMP指令回到微程序01步,即回到ADC继续实施带进位加法,一直循环,不然停机。 微程序中,当A9=0,A8=0时,选中Y0; 当A9=0,A8=1时,选中Y1; 当A9=1,A8=0时,选中Y2; 当A9=1,A8=1时,选中Y3 ; 微指令解释:依据步骤图以10H指令开始,A9,A8为1,1即为选中Y3,不做任何操作,A,B,C字段为010,000,011,表示LDAR,PC-B,LDPC有效
35、附录图3说明),即是PC->AR,PC+1,后续地址为03H。 03指令中A9,A8为0,1为选中Y1,Y1和WE相连表示存放器工作,A,B,C字段为010,000,011,表示选中LDDR1和P(3),P(3)为进行判定,若有进位则后续地址为30H,没有则后续地址为20H。 30指令中A,B,C字段为101,101,110表示LOAD,ALU-B,LDPC有效,将DR1中数据输入到PC中,即DR1->BUS->PC,后续地址为01H,继续实施ADC 全部微指令代码以下: $M00018108 $M1001ED83 $M1901A22A $M2D65AB6E $M0101
36、ED82 $M14001001 $M9001 $M3405DB81 $M0200C050 $M15030401 $M230180E4 $M0300A023 $M16018016 $M24018001 $M0400E0A0 $M18019201 $M2C01A42D 7. 测试数据:第一组R0=FEH R2=01H 第二组R0=FFH R2=01H 结果为: 第一组FF 第一组02 8. 结果分析:两组数据关键是有进位和没有进位之间差异,第一组数据FE+01=FF,R0和R1中数据相加后没有产生进位,所以CY=0,Z
37、0输出结果后,BZC指令就会直接跳转到HLT实施停机操作,使程序终止;第二组数据为FF+01,结果为00,产生一个进位,所以CY=1,Z=1,BZC 条件成立,跳转到02继续指令实施;而且ADC会将上次进位带入相加,所以结果是00+01+CY=02,继续实施ADC到BZC时会因为没有产生进位,使程序终止运行。 题目四: 1. 试验要求: 设计一台模型计算机,完成下列指令系统,并编写工作程序验证上述指令系统。 本模型机共设计16条基础指令,其中算术逻辑指令9条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。下表列出了各条指令格式、汇编符号、指令功效。 类型 助
38、记符号 指令格式 功效 微程序入口地址 (八进制) 算术逻辑指令 CLR rd 0111 00 rd 0àrd 27 MOV rs,rd 1000 Rs rd Rsàrd 30 ADC rs,rd 1001 Rs rd Rs+rd+cyàrd 31 SBC rs,rd 1010 Rs rd Rs-rd-cyàrd 32 INC rd 1011 Rd Rd+1àrd 33 AND rs,rd 1100 rs rd Rs∧rdàrd 34 COM rd 1101 Rd rdà
39、rd 35 RRC rs,rd 1110 Rs Rd 36 RLC rs,rd 1111 Rs Rd 37 访存指令 LDA M, D, rd 00 M 00 Rd D Eàrd 40 STA M, D, rd 00 M 01 Rd D RdàE 41 程序控制指令 JMP M,D 00 M 10 00 D EàPC 42 BZC 00 M 11 00 D 当cy=1或z=1时,EàPC 43 输入输出 IN addr, rd 0100 01 Rd
40、 Addràrd 24 OUT addr, rd 0101 10 Rd Rdàaddr 25 其它 HALT 0110 00 00 停机 26 下面对多种指令格式加以说明: (1) 算术逻辑指令 算术逻辑运算指令共9条,用单字节表示,寻址方法采取寄存器直接寻址,格式为: 7 6 5 4 3 2 1 0 OP-CODE Rs rd 其中,OP-CODE为操作码,rs为源寄存器,rd为目标寄存器,并要求: Rs或rd 选定寄存器 00 01 10 R0 R1 R2 (2) 访存指令及程序控制指令 模型机设计两条访存指
41、令,即存数(STA)、取数(LDA),两条转移指令,即无条件转移指令(JMP)、结果为0或有进位转移指令(BZC),指令格式为: 7 6 5 4 3 2 1 0 00 M OP-CODE rd D 其中,OP-CODE为操作码,rd为目标寄存器地址(LDA、STA指令使用),D为位移量(正负均可),M为寻址模式,其定义为: 寻址模式M 有效地址E 说明 微程序入口 00 01 10 11 E=D E=(D) E=(RI)+D E=(PC)+D 直接寻址 间接寻址 RI变址寻址 相对寻址 20 21 22 23 变址寻址寄存器指定为
42、寄存器R2。 (3) 输入/输出指令 输入输出指令均采取单字节指令,其格式以下: 7 6 5 4 3 2 1 0 OP-CODE addr rd 其中,addr=01时,选中“Input Device”中开关组作为输入设备,addr=10时,选中“Output Device”中数码显示作为输出设备。 (4) 停机指令 用于实现停机操作。 2. 连接试验线路在测试程序装入内存后,机器自动实施控存中00号微指令,产生控制台命令,其步骤以下(01为取指微指令地址): 3. 依据附录2图2(复杂模型机连线图)连接试验线路。 4. 本设计实现模型机共包含五条机
43、器指令:IN(输入)、CLR(清零)、ADC(带进位加法)、SUC(带借位减法)、INC(累加1)、AND(逻辑和)、COM(取反)、MOV(移动)、RRC(循环右移)、RLC(循环左移)、BZC(条件转移)、OUT(输出)、HLT(停机)。 本设计工作程序内存映象(装入起始地址00H)以下: 地址(二进制) 内容(二进制) 助记符 说 明 十六进制代码 0000 0000 0100 0100 IN 将输入数据送R0寄存器 0044 0000 0001 0100 0110 IN 将输入数据送R2寄存器 0146 0000 0010 1001 10
44、00 ADC RO+01H+cy—>R0 0298 0000 0011 1000 0001 MOV R0—>R1 0381 0000 0100 1111 1001 RLC 带进位左循环移位R1结果送到R1 04F5 0000 0101 0101 1001 OUT R1—>LED 0559 0000 0110 0000 1100 BZC 060C 0000 0110 0000 0010 02—>D 0702 0000 0111 0110 0000 HLT 停机 0860 5. 本设计程序步骤图以下: 6. 微程序(
45、关键RLC部分) 微地址 S3 S2 S1 S0 M CN WE A9 A8 A B C UA5…UA0(后续地址) 十六进制代码 1 F 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1F318239 3 9 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 3919883A 3 A 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0
46、0 0 0 1 3A019801 分析: 程序思想以下:此程序是输入两个数据相加,并左移一位操作,首先将输入一个数到R0寄存器,然后输入另一个数到R2寄存器,完成后将数送ALU单元实施ADC操作,ADC为带进位加法,所以结果是在ADD基础上又多加了一个CY(进位标志),ADC完成后结果送到R0寄存器,然后MOVE命令将R0中数送到R1,在R1进行一次左移操作(先送数到299,实施一次左移后将数传回)后再将数送存到R1,然后送显示器显示,接着BZC跳转,判定是否循环实施,如ADC加法中产生了进位,CY=1,则送显后立即JMP指令回到微程序01步,即回到ADC继续实施带进位加法,一直循
47、环,如没有产生进位,则停机。 微程序中,当A9=0,A8=0时,选中Y0; 当A9=0,A8=1时,选中Y1; 当A9=1,A8=0时,选中Y2; 当A9=1,A8=1时,选中Y3 微指令解释:ADC加法完成后会实施微地址1FH指令,S3…CN为001100,A,B,C字段为000,001,000即选择RS-B有效,表示将R1数据送到299,后续地址为39H。39H指令中S3…CN为000110,A,B,C字段为000,100,000为299-B有效,实施循环左移运算,后续地址为3AH。3AH指令A,B,C字段为001,100,000表示选中LDR
48、I,299-B有效,将299单元中循环左移后所得结果送到R1,299->R1。至此,RLC指令完成。剩下程序会将结果送显继续实施。 全部微指令代码以下: $M00018108 $M0E01B60F $M1E318237 $M2C01A42D $M3A019801 $M0101ED82 $M0F95EA25 $M1F318239 $M2D65AB6E $M3B070A08 $M0200C050 $M1001ED83 $M9001 $M2E0D9A01 $M3C068A09 $M0300A004 $M1101ED85 $M21028401 $M2F01AA30
49、 $M0400E0A0 $M1201ED8D $M2205DB81 $M300D8171 $M0500E006 $M1301EDA6 $M230180E4 $M31959B41 $M0600A007 $M14001001 $M24018001 $M3A01 $M0700E0A0 $M16018016 $M2595AAA0 $M3301B435 $M0801ED8A $M173D9A01 $M2600A027 $M3405DB81 $M0901ED8C $M1901A22A $M2701BC28 $M35B99B41 $M0A00A03B $M1A01B2
50、2C $M2895EA29 $M360D9A01 $M0B018001 $M1B01A232 $M2995AAA0 $M37298838 $M0C00203C $M1C01A233 $M2A01B42B $M38019801 $M0D00A00E $M1D01A236 $M2B959B41 $M3919883A 7. 测试数据:第一组R0=FFH R2=01H 第二组R0=01H R2=01H 结果为: 第一组R1=01 第二组R1=04 9. 结果分析:两组数据关键是有进位和没有进位之间差异,第一组数据01+0






