内含内容如有错漏或未解释清楚之处请私信博主进行讨论,讨论后予以更新
需要word和源码文件交流也请私信博主
摘要
1 前言
2 实验原理
2.1 数据格式
2.2 指令格式
2.3 数据通路框图
3 总体****设计
3.1 微指令流程图
3.2 指令系统
3.3 线路连接图
4 详细设****计
4.1 冒泡排序
4.2 原码一位乘
4.3 堆栈
5 实验结果
5.1 冒泡排序
5.2 原码一位乘
5.3堆栈
6 参考文献
摘要
本次课程设计首先对复杂模型机进行研究,了解复杂模型机的工作原理,然后实现实验箱中硬件接线,并用测试样例测试连线是否正确。测试通过后,对复杂模型机指令系统进行运用和改写,通过编写汇编语言代码和微程序指令,实现了冒泡排序、四位原码一位乘和栈这三个功能。
关键字:复杂模型机 冒泡排序 原码一位乘 栈
1 前言
《计算机组成原理》是高等学校计算机专业的一门核心课程,通过对复杂模型机的学习, 可以 使学生理解单处理机系统的组成结构,以及各功能部件的组成和工作原理, 帮助学生建立计算机的整机概念。
模型机必须能提供不同复杂程度的数据通路和运算功能,必须能实现不同复杂程度的指令系统。 复杂模型机首先要实现一个简单的CPU,并且在此 CPU 的基础上,继续构建一个复杂的模型计算机。 CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0), 指令寄存器(IR)、程序计 数器(PC)和地址寄存器(AR)组成,如图 3.1 所示。这个 CPU 在写入相应的微指令后, 就具备了 执行机器指令的功能,但是机器指令一般存放在主存当中,CPU 必须和主存挂接后,才有实际的意 义, 所以还需要在该 CPU 的基础上增加一个主存和基本的输入输出部件,以构成一个复杂的模型计算机。
模型机设计三大类指令共十五条,其中包括运算类指令、控制转移类指令, 数据传送类指令。 运算类指令包含三种运算,算术运算、逻辑运算和移位运算,设计有 6 条运算类指令,分别为:ADD、 AND 、INC 、SUB 、OR、RR,所有运算类指令都为单字节,寻址方式采用寄存器直接寻址。控制转 移类指令有三条 HLT 、JMP 、BZC,用以控制程序的分支和转移,其中 HLT 为单字节指令,JMP 和 BZC 为双字节指令。数据传送类指令有 IN 、OUT、MOV、LDI、LAD 、STA 共 6 条,用以完成寄存 器和寄存器、寄存器和 I/O、寄存器和存储器之间的数据交换, 除 MOV 指令为单字节指令外,其余 均为双字节指令。
在本次复杂模型机实验中,我们通过硬件接线、程序运行和冒泡排序、补码一位乘法和堆栈功能代码的编写,深入了解了计算机系统各模块的工作原理及相互间的联系,熟悉计算机内部的数据流向,清晰建立计算机整机概念。
2 实验原理
2.1 数据格式
模型机规定采用定点补码表示法表示数据,字长为8位, 8 位全用来表示数据(最高位不表示符号) ,数值表示范围是: 0≤X≤28-1。
寄存器为8位,数据字段长度FFH。
2.2 指令格式
所有单字节指令(ADD、AND、INC、SUB、OR、RR、HLT和MOV)格式如下:
表 2.2.1 单字节指令
7654 | 32 | 10 |
---|---|---|
OP-CODE | RS | RD |
其中, OP-CODE 为操作码,RS 为源寄存器, RD 为目的寄存器, 并规定:
表 2.2.2 RS,RD
RS 或 RD | 选定的寄存器 |
---|---|
00 | R0 |
01 | R1 |
10 | R2 |
11 | R3 |
IN 和 OUT 的指令格式为:
表 2.2.3 IN,OUT
7654 | 32 | 10(1) | 7—0(2) |
---|---|---|---|
OP-CODE | RS | RD | P |
其中括号中的1表示指令的第一字节,2表示指令的第二字节,OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,P为I/O端口号,占用一个字节.用的是地址总线的高两位进行译码,I/O地址空间被分为四个区,如表2.3.2 所示:
表 2.2.4 I/O 地址空间分配
A7 A6 | 选定 | 地址空间 |
---|---|---|
00 | IOY0 | 00-3F |
01 | IOY1 | 40-7F |
10 | IOY2 | 80-BF |
11 | IOY3 | C0-FF |
系统设计五种数据寻址方式,即立即、直接、间接、变址和相对寻址,LDI 指令为立即寻址, LAD 、STA 、JMP 和 BZC 指令均具备直接、间接、变址和相对寻址能力。LDI 的指令格式如下, 第一字节同前一样,第二字节为立即数。
表 2.2.5 寻址
7654(1) | 32(1) | 10(1) | 7—0(2) |
---|---|---|---|
OP-CODE | RS | RD | data |
LAD 、STA 、JMP 和 BZC 指令格式如下。
表 2.2.6 指令格式
7654(1) | 32(1) | 10(1) | 7—0(2) |
---|---|---|---|
OP-CODE | M | RD | D |
其中 M 为寻址模式, 具体见表 2.2.7,以 R2 做为变址寄存器 RI。
表 2.2.7 寻址方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2XnziDOY-1679752238166)(file:///C:\Users\cfreeze\AppData\Local\Temp\ksohtml18156\wps3.jpg)]
2.3 数据通路框图
本模型机的数据通路框图如图 2.4.1 所示。
图 2.3.1 数据通路框图
3 总体设计
3.1 微指令流程图
本模型机共有15条基本指令,表3.1.1列出了各条指令的格式、汇编符号、指令功能。
表3.1.1 基本指令说明
依据功能需要,我们把复杂模型机中的指令进行了一定的更改,把地址为 3B 的保留指令设计为 DEC 指令,并把地址为 15 的微指令更改为自减一指令
3.2 指令系统
经过更改后的微指令二进制代码表如表 3.2.1 所示。
表 3.2.1 二进制代码表
地址 | 十六进制表示 | 高五位 | S3-S0 | A 字段 | B 字段 | C 字段 | UA5-UA0 | |
---|---|---|---|---|---|---|---|---|
00 | 00 00 01 | 00000 | 0000 | 000 | 000 | 000 | 000001 | |
01 | 00 6D 43 | 00000 | 0000 | 110 | 110 | 101 | 000011 | |
03 | 10 70 70 | 00010 | 0000 | 111 | 000 | 001 | 110000 | |
04 | 00 24 05 | 00000 | 0000 | 010 | 010 | 000 | 000101 | |
05 | 04 B2 01 | 00000 | 1001 | 011 | 001 | 000 | 000001 | |
06 | 00 24 07 | 00000 | 0000 | 010 | 010 | 000 | 000111 | |
07 | 01 32 01 | 00000 | 0010 | 011 | 001 | 000 | 000001 | |
08 | 10 60 09 | 00010 | 0000 | 110 | 000 | 000 | 001001 | |
09 | 18 30 01 | 00011 | 0000 | 011 | 000 | 000 | 000001 | |
0A | 10 60 10 | 00010 | 0000 | 110 | 000 | 000 | 010000 | |
0B | 00 00 01 | 00000 | 0000 | 000 | 000 | 000 | 000001 | |
0C | 10 30 01 | 00010 | 0000 | 011 | 000 | 000 | 000001 | |
0D | 20 06 01 | 00100 | 0000 | 000 | 011 | 000 | 000001 | |
0E | 00 53 41 | 00000 | 0000 | 101 | 001 | 101 | 000001 | |
0F | 00 00 CB | 00000 | 0000 | 000 | 000 | 011 | 001011 | |
10 | 28 04 01 | 00101 | 0000 | 000 | 010 | 000 | 000001 | |
11 | 10 30 01 | 00010 | 0000 | 011 | 000 | 000 | 000001 | |
12 | 06 B2 01 | 00000 | 1101 | 011 | 001 | 000 | 000001 | |
13 | 00 24 14 | 00000 | 0000 | 010 | 010 | 000 | 010100 | |
14 | 05 B2 01 | 00000 | 1011 | 011 | 001 | 000 | 000001 | |
15 | 06 32 01 | 00000 | 1100 | 011 | 001 | 000 | 000001 | |
16 | 01 B2 01 | 00000 | 0011 | 011 | 001 | 000 | 000001 | |
17 | 00 24 18 | 00000 | 0000 | 010 | 010 | 000 | 011000 | |
18 | 02 B2 01 | 00000 | 0101 | 011 | 001 | 000 | 000001 | |
1B | 00 53 41 | 00000 | 0000 | 101 | 001 | 101 | 000001 | |
1C | 10 10 1D | 00010 | 0000 | 001 | 000 | 000 | 011101 | |
1D | 10 60 8C | 00010 | 0000 | 110 | 000 | 010 | 001100 | |
1E | 10 60 1F | 00010 | 0000 | 110 | 000 | 000 | 011111 | |
1F | 10 10 20 | 00010 | 0000 | 001 | 000 | 000 | 100000 | |
20 | 10 60 8C | 00010 | 0000 | 110 | 000 | 010 | 001100 | |
28 | 10 10 29 | 00010 | 0000 | 001 | 000 | 000 | 101001 | |
29 | 00 28 2A | 00000 | 0000 | 010 | 100 | 000 | 101010 | |
2A | 04 E2 2B | 00000 | 1001 | 110 | 001 | 000 | 101011 | |
2B | 04 92 8C | 00000 | 1001 | 001 | 001 | 010 | 001100 | |
2C | 10 10 2D | 00010 | 0000 | 001 | 000 | 000 | 101101 | |
2D | 00 2C 2E | 00000 | 0000 | 010 | 110 | 000 | 101110 | |
2E | 04 E2 2F | 00000 | 1001 | 110 | 001 | 000 | 101111 | |
2F | 04 92 8C | 00000 | 1001 | 001 | 001 | 010 | 001100 | |
30 | 00 16 04 | 00000 | 0000 | 001 | 011 | 000 | 000100 | |
31 | 00 16 06 | 00000 | 0000 | 001 | 011 | 000 | 000110 | |
32 | 00 6D 48 | 00000 | 0000 | 110 | 110 | 101 | 001000 | |
33 | 00 6D 4A | 00000 | 0000 | 110 | 110 | 101 | 001010 | |
34 | 00 34 01 | 00000 | 0000 | 011 | 010 | 000 | 000001 | |
35 | 00 00 35 | 00000 | 0000 | 000 | 000 | 000 | 110101 | |
36 | 00 6D 51 | 00000 | 0000 | 110 | 110 | 101 | 010001 | |
37 | 00 16 12 | 00000 | 0000 | 001 | 011 | 000 | 010010 | |
38 | 00 16 13 | 00000 | 0000 | 001 | 011 | 000 | 010011 | |
39 | 00 16 15 | 00000 | 0000 | 001 | 011 | 000 | 010101 | |
3A | 00 16 17 | 00000 | 0000 | 001 | 011 | 000 | 010111 | |
3B | 00 16 15 | 00000 | 0000 | 001 | 011 | 000 | 010101 | |
3C | 00 6D 5C | 00000 | 0000 | 110 | 110 | 101 | 011100 | |
3D | 00 6D 5E | 00000 | 0000 | 110 | 110 | 101 | 011110 | |
3E | 00 6D 68 | 00000 | 0000 | 110 | 110 | 101 | 101000 | |
3F | 00 6D 6C | 00000 | 0000 | 110 | 110 | 101 | 101100 |
3.3 线路连接图
实验线路图如图3.2.1 所示,实验开始前需仔细检查接线后打开实验箱电源。
图3.3.1 线路连接图
4 详细设计
4.1 冒泡排序
4.1.1 冒泡排序流程图
图4.1.1 冒泡排序流程图
*4.1.2 设计原理*
冒泡排序(Bubble Sort)是排序算法里面比较简单的一个排序。它重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止
*4.1.3 总体思路*
先输入待排序的数量至 R0,接着保存长度到 F1H 中,从 F1H 处取出数据送到 R2, 此步作为输入循环控制。
输入待排序数至 R0,采用变址寻址方式保存数据, 其中 E0 为基地址,寄存器R2自减,若R2不等于0,则重新进入输入循环控制中; 若R2等于0,则跳到外循环控制中。
将R3中的数据送到R2中,R2作为内循环控制。接着通过变址寻址方式取值送到R1中, 作为当前比较数,之后把最大值送入到 F2 中,保存最大数。
比较 R0 与 R1 中的数据,若R1大于R0,则保存较大值位置,并取出较小值送到 R0,把较小值 R0 存到原来较大值的位置,再将R2自减;否则 直接进入 R2 自减步骤。判断 R2 是否为 0,若是,R3 自减,否则进入内循环控制。接着判断 R3 是否 为 0,若是则输出结果, 否则进入内循环控制。
*4.1.4 源程序代码*
$P 00 21 ;IN R1,00H
$P 01 00 ;
$P 02 71 ;INC R1
$P 03 D1 ;STA R1,60H
$P 04 60 ;
$P 05 60 ;LDI R0,01H
$P 06 01
;LOOP:
$P 07 C1 ;LAD R1,60H
$P 08 60 ;
$P 09 81 ;SUB R1,R0
$P 0A F0 ;BZC HALT///OUT
$P 0B 26
$P 0C D1 ;STA R1,60H
$P 0D 60 ;
$P 0E 81 ;SUB R1,R0
$P 0F D1 ;STA R1,5FH
$P 10 5F
$P 11 62 ;LDI R2,61H
$P 12 61
;LOOP2:
$P 13 C8 ;LAD R0,[RI],00H
$P 14 00
$P 15 72 ;INC R2
$P 16 C9 ;LAD R1,[RI],00H
$P 17 00 ;
$P 18 84 ;SUB R0,R1
$P 19 F0 ;BZC EX
$P 1A 37 ;
;RET:
$P 1B 60 ;LDI R0,01H
$P 1C 01
$P 1D C3 ;LAD R3,5FH
$P 1E 5F ;
$P 1F 83 ;SUB R3,R0
$P 20 D3 ;STA R3,5FH
$P 21 5F ;
$P 22 F0 ;BZC LOOP
$P 23 07
$P 24 E0 ;JMP LOOP2
$P 25 13
$P 26 62;LDI R2,60HLOOP///OUT
$P 27 60
$P 28 60;LDI R0,03
$P 29 03
$P 2A 72;INC R2
$P 2B C9;LAD R1
$P 2C 00
$P 2D 34;OUT
$P 2E 40
$P 2F 61;DEC R0,LDIR1 01 SUB
$P 30 01
$P 31 84
$P 32 F0;BZC HALT
$P 33 36
$P 34 E0;JMP LOOP
$P 35 2A
$P 36 50 ;HALT
;EX:
$P 37 E0 ;JMP 29
$P 38 39 ;
$P 39 CB ;LAD R3,[RI],00H
$P 3A 00
$P 3B 60 ;LDI R0,01H
$P 3C 01
$P 3D 82 ;SUB R2,R0
$P 3E C8 ;LAD R0,[RI],00H
$P 3F 00
$P 40 72 ;INC R2
$P 41 D8 ;STA R0,[RI],00H
$P 42 00
$P 43 60 ;LDI R0,01H
$P 44 01
$P 45 82 ;SUB R2,R0
$P 46 D9 ;STA R1,[RI],00H
$P 47 00 ;
$P 48 72 ;INC R2
$P 49 E0 ;JMP RET
$P 4A 1B
;存放数字
$P 61 01
$P 62 03
$P 63 02
$P 64 04
$P 65 05
$P 66 06
$P 67 06
$P 68 08
$P 69 09
$P 6A 0A
$P 6B 0B
$P 6C 0C
$P 6D 0D
$P 6E 0E
$P 6F 0F
$P 70 10
$P 71 11
$P 72 12
$P 73 12
$P 74 14
4.2 原码一位乘
4.2.1设计原理
。
4.2.2总体思路
在定点补码一位乘的过程中,给各个寄存器和存储单元赋初值,再通过乘数放乘积的低八位,存储单元和寄存器r0放乘数的高八位,每次先判断乘数最低位是否为0,为1则进行部分积加被乘数,同时保留溢出,保留部分积最低位,将乘数最低位置零,再加上部分积的最低位并进行一次右环移),再将部分积最低位置零再右环移,并加回溢出值,判断结束,运算结束输出结果,否则返回再循环。
4.2.3流程图
定点原码一位乘的总体流程如图所示:
图4.2.3 补码一位乘流程图
4.2.4 源程序代码
$P 00 20 ;IN R0, 00H
$P 01 00 ;
$P 02 21 ;IN R1, 00H ;读取输入的值分别存储到R0和R1里
$P 03 00 ;
$P 04 62 ;LDI R2,F0H
$P 05 F0
$P 06 63 ;LDI R3,0FH
$P 07 0F
$P 08 18 ;AND R0,R2 ;X
$P 09 1D ;AND R1,R3 ;Y
$P 0A 62 ;LDI R2, 00H ;计数
$P 0B 00 ;
$P 0C 63 ;LDI R3, 00H ;部分积
$P 0D 00 ;
$P 0E D0 ;STA 00, F0H, R0 ;存储X的数据到f0单元
$P 0F F0 ;
$P 10 60 ;LDI R0, 00H ;初始化进位标志位为0
$P 11 00 ;
$P 12 D0 ;STA 00H, F4H, R0 ;存储进位标志
$P 13 F4 ;
$P 14 72 ;INC R2
$P 15 60 ;LDI R0,05H ;循环次数:5-1=4
$P 16 05 ;
$P 17 88 ;SUB R0, R2 ;比较循环次数
$P 18 F0 ;BZC Output ;zf=0 end
$P 19 49 ;
$P 1A 60 ;LDI R0,01H
$P 1B 01
$P 1C 14 ;AND R0,R1; 取最后一位的值
$P 1D F0 ;BZC Preser0 ;最后一位为0跳转
$P 1E 21
$P 1F E0 ;JMP Preser1 ;为1跳另一个
$P 20 31
$P 21 60 ;LDI R0,01H;
$P 22 01
$P 23 D2 ;STA 00H, F1H, R2 ;存储计数值
$P 24 F1
$P 25 A1 ;RR R1,R0
$P 26 A3 ;RR R3,R0 ;部分积和Y右移一位
$P 27 4C;MOV R0,R3
$P 28 62;LDI R2,08H
$P 29 08
$P 2A 18;AND R0,R2
$P 2B 01;ADD R1,R0 ;;;右一后将乘数第一位补充上
$P 2C 62 ;LDI R2, 80
$P 2D 80
$P 2E 1E ;AND R2,R3
$P 2F E0;JMP A0;;
$P 30 5C
$P 31 C0 ;LAD 00, F0H, R0 ;取出X
$P 32 F0
$P 33 03 ;ADD R3,R0 ;加一个X
$P 34 F0 ;BZC C0 相加有进位,
$P 35 55 ;
$P 36 D2 ;STA 00H, F1H, R2 ;存储计数值
$P 37 F1
$P 38 62 ;LDI R2, 80H
$P 39 80
$P 3A 60 ;LDI R0,01H
$P 3B 01
$P 3C A1 ;RR R1,R
$P 3D A3 ;RR R3,R0
$P 3E 4C;MOV R0,R3
$P 3F 62; LDI R2,08H
$P 40 08
$P 41 18;AND R0,R2
$P 42 01;ADD R1,R0
$P 43 E0;JMP A0
$P 44 5C
$P 45 C2 ;LAD 00H, F1H, R2
$P 46 F1
$P 47 E0 ;JMP Right
$P 48 14
$P 49 60 ;LDI R0,0FH
$P 4A 0F
$P 4B 62 ;LDI R2,F0H
$P 4C F0
$P 4D 1B ;AND R3,R2
$P 4E 11 ;AND R1,R0
$P 4F 07 ;ADD R3,R1
$P 50 3C ;OUT 40H, R3
$P 51 40;
$P 52 D3 ;STA 00H, F2H, R3
$P 53 F2
$P 54 50 ;HALT
$P 55 60 ;LDI R0 01H
$P 56 01 ;
$P 57 D0 ;STA 00H, F4H, R0 ;存储进位标志
$P 58 F4
$P 59 80 ;SUB R0,R0 ;清空进位标志位
$P 5A E0 ;JMP C1 ;相加有进位返回此处
$P 5B 36
$P 5C C0 ;LAD 00H, F4H, R0 ;取出进位标志位
$P 5D F4 ;
$P 5E 62 ;LDI R2,01H
$P 5F 01 ;
$P 60 82 ;SUB R2,R0
$P 61 F0 ;BZC A2 ;进位为1
$P 62 68 ;
$P 63 62 ;LDI R2, 7FH
$P 64 7F ;
$P 65 1B ;AND R3,R2 ;让部分积最高位置0
$P 66 E0 ;JMP A1 ;;部分积最高位为0
$P 67 45 ;
;A2:
$P 68 62 ;LDI R2, 80H
$P 69 80 ;
$P 6A 9B ;OR R3, R2 ;部分积最高位置1
$P 6B 60 ;LDI R0, 00H ;重置标志位为0
$P 6C 00 ;
$P 6D D0 ;STA 00H, F4H, R0
$P 6E F4 ;
$P 6F E0 ;JMP A1
$P 70 45 ;
4.3 堆栈
4.3.1 设计原理
栈(stack)又称堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称进栈、入栈或者是压栈,它是把新元素放到栈顶元素的上面,使之称为新的栈顶元素;从一个栈删除一个元素又称出栈或者是退栈,它是把栈顶元素删除掉,使其相邻的元素称为新的栈顶元素。当栈中没有任何元素时称为空栈。
4.3.2 栈约束
图4.3.2.1 栈初始化
图4.3.2.2 入栈
图4.3.2.3 出栈
图4.3.2.4 上溢说明
4.3.3 堆栈流程图
图4.2.3 堆栈流程图
4.3.4 源程序代码
START: | 初始化栈栈底栈容量初始化栈内数据 |
---|---|
IN R0,00H | 把00H端口的数据放入R0(输入操作数) |
LDI R1,01H | 装入比较值 |
SUB R1,R0 | 相减 |
BZC P1LDI R1,02H | 装入比较值 |
SUB R1,R0 | 相减 |
BZC P2LDI R1,04H | 装入比较值 |
SUB R1,R0 | 相减 |
BZC P3LDI R1,08H | 装入比较值 |
SUB R1,R0 | 相减 |
BZC P4LDI R1,10H | 装入比较值 |
SUB R1,R0 | 相减 |
BZC P5 | |
P1: | 入栈功能 |
IN R0,00 | 输入入栈元素 |
LDI R2,61HLAD R1,[RI],00HINC R1STA 61H,R1 | 栈内数据个数++R1 |
LDI R2,62HLAD R3,[RI],00HINC R3SUB R3,R1BZC WARN | 判上溢 容量 R3 |
LDI R2,63HLAD R1,[RI],00H ;r1存栈顶地址MOV R2,R1STA R0,[RI],00H | 存数 |
LDI R1,01HSUB R2,R1STA 63H,R2 | 栈顶指针减一 |
JMP START | 跳转到开始 |
P2: | 出栈 |
LDI R2,60HLAD R1,[RI],00HSUB R0,R1BZC WARN | 判下溢,提示 |
LDI R2,63HLAD R0,[RI],00HINC R0STA 63H,R0 | 栈顶指针加一 |
LDI R2,61HLAD R0,[RI],00HLDI R1,01HSUB R2,R1STA 61H,R2 | 栈内数据数-1 |
JMP START | 跳转到开始 |
P3: | 展示元素//需要判断是否是从指针加1开始的 |
LOOP: | |
LAD R0,63H | 取地址 |
LAD R1,R0 | 取地址内的数 |
OUT 40H,R1 | 显示数据 |
INC R0 | 指针++ |
LAD R2,60HINC R2SUB R0,R2BZC START;等于0就跳会选项JMP LOOP;未显示完返回显示 | 判断指针是否等于栈底地址+1(下溢不显示) |
P4: | 展示元素个数 |
LAD R0,61HOUT 40H,R0 | 显示数据 |
JMP START | |
p5: | 清空栈 |
LDI R2,60HLAD R0,[RI],00HLDI R2,63HSTA R0,[RI],00H | 把栈底地址R0写入栈顶地址63H |
WARN: | |
LDI R0,FFH | |
OUT 40H,R0 | |
JMP START |
4.3.5 微程序代码
$P0020
$P0100
$P0261
$P0301
$P0484
$P05F0
$P0621
$P0720
$P0800
$P0961
$P0A02
$P0B84
$P0CF0
$P0D46
$P0E20
$P0F00
$P1061
$P1104
$P1284
$P13F0
$P145F
$P1520
$P1600
$P1761
$P1808
$P1984
$P1AF0
$P1B72
$P1C20
$P1D00
$P1E61
$P1F10
$P2064
$P21F0
$P227A
$P2120
$P2200
$P2362
$P2491
$P25C9
$P2600
$P2771
$P2862
$P2992
$P2ACB
$P2B00
$P2C73
$P2D87
$P2EF0
$P2F84
$P30D1
$P3191
$P3262
$P3393
$P34C9
$P3500
$P3646
$P37D8
$P3800
$P3961
$P3A01
$P3B86
$P3CD2
$P3D93
$P3E62
$P3FFF
$P40C9
$P4100
$P4234
$P4340
$P44E0
$P4500
$P4662
$P4790
$P48C9
$P4900
$P4A84
$P4BF0
$P4C84
$P4D62
$P4E93
$P4FC8
$P5000
$P5170
$P52D0
$P5393
$P5462
$P5591
$P56C8
$P5700
$P5861
$P5901
$P5A86
$P5BD2
$P5C91
$P5DE0
$P5E00
$P5F62
$P6093
$P61C8
$P6200
$P6362
$P6490
$P65C9
$P6600
$P6784
$P68F0
$P6900
$P6A70
$P6B42
$P6CC9
$P6D00
$P6E34
$P6F40
$P70E0
$P715F
$P7262
$P7391
$P74C9
$P7500
$P7634
$P7740
$P78E0
$P7900
$P7A62
$P7B90
$P7CC8
$P7D00
$P7E62
$P7F93
$P80D8
$P8100
$P8300
$P8460
$P8500
$P86D0
$P8791
$P82E0
$P8300
$P8461
$P85FF
$P8634
$P8740
$P88E0
$P8900
$P8A50
$P90FF
$P9100
$P9202
$P93FF
5 实验结果
5.1 冒泡排序
依次输入1,3,2三个数,经排序,数码管应依次显示结果01,02,03,实验结果符合预期,如图5.1.1、5.1.2、5.1.3所示。
图5.1.1 冒泡排序实验结果1
图5.1.2 冒泡排序实验结果2
图5.1.3 冒泡排序实验结果3
5.2 原码一位乘
低四位输入0010(十进制为2),高四位输入0100(十进制为4),高四位和低四位相乘,输出结果应为十进制的08,实验结果符合预期,如图5.2所示。
图5.2 原码一位乘实验结果
5.3堆栈
输入0000 0001,实现入栈功能,将01压入栈,数码管应显示01,实验结果符合预期,如图5.3.1所示
图5.3.1 入栈实验结果
继续入栈,设置栈内容量为2,因此将两个01压入栈,会发生溢出,数码管应显示FF,实验结果符合预期,如图5.3.2所示
图5.3.2 溢出实验结果
输入0000 0010,实现元素出栈功能。
输入0000 0100,实现显示栈内元素功能,之前压入栈的数据为01,因此显示01,运行结果如图5.3.3所示
图5.3.3 显示栈内元素实验结果
输入0000 1000,实现显示栈内元素个数功能,之前将两个01压入栈,因此数码管应显示02,运行结果符合预期,如图5.3.4所示。
图5.3.4 显示栈内元素个数实验结果
输入0001 0000,实现清空栈内元素功能,此时,栈内元素清空,数码管应显示00,实验结果符合预期,如图5.3.5所示
图5.3.5 清空栈实验结果
此时,栈内无元素,在此显示栈内元素,数码管应显示00,实验结果符合预期,如图5.3.6所示。文章来源:https://www.toymoban.com/news/detail-774935.html
文章来源地址https://www.toymoban.com/news/detail-774935.html
到了这里,关于用唐都实验箱通过微指令实现冒泡排序,原码一位乘和栈的相关操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!