东北大学计算机组成基础原理课设报告.doc

举报
资源描述
^` 计算机组成原理课程设计报告 班级:计算机 XX 班 姓名: XX 学号: XXX 完成时间: 2017.1.6 一、课程设计目的 1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系; 2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念; 3.培养综合实践及独立分析、解决问题的能力。 二、课程设计的任务 针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。 三、 课程设计使用的设备(环境) 1.硬件 l COP2000实验仪 l PC机 2.软件 l COP2000仿真软件 四、课程设计的具体内容(步骤) 1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现 该模型机指令系统的特点:COP2000模型机的指令为8位,根据操作的内容,可以有0到2个操作数。每个操作数支持5种寻址方式,包括累加器A寻址,寄存器R0~R3寻址,寄存器R0~R3间接寻址,内存直接寻址以及立即数寻址。 COP2000模型机指令的最低两位(IR0和IR1)用来寻址R0~R3四个寄存器;IR2和IR3与ELP微控制信号,Cy和Z两个程序状态信号配合,控制PC的置数即程序的转移。各种转移的条件判断逻辑如下所示: PC 置数逻辑 当ELP=1时,不允许PC被预置 当ELP=0时 当IR3=1时,无论Cy和Z什么状态,PC被预置 当IR3=0时 若IR2=0,则当Cy=1时PC被预置 若IR2=1,则当Z=1时PC被预置 本模型机时序控制采用不定长机器周期的同步控制方式,一条指令最多分四个节拍。 系统提供的默认指令系统包括以下7类指令: 算术运算指令: 逻辑运算指令: 数据传输指令: 跳转指令: ADD A, R? ADD A, @R? ADD A, MM ADD A, #II ADDC A, R? ADDC A, @R? ADDC A, MM ADDC A, #II SUB A, R? SUB A, @R? SUB A, MM SUB A, #II SUBC A, R? SUBC A, @R? SUBC A, MM SUBC A, #II AND A, R? AND A, @R? AND A, MM AND A, #II OR A, R? OR A, @R? OR A, MM OR A, #II CPL A MOV A, R? MOV A, @R? MOV A, MM MOV A, #II MOV R?, A MOV @R?, A MOV MM, A MOV R?, #II JC MM JZ MM JMP MM CALL MM RET 移位指令: 中断返回指令: 输入/输出指令: RR A RL A RRC A RLC A RETI READ MM WRITE MM IN OUT 该模型机微指令系统的特点(包括其微指令格式的说明等): COP2000 模型机的微指令字长为 24 位,全部为操作控制部分,不含顺序控制字段。微指令编码采用混合表示法,微地址形成采用计数器方式。微指令格式为水平型微指令。下面分别从为操作控制和顺序控制两方面进行说明: a. 微操作控制 24 位微操作控制信号含义如下表: 表 1:COP2000 模型机 24 位微控制信号功能 控制信号 含义 XRD: 外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。 EMWR: 程序存储器 EM 写信号。 EMRD: 程序存储器 EM 读信号。 PCOE: 将程序计数器 PC 的值送到地址总线 ABUS 上。 EMEN: 将程序存储器 EM 与数据总线 DBUS 接通,由 EMWR 和 EMRD 决定是将 DBUS 数据写到 EM 中,还是从 EM 读出数据送到 DBUS。 IREN: 将程序存储器 EM 读出的数据打入指令寄存器 IR 和微指令计数器 uPC。 EINT: 中断返回时清除中断响应和中断请求标志,便于下次中断。 ELP: PC 打入允许,与指令寄存器的 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 内部的标志寄存器。 X2 X1 X0: X2、X1、X0 三位组合来译码选择将数据送到 DBUS 上的寄存器。 WEN: 将数据总线 DBUS 的值打入工作寄存器 W 中。 AEN: 将数据总线 DBUS 的值打入累加器 A 中。 S2 S1 S0 S2、S1、S0 三位组合决定 ALU 做何种运算。 X2 X1 X0 被选中寄存器 S2 S1 S0 运算 000 IN 000 A+W 001 IA 001 A-W 010 ST 010 A OR W 011 PC 011 A AND W 100 D 100 A+W+Cy 101 R 101 A-W-Cy 110 L 110 NOT A 111 无 111 A b. 顺序控制 COP2000 微程序控制器的微地址生成部件是一个计数器,分别控制该计数器的使能端(自动加一)和置数端(跳转至其他指令对应的位程序地址)生成微命令的地址。 2。计算机中实现乘法和除法的原理 (1)无符号乘法 ①实例演示: 10101011=1101110 无符号乘法的实例演示如图1所示: 1 0 1 0 1 0 1 1 0 0 0 0 + 1 0 1 0 1 0 1 0 + 1 0 1 0 1 1 1 1 0 + 0 0 0 0 0 1 1 1 1 0 + 1 0 1 0 (0) 1 1 0 1 1 1 0 即:10010110=1101110 ②硬件原理框图: ③算法流程图: (2)无符号除法 ①实例演示: 无符号除法使用加减交替法,若余数为正,则下一步执行减法,商置1;反之商置0,下一步执行加法。 0 1 1 1 1 0 1 1 - 1 1 0 1 1 0 1 0 1 0 1 1 + 1 1 0 1 0 0 0 1 0 0 1 1 - 1 1 0 1 1 1 0 1 1 1 1 1 + 1 1 0 1 1 1 1 1 1 0 0 1 + 1 1 0 1 0 0 0 0 0 1 1 0 12313商为9,余数为6 ②硬件原理框图: ③算法流程图: 3.对应于以上算法如何分配使用COP2000实验仪中的硬件 由于循环控制运算时会占用累加器 A,因此参与运算的操作数均应保存在通用寄存器 R0~R3 中。资源分配如下: 直接乘法: R0:中间结果及最终结果 R1:被乘数(每次运算左移 1 位) R2:乘数(每次运算右移 1 位) 加减交替除法: R0:被除数(部分余数,最终得到余数) R1:除数(初始化时左移 4 位,每次计算时右移1位) R2:商(低 4 位) R3:计数器 4.在COP2000集成开发环境下设计全新的指令/微指令系统 设计结果如表所示(可按需要增删表项) (1) 新的指令集 (设计两个不同指令集要分别列表) 助记符 机器码1 机器码2 指令说明 _FATCH_ 000000XX 00-03 实验机占用,不可修改。复位后,所有寄存器清0,首先执行 _FATCH_ 指令取指。 ADD R?,#II 000001XX 04-07 II R?←R?+立即数 II ADD R?,A 000010XX 08-0B R?←A+R? SUB R?,#II 000011XX 0C-0F II R?←R?-立即数II SUB R?,A 000100XX 10-13 R?←R?-A MOV R?,#II 000101XX 14-17 R?←R? MOV A, R? 000110XX 18-1B A←R? SHL R? 000111XX 1C-1F3 R?不带进位左移 1 位 SHR R? 001000XX 20-23 R?不带进位右移 1 位 PUSH A 001001XX 24-27 A压栈 POP A 001010XX 28-2B 将栈顶元素值给A MOV R?,A 001011XX 2C-2F R?←A AND A,#II 001100XX 30-33 II A与立即数 II进行与运算 JZ MM 001101XX 34-37 MM ZF=1 时跳转 JMP MM 001111XX 3C-3F MM 跳转 JC MM 010000XX 40-43 MM CF=1 时跳转 (2) 新的微指令集 5.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序 (1)乘法 MOV R0,#00H MOV R1,#09H MOV R2,#09H LOOP1: SUB R2,#00H JZ LOOP3 MOV A,R2 AND A,#01H JZ LOOP2 MOV A,R1 ADD R0,A LOOP2: SHL R1 SHR R2 JMP LOOP1 LOOP3: END (2)除法 MOV R0,#86H MOV R1,#09H MOV R2,#00H MOV R3,#05H MOV A,R1 AND A,#0FFH JZ LOOP3 SHL R1 SHL R1 SHL R1 SHL R1 MOV A,R0 PUSH A MOV A,R1 SUB R0,A JC LOOP1 JMP LOOP3 LOOP1: POP A MOV R0,A SHL R2 SHR R1 SUB R3,#01H JZ LOOP4 MOV A,R0 PUSH A MOV A,R1 SUB R0,A JC LOOP1 LOOP2: SHL R2 SHR R1 ADD R2,#01H SUB R3,#01H JZ LOOP4 MOV A,R0 PUSH A MOV A,R1 SUB R0,A JC LOOP1 JMP LOOP2 LOOP3: MOV R2,#0FFH LOOP4: END 6.上述程序的运行情况(跟踪结果) 程序运行的过程 乘法 汇 编 指 令 程序地址 机器码 指令说明 微程序 PC mPC 运行时寄存器或存储器的值 _FATCH_ 00 00 实验机占用,不可修改。复位后,所有寄存器清0,首先执行 _FATCH_ 指令取指。 CBFFFF +1 写入 EM:14 MOV R0,#00 00 1400 将立即数00H存放到寄存器R0中。 C7FBFF CBFFFF +1 +1 +1 写入 EM:14 EM:00 R0:00 MOV R1,#09 02 1509 将立即数09H存放到寄存器R1中。 C7FBFF CBFFFF +1 +1 +1 写入 EM:15 EM:09 R1:09 MOV R2,#09 04 1609 将立即数09H存放到寄存器R2中。 C7FBFF CBFFFF +1 +1 +1 写入 EM:16 EM:09 R2:09 SUB R2,#00 06 0E00 寄存器R2减去立即数00H后存入寄存器R2中,改变标志位 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM:0E EM:0E A:09 EM:00 EM:00 JZ 15 08 3415 若零标志位置1,跳转到15H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:15 MOV A,R2 0A 1A 将累加器A中的数存放到寄存器R2中。 FFF7F7 CBFFFF +1 +1 写入 EM:1A EM:1A W:09 AND A,#01 0B 3001 累加器A中的数与立即数01H做与运算,结果存入累加器A中 C7FFEF FFFE93 CBFFFF +1 +1 +1 +1 写入 EM:30 EM:01 EM:01 A=01 JZ 11 0D 3411 若零标志位置1,跳转到11H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:11 MOV A,R1 0F 19 将累加器A中的数存放到寄存器R1中。 FFF7F7 CBFFFF +1 +1 写入 EM:19 EM:19 A:09 ADD R0,A 10 08 寄存器R0中的值加上累加器A中的值,结果存入寄存器R0中 FFF7EF FFFA98 CBFFFF +1 +1 +1 写入 EM:08 EM:08 W=00 EM:01 R0=09 SHL R1 11 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM:1D EM:1D A:09 EM:1D R1:12 SHR R2 12 22 寄存器R2中的数不带进位向右移一位,并不影响标志位。 FFF7F7 FFF9BF CBFFFF +1 +1 +1 写入 EM:22 EM:22 A:09 EM:22 R2:04 JMP 06 13 3C06 跳转到06H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:3C EM:06 SUB R2,#00 06 0E00 寄存器R2减去立即数00H后存入寄存器R2中,改变标志位 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM:0E EM:0E W:04 EM:00 EM:00 JZ 15 08 3415 若零标志位置1,跳转到15H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:15 MOV A,R2 0A 1A 将累加器A中的数存放到寄存器R2中。 FFF7F7 CBFFFF +1 +1 写入 EM:1A EM:1A A=04 AND A,#01 0B 3001 累加器A中的数与立即数01H做与运算,结果存入累加器A中 C7FFEF FFFE93 CBFFFF +1 +1 +1 +1 写入 EM:30 EM:01 W:01 EM:01 A:00 JZ 11 0D 3411 若零标志位置1,跳转到11H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:11 SHL R1 11 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM:1D EM:1D A:12 EM:1D R1:24 SHR R2 12 22 寄存器R2中的数不带进位向右移一位,并不影响标志位。 FFF7F7 FFF9BF CBFFFF +1 +1 +1 写入 EM:22 EM:22 A:04 EM:22 R2:02 JMP 06 13 3C06 跳转到06H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:3C EM:06 SUB R2,#00 06 0E00 寄存器R2减去立即数00H后存入寄存器R2中,改变标志位 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM:0E EM:0E A:02 EM:00 W:00 EM:00 JZ 15 08 3415 若零标志位置1,跳转到15H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:15 MOV A,R2 0A 1A FFF7F7 CBFFFF +1 +1 写入 EM:1A EM:1A A=02 AND A,#01 0B 3001 寄存器R2与立即数01H,只改变标志位,并不改变R2中的数值。 C7FFEF FFFE93 CBFFFF +1 +1 +1 +1 写入 EM:30 EM:01 W:01 EM:01 A:00 JZ 11 0D 3411 若零标志位置1,跳转到11H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:11 SHL R1 11 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM:1D EM:1D A:24 EM:1D R1:48 SHR R2 12 22 寄存器R2中的数不带进位向右移一位,并不影响标志位。 FFF7F7 FFF9BF CBFFFF +1 +1 +1 写入 EM:22 EM:22 A:02 EM:22 R2:01 JMP 06 13 3C06 跳转到06H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:3C EM:06 SUB R2,#00 06 0E00 寄存器R2减去立即数00H后存入寄存器R2中,改变标志位 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM:0E EM:0E A:01 EM:00 W:00 EM:00 JZ 15 08 3415 若零标志位置1,跳转到15H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:15 MOV A,R2 0A 1A FFF7F7 CBFFFF +1 +1 写入 EM:1A EM:1A A=01 AND A,#01 0B 3001 寄存器R2与立即数01H,只改变标志位,并不改变R2中的数值。 C7FFEF FFFE93 CBFFFF +1 +1 写入 +1 +1 写入 +1 EM:30 EM:01 W:01 EM:01 A:01 EM:01 JZ 11 0D 3411 若零标志位置1,跳转到11H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:11 MOV A,R1 0F 19 将累加器A中的数存放到寄存器R1中。 FFF7F7 CBFFFF +1 +1 写入 EM:19 EM:19 A=48 ADD R0,A 10 08 寄存器R0中的值加上累加器A中的值,结果存入寄存器R0中 FFF7EF FFFA98 CBFFFF +1 +1 +1 写入 EM:08 EM:08 W:09 EM:08 R0:51 SHL R1 11 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM:1D EM:1D A:48 EM:1D R1:90 SHR R2 12 22 寄存器R2中的数不带进位向右移一位,并不影响标志位。 FFF7F7 FFF9BF CBFFFF +1 +1 +1 写入 EM:22 EM:22 A:01 EM:22 R2:00 JMP 06 13 3C06 跳转到06H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:3C EM:06 SUB R2,#00 06 0E00 寄存器R2减去立即数00H后存入寄存器R2中,改变标志位 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM:0E EM:0E A:00 EM:00 W:00 EM:00 JZ 15 08 3415 若零标志位置1,跳转到15H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM:34 EM:15 _FATCH_ 00 00 实验机占用,不可修改。复位后,所有寄存器清0,首先执行 _FATCH_ 指令取指。 CBFFFF +1 写入 EM:00 除法: 汇 编 指 令 程序地址 机器码 指令说明 微程序 PC mPC 运行时寄存器或存储器的值 _FATCH 00 0 实验机占用,不可修改。复位后,所有寄存器清0,首先执行 _FATCH_ 指令取指。 CBFFFF +1 写入 EM=14 MOV R0,#86H 00 1486 将立即数86H存放到寄存器R0中。 C7FBFF CBFFFF +1 +1 +1 写入 EM=14 EM=86 R0=86 MOV R1,#09H 02 1509 将立即数09H存放到寄存器R1中。 C7FBFF CBFFFF +1 +1 +1 写入 EM=15 EM=09 R1=09 MOV R2,#00H 04 1600 将立即数00H存放到寄存器R2中。 C7FBFF CBFFFF +1 +1 +1 写入 EM=16 EM=00 R2=00 MOV R3,#05H 06 1705 将立即数05H存放到寄存器R3中。 C7FBFF CBFFFF +1 +1 +1 写入 EM=17 EM=05 R3=05 MOV A,R1 08 19 将寄存器R1的数存入累加器A中 FFF7F7 CBFFFF +1 +1 写入 EM=19 EM=19 A=09 AND A,#FF 09 30FF 累加器A中的数和立即数FFH作与运算结果存入累加器A中 C7FFEF FFFE93 CBFFFF +1 +1 +1 +1 写入 EM=30 EM=FF W=FF EM=FF W=FF JZ 37 0B 3437 若零标志位置1,跳转到37H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=34 EM=37 SHL R1 0D 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM=1D EM=1D EM=1D R1=12 SHL R1 0E 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM=1D EM=1D A=12 EM=1D R1=24 SHL R1 0F 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM=1D EM=1D A=24 EM=1D R1=48 SHL R1 10 1D 寄存器R1中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM=1D EM=1D A=48 EM=1D R1=90 MOV A,R0 11 18 将寄存器R0中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=18 EM=18 A=86 PUSH A 12 24 将累加器A中的数据压入堆栈寄存器ST。 FFEF9F CBFFFF +1 +1 写入 EM=24 EM=24 ST=86 MOV A,R1 13 19 将寄存器R1中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=19 EM=19 A=90 SUB R0,A 14 10 从寄存器R0中减去累加器A中的数,并影响标志位。 FFFF8F FFF7F7 FFFA99 CBFFFF +1 +1 +1 +1 写入 EM=10 EM=10 W=90 EM=10 EM=10 R0=F6 JC 19 15 4019 若进位标志位置1,跳转到19H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=40 EM=40 PC=19 POP A 19 28 将堆栈寄存器ST的栈顶数据赋给累加器A。 FFFF57 CBFFFF +1 +1 写入 EM=28 EM=28 A=86 MOV R0,A 1A 2C 将累加器A中的数放入寄存器R0中。 FFFB9F CBFFFF +1 +1 写入 EM=2C EM=2C R0=86 SHL R2 1B 1E 寄存器R2中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM=1E EM=1E A=00 EM=1E SHR R1 1C 21 寄存器R1中的数不带进位向右移一位,并不影响标志位。 FFF7F7 FFF9BF CBFFFF +1 +1 +1 写入 EM=21 EM=21 A=90 EM=21 R1=48 SUB R3,#01H 1D 0F01 从寄存器R3中减去立即数01H,并影响标志位。 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM=0F EM=0F A=05 EM=01 EM=01 R3=04 JZ 39 1F 3489 若零标志位置1,跳转到39H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=34 EM=39 MOV A,R0 21 18 将寄存器R0中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=18 EM=1D A=86 PUSH A 22 24 将累加器A中的数据压入堆栈寄存器ST。 FFEF9F CBFFFF +1 +1 写入 EM=24 EM=24 ST=86 MOV A,R1 23 19 将寄存器R1中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=19 EM=19 A=48 SUB R0,A 24 10 从寄存器R0中减去累加器A中的数,并影响标志位。 FFFF8F FFF7F7 FFFA99 CBFFFF +1 +1 +1 +1 写入 EM=10 EM=10 W=48 EM=10 A=86 EM=10 R0=3E JC 19 25 4019 若进位标志位置1,跳转到19H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=40 EM=19 SHL R2 27 1E 寄存器R2中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM=1E EM=1E A=00 EM=1E SHR R1 28 21 寄存器R1中的数不带进位向右移一位,并不影响标志位。 FFF7F7 FFF9BF CBFFFF +1 +1 +1 写入 EM=21 EM=21 A=48 EM=21 R1=24 ADD R2,#01H 29 0601 将立即数01H加入到寄存器R2中,并影响标志位。 FFF7F7 C7FFEF FFFA98 CBFFFF +1 +1 写入 +1 +1 +1 EM=06 EM=06 A=00 EM=01 EM=01 R2=01 SUB R3,#01H 2B 0F01 从寄存器R3中减去立即数01H,并影响标志位。 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM=0F EM=0F A=04 EM=01 EM=01 R3=03 JZ 39 2D 3439 若零标志位置1,跳转到39H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=34 EM=39 MOV A,R0 2F 18 将寄存器R0中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=18 EM=18 A=3E PUSH A 30 24 将累加器A中的数据压入堆栈寄存器ST。 FFEF9F CBFFFF +1 +1 写入 EM=24 EM=24 ST=3E MOV A,R1 31 19 将寄存器R1中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=19 EM=19 A=24 SUB R0,A 32 10 从寄存器R0中减去累加器A中的数,并影响标志位。 FFFF8F FFF7F7 FFFA99 CBFFFF +1 +1 +1 +1 写入 EM=10 EM=10 W=24 EM=10 A=3E EM=10 R0=1A JC 19 33 4019 若进位标志位置1,跳转到19H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=40 EM=19 JMP 27 35 3C27 跳转到27H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=3C EM=27 SHL R2 27 1E 寄存器R2中的数不带进位向左移一位,并不影响标志位。 FFF7F7 FFF9DF CBFFFF +1 +1 +1 写入 EM=1E EM=1E A=01 EM=1E R2=02 SHR R1 28 21 寄存器R1中的数不带进位向右移一位,并不影响标志位。 FFF7F7 FFF9BF CBFFFF +1 +1 +1 写入 EM=21 EM=21 A=24 EM=21 R1=12 ADD R2,#01 29 0601 将立即数01H加入到寄存器R2中,并影响标志位。 FFF7F7 C7FFEF FFFA98 CBFFFF +1 +1 +1 +1 +1 写入 EM=06 EM=06 A=02 EM=01 W=01 EM=01 R2=03 SUB R3.#01 2B 0F01 从寄存器R3中减去立即数01H,并影响标志位。 FFF7F7 C7FFEF FFFA99 CBFFFF +1 +1 +1 +1 +1 写入 EM=0F EM=0F A=03 EM=01 EM=01 R3=02 JZ 39 2D 3439 若零标志位置1,跳转到39H地址。 C6FFFF CBFFFF 写入 +1 +1 写入 EM=34 EM=39 MOV A,R0 2F 18 将寄存器R0中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=18 EM=18 A=1A PUSH A 30 24 将累加器A中的数据压入堆栈寄存器ST。 FFEF9F CBFFFF +1 +1 写入 EM=24 EM=24 ST=1A MOV A,R1 31 19 将寄存器R1中的数放入累加器A中。 FFF7F7 CBFFFF +1 +1 写入 EM=19 EM=19 A=12 SUB R0,A 32 10 从寄存器R0中减去累加器A中的数,并影响标志位。 FFFF8F FFF7F7 FFFA99 CBFFFF
展开阅读全文
温馨提示:
得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 教育专区 > 教案示例


本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com