




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、东北大学计算机组成原理课程设计报告计算机组成原理课程设计报告班级:计算机班姓名:学号:完成时间:一、课程设计目的1在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3培养综合实践及独立分析、解决问题的能力。二、课程设计的任务针对*年实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在*年的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。3
2、、 课程设计使用的设备(环境)1硬件l*年实验仪lPC机2软件l*年仿真软件4、 课程设计的具体内容(步骤)1详细了解并掌握COP20XX年模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:*年模型机的指令为8位,根据操作的内容,可以有0到2个操作数。每个操作数支持5种寻址方式,包括累加器A寻址,寄存器R0R3寻址,寄存器R0R3间接寻址,内存直接寻址以及立即数寻址。*年模型机指令的最低两位(IR0和IR1)用来寻址R0R3四个寄存器;IR2和IR3与ELP微控制信号,Cy和Z两个程序状态信号配合,控制PC的置数即程序的转移。各种转移的条件判断逻辑如下所示:PC置数逻辑当EL
3、P=1时,不允许PC被预置当ELP=0时当IR3=1时,无论Cy和Z什么状态,PC被预置当IR3=0时若IR2=0,则当Cy=1时PC被预置若IR2=1,则当Z=1时PC被预置本模型机时序控制采用不定长机器周期的同步控制方式,一条指令最多分四个节拍。系统提供的默认指令系统包括以下7类指令:算术运算指令:逻辑运算指令:数据传输指令:跳转指令:ADDA,R?ADDA,R?ADDA,MMADDA,#IIADDCA,R?ADDCA,R?ADDCA,MMADDCA,#IISUBA,R?SUBA,R?SUBA,MMSUBA,#IISUBCA,R?SUBCA,R?SUBCA,MMSUBCA,#IIANDA,
4、R?ANDA,R?ANDA,MMANDA,#IIORA,R?ORA,R?ORA,MMORA,#IICPLAMOVA,R?MOVA,R?MOVA,MMMOVA,#IIMOVR?,AMOVR?,AMOVMM,AMOVR?,#IIJCMMJZMMJMPMMCALLMMRET移位指令:中断返回指令:输入/输出指令:RRARLARRCARLCARETIREADMMWRITEMMINOUT该模型机微指令系统的特点(包括其微指令格式的说明等):*年模型机的微指令字长为24位,全部为操作控制部分,不含顺序控制字段。微指令编码采用混合表示法,微地址形成采用计数器方式。微指令格式为水平型微指令。下面分别从为操作控
5、制和顺序控制两方面进行说明:a. 微操作控制24位微操作控制信号含义如下表:表1:*年模型机24位微控制信号功能控制信号含义XRD:外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。EMWR:程序存储器EM写信号。EMRD:程序存储器EM读信号。PCOE:将程序计数器PC的值送到地址总线ABUS上。EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。IREN:将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。ELP:P
6、C打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。MAREN:将数据总线DBUS上数据打入地址寄存器MAR。MAROE:将地址寄存器MAR的值送到地址总线ABUS上。OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。FEN:将标志位存入ALU内部的标志寄存器。X2X1X0:X2、X1、X0三位组合来译码选择将数据送
7、到DBUS上的寄存器。WEN:将数据总线DBUS的值打入工作寄存器W中。AEN:将数据总线DBUS的值打入累加器A中。S2S1S0S2、S1、S0三位组合决定ALU做何种运算。X2X1X0被选中寄存器S2S1S0运算000IN000A+W001IA001A-W010ST010AORW011PC011AANDW100D100A+W+Cy101R101A-W-Cy110L110NOTA111无111Ab. 顺序控制*年微程序控制器的微地址生成部件是一个计数器,分别控制该计数器的使能端(自动加一)和置数端(跳转至其他指令对应的位程序地址)生成微命令的地址。2。计算机中实现乘法和除法的原理(1)无符号
8、乘法实例演示:1010X 1011=*无符号乘法的实例演示如图1所示:0X1011000010101010101111000000111101010即:1001X0110=*硬件原理框图:被乘数(不变)0M3M2M1M0000ALUADDZF控制逻辑0000A3A2A1A0SHR乘数(部分和)图1:乘法硬件原理图算法流程图:(2)无符号除法实例演示:无符号除法使用加减交替法,若余数为正,则下一步执行减法,商置1;反之商置0,下一步执行加法。01111011110110101011110100010011110111011111110111111001110100000110123荷为9,余数为
9、6 硬件原理框图:被除数(部分余数+商)D7D6D5D4D3D2D1D0ALUZFADDSUB控制逻辑A3A00000除数SHR 算法流程图:3 对应于以上算法如何分配使用*年实验仪中的硬件由于循环控制运算时会占用累加器A,因此参与运算的操作数均应保存在通用寄存器R0R3中。资源分配如下:直接乘法:R0:中间结果及最终结果R1:被乘数(每次运算左移1位)R2:乘数(每次运算右移1位)加减交替除法:R0:被除数(部分余数,最终得到余数)R1:除数(初始化时左移4位,每次计算时右移1位)R2:商(低4位)R3:计数器4.在*年集成开发环境下设计全新的指令/微指令系统设计结果如表所示(可按需要增删表
10、项)(1)新的指令集(设计两个不同指令集要分别列表)助记符机器码1机器码2指令说明_FATCH_000000XX00-03实验机占用,不可修改。复位后,所有寄存器清0,首先执行_FATCH_指令取指。ADDR?,#II000001XX04-07IIR?-R?+即数IIADDR?,A000010XX08-0BRkA+R?SUBR?,#II000011XX0C-0FIIR?R?即数IISUBR?,A000100XX10-13RkR?-AMOVR?,#II000101XX14-17RkR?MOVA,R?000110XX18-1BA-R?SHLR?000111XX1C-1F3R环带进位左移1位SHRR
11、?001000XX20-23R环带进位右移1位PUSHA001001XX24-27A压栈POPA001010XX28-2B将栈顶元素值给AMOVR?,A001011XXRkAANDA,#II001100XX30-33IIA与立即数II进行与运算JZMM001101XX34-37MMZF=1时跳转JMPMM001111XX3C-3FMM跳转JCMM0*XX40-43MMCF=1时跳转(2)新的微指令集5用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序(1)乘法MOVR0,#00HMOVR1,#09HMOVR2,#09HLOOP1:SUBR2,#00HJZLOOP3MOVA,R
12、2ANDA,#01HJZLOOP2MOVA,R1ADDR0,ALOOP2:SHLR1SHRR2JMPLOOP1LOOP3:END(2)除法MOVR0,#86HMOVR1,#09HMOVR2,#00HMOVR3,#05HMOVA,R1ANDA,#0FFHJZLOOP3SHLR1SHLR1SHLR1SHLR1MOVA,R0PUSHAMOVA,R1SUBR0,AJCLOOP1JMPLOOP3LOOP1:POPAMOVR0,ASHLR2SHRR1SUBR3,#01HJZLOOP4MOVA,R0PUSHAMOVA,R1SUBR0,AJCLOOP1LOOP2:SHLR2SHRR1ADDR2,#01HSUB
13、R3,#01HJZLOOP4MOVA,R0PUSHAMOVA,R1SUBR0,AJCLOOP1JMPLOOP2LOOP3:MOVR2,#0FFHLOOP4:END6上述程序的运行情况(跟踪结果)程序运行的过程乘法汇编指令程序地址机器码指令说明微程序PCmPC运行时寄存器或存储器的值?_FATCH_?0000实验机占用,不可修改。复位后,所有寄存器清0,首先执行_FATCH_指令取指。CBFFFF+1写入EM:14MOVR0,#00001400将立即数00H存放到寄存器R0中。C7FBFFCBFFFF+1+1+1写入EM:14EM:00R0:00MOVR1,#09021509将立即数09H存放到
14、寄存器R1中。C7FBFFCBFFFF+1+1+1写入EM:15EM:09R1:09MOVR2,#09041609将立即数09H存放到寄存器R2中。C7FBFFCBFFFF+1+1+1写入EM:16EM:09R2:09SUBR2,#00060E00寄存器R2减去立即数00H后存入寄存器R2中,改变标志位FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1写入EM:0EEM:0EA:09EM:00EM:00JZ15083415若零标志位置1,跳转到15H地址。C6FFFFCBFFFW入+1+1写入EM:34EM:15MOVA,R20A1A将累加器A中的数存放到寄存器R2中。FFF
15、7F7CBFFFF+1+1写入EM:1AEM:1AW:09ANDA,#010B3001累加器A中的数与立即数01H做与运算,结果存入累加器A中C7FFEFFFFE93CBFFFF+1+1+1+1写入EM:30EM:01EM:01110D3411若零标志位置1,跳转到11H地址。C6FFFFCBFFFW入+1+1写入EM:34EM:11MOVA,R10F19将累加器A中的数存放到寄存器R1中。FFF7F7CBFFFF+1+1写入EM:19EM:19A:09ADDR0,A1008寄存器R0中的值加上累加器A中的值,结果存入寄存器R0中FFF7EFFFFA98CBFFFF+1+1+1写入EM:08E
16、M:08W=00EM:01R0=09SHLR1111D寄存器R1中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM:1DEM:1DA:09EM:1DR1:12SHRR21222寄存器R2中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM:22EM:22A:09EM:22R2:04JMP06133C06跳转到06H地址。C6FFFFCBFFF再入+1+1写入EM:3cEM:06SUBR2,#00060E00寄存器R2减去立即数00H后存入寄存器R2中,改变标志位FFF7F7c7FFEFFFFA99cB
17、FFFF+1+1+1+1+1写入EM:0EEM:0EW:04EM:00EM:00JZ15083415若零标志位置1,跳转到15H地址。C6FFFFCBFFFF入+1+1写入EM:34EM:15MOVA,R20A1A将累加器A中的数存放到寄存器R2中。FFF7F7cBFFFF+1+1写入EM:1AEM:1AA=04ANDA,#010B3001累加器A中的数与立即数01H做与运算,结果存入累加器A中c7FFEFFFFE93cBFFFF+1+1+1+1写入EM:30EM:01W:01EM:01A:00JZ110D3411若零标志位置1,跳转到11H地址。C6FFFFCBFFF府入+1+1写入EM:3
18、4EM:11SHLR1111D寄存器R1中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM:1DEM:1DA:12EM:1DR1:24SHRR21222寄存器R2中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM:22EM:22A:04EM:22R2:02JMP06133C06跳转到06H地址。C6FFFFCBFFF再入+1+1写入EM:3cEM:06SUBR2,#00060E00寄存器R2减去立即数00H后存入寄存器R2中,改变标志位FFF7F7c7FFEFFFFA99cBFFFF+1+1+1+1
19、+1写入EM:0EEM:0EA:02EM:00W:00EM:00JZ15083415若零标志位置1,跳转到15H地址。C6FFFFCBFFFW入+1+1写入EM:34EM:15MOVA,R20A1AFFF7F7CBFFFF+1+1写入EM:1AEM:1AA=02ANDA,#010B3001寄存器R2与立即数01H,只改变标志位,并不改变R2中的数值。C7FFEFFFFE93CBFFFF+1+1+1+1写入EM:30EM:01W:01EM:01A:00JZ110D3411若零标志位置1,跳转到11H地址。C6FFFFCBFFF府入+1+1写入EM:34EM:11SHLR1111D寄存器R1中的数
20、不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM:1DEM:1DA:24EM:1DR1:48SHRR21222寄存器R2中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM:22EM:22A:02EM:22R2:01JMP06133C06跳转到06H地址。C6FFFFCBFFF再入+1+1写入EM:3cEM:06SUBR2,#00060E00寄存器R2减去立即数00H后存入寄存器R2中,改变标志位FFF7F7c7FFEFFFFA99cBFFFF+1+1+1+1+1写入EM:0EEM:0EA:01EM:00
21、W:00EM:00JZ15083415若零标志位置1,跳转到15H地址。C6FFFFCBFFFF入+1+1写入EM:34EM:15MOVA,R20A1AFFF7F7cBFFFF+1+1写入EM:1AEM:1AA=01ANDA,#010B3001寄存器R2与立即数01H,只改变标志位,并不改变R2中的数值。c7FFEFFFFE93cBFFFF+1+1写入+1+1写入+1EM:30EM:01W:01EM:01A:01EM:01JZ110D3411若零标志位置1,跳转到11H地址。C6FFFFCBFFFW入+1+1写入EM:34EM:11MOVA,R10F19将累加器A中的数存放到寄存器R1中。FF
22、F7F7CBFFFF+1+1写入EM:19EM:19A=48ADDR0,A1008寄存器R0中的值加上累加器A中的值,结果存入寄存器R0中FFF7EFFFFA98CBFFFF+1+1+1写入EM:08EM:08W:09EM:08R0:51SHLR1111D寄存器R1中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM:1DEM:1DA:48EM:1DR1:90SHRR21222寄存器R2中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM:22EM:22A:01EM:22R2:00JMP06133C06
23、跳转到06H地址。C6FFFFCBFFF再入+1+1写入EM:3cEM:06SUBR2,#00060E00寄存器R2减去立即数00H后存入寄存器R2中,改变标志位FFF7F7c7FFEFFFFA99cBFFFF+1+1+1+1+1写入EM:0EEM:0EA:00EM:00W:00EM:00JZ15083415若零标志位置1,跳转到15H地址。C6FFFFCBFFFF入+1+1写入EM:34EM:15?_FATCH_?0000实验机占用,不可修改。复位后,所有寄存器清0,首先执行_FATCH_指令取指。cBFFFF+1写入EM:00除法:汇编指令程序地址机器码指令说明微程序PcmPc运行时寄存器
24、或存储器的值_FATcH000实验机占用,不可修改。复位后,所有寄存器清0,首先执行_FATcH_指令取指。CBFFFF+1写入EM=14MOVR0,#86H001486将立即数86H存放到寄存器R0中。C7FBFFCBFFFF+1+1+1写入EM=14EM=86R0=86MOVR1,#09H021509将立即数09H存放到寄存器R1中。C7FBFFCBFFFF+1+1+1写入EM=15EM=09R1=09MOVR2,#00H041600将立即数00H存放到寄存器R2中。C7FBFFCBFFFF+1+1+1写入EM=16EM=00R2=00MOVR3,#05H061705将立即数05H存放到寄
25、存器R3中。C7FBFFCBFFFF+1+1+1写入EM=17EM=05R3=05MOVA,R10819将寄存器R1的数存入累加器A中FFF7F7CBFFFF+1+1写入EM=19EM=19A=09ANDA,#FF0930FF累加器A中的数和立即数FFH作与运算结果存入累加器A中C7FFEFFFFE93CBFFFF+1+1+1+1写入EM=30EM=FFW=FFEM=FFW=FFJZ370B3437若零标志位置1,跳转到37H地址。C6FFFFCBFFFF写入+1+1写入EM=34EM=37SHLR10D1D寄存器R1中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFF
26、F+1+1+1写入EM=1DEM=1DEM=1DR1=12SHLR10E1D寄存器R1中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM=1DEM=1DA=12EM=1DR1=24SHLR10F1D寄存器R1中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM=1DEM=1DA=24EM=1DR1=48SHLR1101D寄存器R1中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM=1DEM=1DA=48EM=1DR1=90MOVA,R01118将寄存器R
27、0中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=18EM=18A=86PUSHA1224将累加器A中的数据压入堆栈寄存器ST。FFEF9FCBFFFF+1+1写入EM=24EM=24ST=86MOVA,R11319将寄存器R1中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=19EM=19A=90SUBR0,A1410从寄存器R0中减去累加器A中的数,并影响标志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1写入EM=10EM=10W=90EM=10EM=10R0=F6JC19154019若进位标志位置1,跳转到19H地址。C6FFFFCBF
28、FFF写入+1+1写入EM=40EM=40PC=19POPA1928将堆栈寄存器ST的栈顶数据赋给累加器AoFFFF57CBFFFF+1+1写入EM=28EM=28A=86MOVR0,A1A2C将累加器A中的数放入寄存器R0中。FFFB9FCBFFFF+1+1写入EM=2CEM=2CR0=86SHLR21B1E寄存器R2中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM=1EEM=1EA=00EM=1ESHRR11C21寄存器R1中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM=21EM=21A=
29、90EM=21R1=48SUBR3,#01H1D0F01从寄存器R3中减去立即数01H,并影响标志位。FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1写入EM=0FEM=0FA=05EM=01EM=01R3=04JZ391F3489若零标志位置1,跳转到39H地址。C6FFFFCBFFFF写入+1+1写入EM=34EM=39MOVA,R02118将寄存器R0中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=18EM=1DA=86PUSHA2224将累加器A中的数据压入堆栈寄存器ST。FFEF9FCBFFFF+1+1写入EM=24EM=24ST=86MOVA,R
30、12319将寄存器R1中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=19EM=19A=48SUBR0,A2410从寄存器R0中减去累加器A中的数,并影响标志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1写入EM=10EM=10W=48EM=10A=86EM=10R0=3EJC19254019若进位标志位置1,跳转到19H地址。C6FFFFCBFFFF写入+1+1写入EM=40EM=19SHLR2271E寄存器R2中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM=1EEM=1EA=00EM=1ESHRR12
31、821寄存器R1中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM=21EM=21A=48EM=21R1=24ADDR2,#01H290601将立即数01H加入到寄存器R2中,并影响标志位。FFF7F7C7FFEFFFFA98CBFFFF+1+1写入+1+1+1EM=06EM=06A=00EM=01EM=01R2=01SUBR3,#01H2B0F01从寄存器R3中减去立即数01H,并影响标志位。FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1写入EM=0FEM=0FA=04EM=01EM=01R3=03JZ392D3439若零
32、标志位置1,跳转到39H地址。C6FFFFCBFFFF写入+1+1写入EM=34EM=39MOVA,R02F18将寄存器R0中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=18EM=18A=3EPUSHA3024将累加器A中的数据压入堆栈寄存器ST。FFEF9FCBFFFF+1+1写入EM=24EM=24ST=3EMOVA,R13119将寄存器R1中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=19EM=19A=24SUBR0,A3210从寄存器R0中减去累加器A中的数,并影响标志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1写入EM=10
33、EM=10W=24EM=10A=3EEM=10R0=1AJC19334019若进位标志位置1,跳转到19H地址。C6FFFFCBFFFF写入+1+1写入EM=40EM=19JMP27353C27跳转到27H地址。C6FFFFCBFFFF写入+1+1写入EM=3CEM=27SHLR2271E寄存器R2中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM=1EEM=1EA=01EM=1ER2=02SHRR12821寄存器R1中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM=21EM=21A=24EM=2
34、1R1=12ADDR2,#01290601将立即数01H加入到寄存器R2中,并影响标志位。FFF7F7C7FFEFFFFA98CBFFFF+1+1+1+1+1写入EM=06EM=06A=02EM=01W=01EM=01R2=03SUBR3.#012B0F01从寄存器R3中减去立即数01H,并影响标志位。+1+1+1+1+1写入EM=0FEM=0FA=03EM=01EM=01R3=02JZ392D3439若零标志位置1,跳转到39H地址。C6FFFFCBFFFF写入+1+1写入EM=34EM=39MOVA,R02F18将寄存器R0中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=1
35、8EM=18A=1APUSHA3024将累加器A中的数据压入堆栈寄存器ST。FFEF9FCBFFFF+1+1写入EM=24EM=24ST=1AMOVA,R13119将寄存器R1中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=19EM=19A=12SUBR0,A3210从寄存器R0中减去累加器A中的数,并影响标志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1写入EM=10EM=10W=12EM=10A=1AEM=10R0=08JC19334019若进位标志位置1,跳转到19H地址。C6FFFFCBFFFF写入+1+1写入EM=40EM=19JMP27353C
36、27跳转到27H地址。C6FFFFCBFFFF写入+1+1写入EM=3CEM=27SHLR2271E寄存器R2中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1+1+1写入EM=1EEM=1EA=03EM=1ER2=06SHRR12821寄存器R1中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1+1+1写入EM=21EM=21A=12EM=21R1=09ADDR2,#01290601将立即数01H加入到寄存器R2中,并影响标志位。FFF7F7C7FFEFFFFA98CBFFFF+1+1+1+1+1写入EM=06EM=06A=06
37、EM=01W=01EM=01R2=07SUBR3,#012B0F01从寄存器R3中减去立即数01H,并影响标志位。FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1写入EM=0FEM=0FA=02EM=01EM=01R3=01JZ392D3439若零标志位置1,跳转到39H地址。C6FFFFCBFFFF写入+1+1写入EM=34EM=39MOVA,R02F18将寄存器R0中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=18EM=18A=08PUSHA3024将累加器A中的数据压入堆栈寄存器ST。FFEF9FCBFFFF+1+1写入EM=24EM=24ST=08
38、MOVA,R13119将寄存器R1中的数放入累加器A中。FFF7F7CBFFFF+1+1写入EM=19EM=19A=09SUBRO,A3210从寄存器R0中减去累加器A中的数,并影响标志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1写入EM=10EM=10W=09EM=10A=08EM=10R0=FFJC19334019若进位标志位置1,跳转到19H地址。C6FFFFCBFFF再入+1+1写入EM=40EM=19POPA3528将堆栈寄存器ST的栈顶数据赋给累加器AoFFFF57CBFFFF+1+1写入EM=28EM=28A=08MOVR0,A1A2C将累加器A中的数放入
39、寄存器R0中。FFFB9FCBFFFF+1+1写入EM=2CEM=2CR0=08SHLR2271E寄存器R2中的数不带进位向左移一位,并不影响标志位。FFF7F7FFF9DFCBFFFF+1写入+1+1EM=1EEM=1EA=07EM=1ER2=0ESHRR12821寄存器R1中的数不带进位向右移一位,并不影响标志位。FFF7F7FFF9BFCBFFFF+1写入+1+1EM=21EM=21A=09EM=21R1=04SUBR3,#012B0F01从寄存器R3中减去立即数01H,并影响标志位。FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1写入EM=0FEM=0FA=01EM
40、=01EM=01R3=00JZ391F3439若零标志位置1,跳转到39H地址。C6FFFFCBFFFF写入+1+1写入EM=34EM=39_FATCH0000实验机占用,不可修改。复位后,所有寄存器清0,首先执行_FATCH_指令取指。CBFFFF+1写入EM=007.设计结果说明1)、最先调试时JMP,JC,J左些转移指令全部无效,仔细检查微程序没发现有错误,经查阅资料发现这几个指令的机器码1的第五位和第六位必须对应(JMP11,JC00,JZ01)。2) 、本来我是先设计指令系统,但是我发现我设计的指令太繁琐,而且无法估计到底用到哪些指令,最后我放弃先设计指令系统,先写完汇编程序再设计指
41、令系统。3) 、在写除法汇编程序的时候当减掉比被除数(中间结果)更大的余数时,在后面只是简单的加上余数是无法还原被除数(中间结果)。用一个堆栈,在减余数的之前将被除数(中间结果)压进栈,当余数大于被除数(中间结果)时,减了以后将栈顶元素值赋给被除数(中间结果)。4)、本来设计了一条“SUBR1,R邃样的指令。但是在写指令对应的微指令时,发现这条指令在这个模型机里无法实现。因为在指令中不能同时出现两个操作数都是寄存器R?。最后我将寄存器R2的值送到累加器A中,然后设计“SUBR1,倦令。五、本次课程设计的总结体会(不少于200字)通过本次课程设计,我巩固了所学的计算机组成原理中有关指令系统、总线
42、系统等方面的知识,进一步加深了对*年实验仪的使用方法的了解,能够更加熟练的使用*年实验仪,同时还让我复习并运用了算法设计与分析和汇编语言的内容。通过这次课程设计,既锻炼了我的动手能力,又锻炼了我的动脑能力,使我理论联系实际,使所学的知识不再枯燥无味,将所学的知识运用到实际,让我掌握这些知识更牢固。在查找资料的同时也锻炼了自己的自学能力,还提高了获取有用信息的能力。本次课程设计对我来说是一次很好的实践机会,让我能够过活学活用知识,在实践中加深对所学课程的理解,同时加强了我的动手能力,让我充分认识到了实践的重要性。在今后的学习和工作中,我要更多注重提高自己的动手能力,在实践中学习更多的知识。扩展:
43、1.无符号8位乘8位(1)初始化以及输入乘数与被乘数首先是将部分积初始化送到寄存器R0中乘数放入R1被乘数放入R2。直接进彳f到地址LOOP部分。(2)运算过程首先从乘数最低位开始判断,将R1放于寄存器A中并和立即数#01H相与,此时可以判断乘数最低位是0或1。基于语句JZNEXT;当前面的判J断结果是0,跳转到地址NEXT;否则顺序执行程序。跳转到NEXT,即当程序乘数最低位为0时,将R0不变;顺序执行程序,即当乘数最低位为1时,将R0与R2相加,判断最低位是0还是1,当判断结果是0,跳转到NEXT1,否则顺序执行程序,所得到的结果送到寄存器R0中,存入数据后无条件跳转到NEXT2,判断是否
44、是最后一位。然后进行移位操作。在移位前需要考虑R0的最低位是0或1,因为部分积移到的数值也是结果的部分,就是保存在结果低位的部分,也就是寄存器R1中,所以要保留移掉部分,此时判断R0最低位。利用语句JZNEXT1,当前面的判断结果是0,标志位为1,跳转到地址NEXT1;否则顺序执行程序。当部分积最低位是1时,右移R0,进行保存;当部分积最低位是0时,右移R0、R1,进行保存。每次循环结束都要进入结果输出部分JZNEXT3。(3)显示乘积的结果最后循环控制程序结束。因为乘法的结果是16位,而此时16位结果的高八位存放在R0,低八位存放于RK显示结果为R0显示的数据加上R1显示的数据开始乘数最低位
45、为1R1YN部分积与被乘数相加部分积不变部分积最低位为1?NY部分积右移乘数右移并加*-*部分积右移乘数右移将部分积右移八次加上乘数寄存器里的数,得到乘积结果循环结束?NY结束输入部分积、乘数和被乘数结果输出判断乘数末位是否为1,应用MOVA,R1和ANDA,#01语句,将乘数与1相与,得出末位结果。然后利用JZNEXT,如果2果是0,则跳转到地址NEXT;否则顺序执行程序。(1)NEXT,即当乘数最低位为0时,R0不变;(2)顺序执行程序,即当乘数最低位为1时,将R0与R2相加,所得到的结果送到寄存器R0中。在移位前需要考虑R0的最低位是0或1,因为部分积移到的数值也是结果的部分,就是保存在
46、结果低位的部分,也就是寄存器R1中,所以要保留移掉部分,此时判断R0最低位。先应用MOVA,R0和ANDA,#01,将部分积与1相与,得出末位结果。利用JZNEXT1,当前面的结果是0,跳转到地址NEXT1;否则顺序执行程序。当部分积最低位是1时,右移R0,右移ri加*-*,进行保存;当部分积最低位是0时,右移R0、R1,进行保存。开始乘数最低位为1?YN部分积与被乘数相加部分积不变部分积最低位为1?NY部分积右移乘数右移并加*-*部分积右移乘数右移结束汇编代码:MOVR0,#00HMOVR1,#32HMOVR2,#95HMOVR3,#08HLOOP:MOVA,R1ANDA,#01HJZNEX
47、TMOVA,R0ADDA,R2MOVR0,AANDA,#01HJZNEXT1MOVAMOVR0,AMOVA,R1RRAORA,#80HMOVR1,AJMPNEXT2NEXT1:MOVA,R0RRAMOVR0,AMOVA,R1RRAMOVR1,AJMPNEXT2NEXT:MOVA,R0ANDA,#01HJZNEXT1MOVA,R0RRAMOVR0,AMOVAORA,#80HMOVR1,AJMPNEXT2NEXT2:MOVA,R3SUBA,#01HORA,#00HJZNEXT3MOVR3,AJMPLOOPNEXT3:JMPNEXT3补码运算:采用伟福*年试验箱,设计并实现定点补码一位乘(booth
48、)。要求:采用的算法为定点补码一位乘booth算法,乘数和被乘数规定为6位,其中首位为符号位。数据要求以原码的形式输入,采用补码方式进行运算。实验数据从试验箱的开关输入,运算的结果在OUT寄存器中显示。设计原理:比较YnYn+1的状态执行相应的操作。如下图是补码一位乘的运算规则:表1.1Booth算法操作表说明乘数Yn附加位Yn+1说明00附加位、乘数、部分积71位01部分积加X补附加位、乘数、部分积71位10部分积加卜X补附加位、乘数、部分积71位1 1附加位、乘数、部分积71位需要说明的是此操作表是在当nO时,当n=0时,判断YnYn+1,运算规则同此操作表只是不移位。即在运算的最后一步,
49、乘积不再右移。设计思路:(1) 构造补码一位乘的初始化所需要的数值因为补码一位乘的算法需要先求出X补、-X补、Q补,所以先将X补、-X补、Q补分别存贮到0F0H到0F2H存储单元中。因为部分积和附加位的初始值都是0,所以在0E0H单元存入附加位初始值0,在R0中存入部分积初始值0。其他数的处理:将输入的一个值Q求出补码作为乘数Y,并存入R2中;另一个值X存入R1中,根据它来求出X补、-X补;本实验规定乘数和被乘数为8位,数据位为7位,所以要完成7次操作,但最后一次不移位,在R3寄存中存入数值n=7,每次操作完成后减1。(2)运算并输出根据乘数末位及附加位来确定执行的操作,每完成一次操作R3中的
50、数值减一。判断R3的数值是否为零,若不为零,则继续循环上述操作,若为零,则循环结束,判断此时的乘数末位及附加位,再按运算规则进行一次操作,但是不移位,然后结束运算。即开始时Yn+1=0,部分积初值为0,每一步乘法由YnYn+1决定原部分积加X补或加卜X补或加0,再右移一位得到新的部分积,以此重复n步,第n+1步由YnYn+1决定部分积加X补或加-X补或加0,但不移位,即得最后结果,最后先把乘数的最终结果从OUT寄存其中显示出来,再将部分积的最终结果从OUT寄存其中显示出来。( 3) 实现方式在掌握*年试验箱的体系结构后,充分利用试验箱提供的汇编语言,以及有限的硬件资源,完成程序的编写。1)算术
51、逻辑运算指令ADDA,R?将寄存器R?勺值加入累加器A中ADDA,#ii立即数II加入累加器A中SUBA,#II从累加器中减去立即数II后加入累加器A中ANDA,r?累加器a与寄存器R?的彳tANDA,#ii累加器A与立即数II的值ORA,R?累加器A与寄存器R?的彳tORA,#II累加器A与立即数II的值CPLA累加器A取反,再存入累加器A中(2)数据传送指令MOVA,r?将寄存器R?勺值送到累加器A中MOVA,#II将立即数II送到累加器A中MOVr?,a将累加器A中的值送到寄存器R?中MOVR?,#II将立即数II送到寄存器R冲RRA累加器右移指令RLA累加器左移指令(3)跳转指令JZMM若零标志位置1,跳转到MM地址JMPM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年养老保险考试试题及答案
- 2025年电网会计面试题及答案
- 2025年你的理解测试题及答案
- 修身语100则:原文+译文
- 2025年建材销售面试试题及答案
- 2025年空间站面试题及答案
- 2025年股权销售面试试题及答案
- 2025年测绘副总理论试题及答案
- 2025年高中资料测试题及答案
- 2025年骨生物力学试题及答案
- 2024年1月时政热点题库及答案
- 2023年山东省夏季普通高中学业水平合格考试会考生物试题及参考答案
- 项目四任务1:认识毫米波雷达(课件)
- 非正常接发列车作业标准
- 体育室内课-体育大富翁
- 180万吨柴油加氢装置可行性研究报告
- DLT 5285-2018 输变电工程架空导线(800mm以下)及地线液压压接工艺规程
- 2024年国家保安员资格考试题库及参考答案(完整版)
- DL-T692-2018电力行业紧急救护技术规范
- 消防员训练伤的预防及恢复课件
- GB/T 43860.1220-2024触摸和交互显示第12-20部分:触摸显示测试方法多点触摸性能
评论
0/150
提交评论