




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成原理与接口技术课程设计实验报告学院: 计算机科学与工程 专业: 计算机科学与技术 班级: 计科二班 学号: 姓名: 指导老师: 评分:2016年12月28日实验一 验证74LS181运算和逻辑功能1、实验目的(1) 掌握算术逻辑单元(ALU)的工作原理;(2) 熟悉简单运算器的数据传送通路;(3) 画出逻辑电路图及布出美观整齐的接线图;(4) 验证4位运算功能发生器(74LS181)组合功能。2、实验原理ALU能进行多种算术运算和逻辑运算。4位ALU-74LS181能进行16种算术运算和逻辑运算。74ls181芯片介绍:该芯片总共由22个引脚,其中包括8个数据输入端(A0、A1、A2、A3,B0、B1、B2、B3,其中八个输入端中A3和B3是高位),这八个都是低电平有效。还包括S0、S1、S2、S3这四个控制端,这四个控制端主要控制两个四位输入数据的运算,例如加、减、与、或。CN端处理进入芯片前进位值,M控制芯片的运算方式,包括算术运算和逻辑运算。F0、F1、F2、F3是四个二进制输出端,以一个四位二进制形式输出运算的结果。CN4记录运算后的进位。功能表如下:方式M = 1 逻辑运算M = 0算术运算S3 S2 S1 S0逻辑运算CN=1 (无进位)CN =0 (有进位)0 0 0 0F=/AF=AF=A加10 0 0 1F=/(A + B)F=A + BF=(A + B) 加10 0 1 0F=(/A ) BF=A + /BF=( A + /B )加10 0 1 1F=0F=负1(补码形式)F=00 1 0 0F=/(A B)F=A加A ( / B)F=A加A / B加10 1 0 1F=/BF=(A + B) 加A / BF=(A + B)加A / B加10 1 1 0F=A BF=A减B减1F=A减B0 1 1 1F=A/BF=A (/ B)减1F=A (/ B) 1 0 0 0F=/A +BF=A加A BF=A加A B加11 0 0 1F=/( A B)F=A加 BF=A加B加11 0 1 0F=BF=( A + /B )加A BF=( A + /B )加A B加11 0 1 1F=ABF=AB减1F=AB1 1 0 0F=1F=A加 AF=A加 A加11 1 0 1F=A + /BF=(A + B) 加 AF=(A + B) 加 A加11 1 1 0F=A + BF=(A + / B) 加 AF=(A + / B) 加 A加11 1 1 1F=AF=A 减1F=A (上表中的“/”表示求反)ALU-74LS181引脚说明:M=1 逻辑运算,M=0算术运算。引 脚说 明M 状态控制端M=1 逻辑运算;M=0算术运算。S3 S3 S1 S1运算选择控制S3 S3 S1 S1决定电路执行哪一种算术A3 A2 A1 A1运算数1,引脚3为最高位B3 B2 B1 B0运算数2,引脚3为最高位Cn 最低位进位输入Cn =0 有进位;Cn =1 无进位;Cn+4本片产生的进位信号Cn+4=0 有进位;Cn+4=1 无进位;F3 F2 F1 F0F3 F2 F1 F0运算结果,F3为最高位3、实验内容 实验电路图:验证74LS181型4位ALU的逻辑算术功能S3 S2 S1 S0数据1数据2算术运算(M=0)逻辑运算(M=1)CN=1 (无进位)CN =0 (有进位)0 0 0 0AH5HF=AHF=BHF=5H0 0 0 1AH5HF=FHF=0HF=0H0 0 1 0AH5HF=AHF=BHF=5H0 0 1 1AH5HF=FHF=0HF=0H0 1 0 0FH1HF=DHF=EHF=EH0 1 0 1FH1HF=DHF=EHF=EH0 1 1 0FH1HF=DHF=EHF=EH0 1 1 1FH1HF=DHF=EHF=EH1 0 0 0FHFHF=EHF=FHF=FH1 0 0 1FHFHF=EHF=FHF=FH1 0 1 0FHFHF=EHF=FHF=FH1 0 1 1FHFHF=EHF=FHF=FH1 1 0 05H5HF=AHF=BHF=FH1 1 0 15H5HF=AHF=BHF=FH1 1 1 05H5HF=4HF=5HF=5H1 1 1 15H5HF=4HF=5HF=5H4、总结及心得体会本实验通过一个设计一个简单的运算器,使我熟悉了Multisim软件的一些基本操作方法,并掌握了一些简单的电路设计与分析的能力,并对我做下一个运算器的实验有一定的帮助。因为是之前实验课做过的实验,再次做起来过程比较流畅,没有遇到什么大的问题,实验的测试结果与预期的一致。该芯片总共由22个引脚,其中包括8个数据输入端(A0、A1、A2、A3,B0、B1、B2、B3,其中八个输入端中A3和B3是高位),这八个都是低电平有效。还包括S0、S1、S2、S3这四个控制端,这四个控制端主要控制两个四位输入数据的运算,例如加、减、与、或。CN端处理进入芯片前进位值,M控制芯片的运算方式,包括算术运算和逻辑运算。F0、F1、F2、F3是四个二进制输出端,以一个四位二进制形式输出运算的结果。CN4记录运算后的进位。其中AEQB、P和G 这三个端口与本实验无关,所以这里不做额外介绍。实验二 运算器(2)1、实验目的(1) 熟练掌握算术逻辑单元(ALU)的应用方法;(2) 进一步熟悉简单运算器的数据传送原理;(3) 画出逻辑电路图及布出美观整齐的接线图;(4) 熟练掌握有关数字元件的功能和使用方法。(5) 熟练掌握子电路的创建及使用。2、实验原理本实验仿真单总线结构的运算器,原理如图2-2所示。相应的电路如图2-3所示。电路图中,上右下三方的8条线模拟8位数据总线;K8产生所需数据;74244层次块为三态门电路,将部件与总线连接或断开,切记总线上只能有一个输入;两个74273层次块作为暂存工作寄存器DR1和DR2;两个74374层次块作为通用寄存器组(鉴于电路排列情况,只画出两个通用寄存器GR1和GR2,如果可能的话可设计4个或8个通用寄存器);众多的开关作为控制电平或打入脉冲;众多的8段代码管显示相应位置的数据信息;核心为8位ALU层次块。单总线结构的运算器示意图3、实验内容在Multisim画出电路图并仿真8BIT_ALU_BLOCK74244_BLOCK74ls273_BLOCK74374_BLOCKK8_BLOCK运算器示意图完成下列操作:(1) 说明整个电路工作原理。答:同上文实验原理。(2) 说明74LS244N的功能及其在电路中作用,及输入信号G有何作用;答:74LS244为3态8位缓冲器,一般用作总线驱动器,没有锁存的功能,是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。在电路中在部件与总线之间起开关作用,信号G为低电平有效。(3) 说明74LS273N的功能及其在电路中作用,及输入信号CLK有何作用;答:74LS273是一种带清除功能的8D触发器, 1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。在电路中作为数据锁存器,输入信号CLK上跳沿触发工作。(4) 说明74LS374N的功能及其在电路中作用,及输入信号CLK和OC有何作用;答:74LS374为具有三态输出的八D边缘触发器。在电路中寄存数据,CLK上跳沿触发工作,OC为低电平时连接,OC为高电平时断开。(5) K8产生任意数据存入通用寄存器GR1。答:在运算器电路图中将左边的开关全置为1,右边X7的G信号也置为1,使所有模块断开。在K8层次块中通过调节开关在总线上产生数据,将与K8相连的X2的信号G置为0,使数据输出。将寄存器GR1的OC端和CLK端置为0,再将CLK置为1,使总线上的数据存入通用寄存器GR1。(6) K8产生任意数据存入通用寄存器GR2。答:与(5)操作相同,将GR1的OC端和CLK端改为GR2的OC端和CLK端即可。(7) 完成GR1+GR2GR1。答:将X2的G信号置为1,将X10和X6的G信号置为0,使GR1的数据存入暂存器X6,将X3的CLK端置0再置1,使数据存入锁存器X3存起来,并将X10和X6的G信号置1。用类似操作将GR2的数据存入锁存器X11存起来。再将X7的G端口置0,将S0S3置为1、0、0、1,M端置为0,CN端置为1,使X3和X11里面的数据相加存入X7。将X7的G信号置为0,使数据传入主线。将GR1的OC端置0,CLK端置0在置1,将总线上的数据传入GR1。(8) 完成GR1-GR2GR2。答:与(7)操作基本相同,将S0S3置为1、0、0、1,M端置为0,CN端置为1改为将S0S3置为0,1,1,0,M端和CN端也置为0。(9) 完成GR1GR2GR1。答:与(7)操作基本相同,将S0S3置为1、0、0、1,M端置为0,CN端置为1改为将S0S3置为1,1,0,1,M端置为1。(10) 完成GR1GR2GR2。答:与(7)操作基本相同,将S0S3置为1、0、0、1,M端置为0,CN端置为1改为将S0S3置为0,1,1,1,M端置为1。(11) 完成GR1GR2GR1。答:与(7)操作基本相同,将S0S3置为1、0、0、1,M端置为0,CN端置为1改为将S0S3置为0,1,1,0,M端置为1。(12) GR1GR2。(“”表示逻辑非运算)答:基本操作与上面相同,但只传GR1的数据。将S0S3置为1、0、0、1,M端置为0,CN端置为1改为将S0S3置为0,0,0,0,M端置为1。使GR1传入X7,将X7的G信号置为0,使数据传入主线。将GR2的OC端置0,CLK端置0在置1,将总线上的数据传入GR2。(13) GR2GR1。答:与(12)操作基本相同,将GR1改为GR2即可。4、总结及心得体会通过本实验我学会了自定义各种层次模块,弄清楚了74LS244、74LS273、74LS374等数字元件的基本功能和使用方法。对于各种复杂的线路,能布出相对整齐地线路图,并基本弄清楚了整个电路的工作原理。本实验也锻炼了我的动手能力,让我学会了查资料,复习了计算机组成原理的知识,提高了我的知识能力。本实验的实验过程中也出现了一些问题。刚开始对各个模块的功能不熟悉,G信号,OC端口和CLK端口也不会用,后面通过查资料和测试终于弄清楚了其工作原理。开始测试时各个数码管数据都乱七八糟,没有逻辑,后面发现是因为端口未关闭,总线上有多组数据导致。当S0S3为1、0、0、0时,进行算术运算结果不全为A+B,当S0S3为1、0、0、1时,进行算术运算结果为A+B,对于这个问题仍有疑问。实验四 查询式输出实验1、实验目的要求掌握查询式输出的工作原理。2、实验原理通过查询外设的状态信息决定是否输出数据。3、实验内容(1)运行“查询式输出装置”,如图2-5所示。(2)读懂示例程序checkout.asm,以备测试老师询问。(3)编辑、调试、运行输出程序,将自己学号输出到实验台右侧数据缓冲区框中。4、实验结果 (1)实验代码Data segmentBuffer db 1,5,0,5,0,1,0,2,0,8 port_data equ 43aH ;数据端口port_status equ 43bH ;状态端口s db Output 10 data with demand manner. Press any key to exit.,0dh,0ah,$ ;程序功能提示Data endsCode segment Assume cs:code,ds:data ;建立段寄存器和段名之间关系,不具有赋值功能Go: mov ax,data Mov ds,ax ;这两句的作用就是使DS的值为DATA.其中DATA为你定义的数据段,它的作用就是把数据段寄存器DS的值赋为DATA,就是让数据段指向正确的位置. ;因为无法直接数据从内存移到DS,所以需要先把数据移到AX寄存器,然后再移到Ds寄存器。 mov dx,offset s ;显示提示,offset是取偏移地址 mov ah,9 ;调用DOS功能,显示ds:dx处地址 int 21h LEA si,buffer ;si寄存器 MOV CX,10 ;将循环次数(数据块长度)送到CXL1: mov ah,0bh int 21h ;检测有无按键,返回AL=0FFh(有按键)或0(无按键) cmp al,0FFh ;比较指令,得出各个标志位的数据 jz Exit MOV DX,port_status IN AL,DX ;读状态端口 TEST AL,00000001B ;TEST逻辑与运算。如果AL右数第1位为1,jnz将会跳转(B表示二进制数) JNZ L1 Mov al,si ;将si所指向地址存储单元中的数据送给al MOV DX,port_data OUT DX,AL ;数据输出 INC si ;si地址加1 LOOP L1 LA: mov ah,0bh int 21h ;检测有无按键,返回AL=0FFh(有按键)或0(无按键) cmp al,0 jz LAexit: Mov ah,4ch ;结束当前正在执行的程序,返回系统 Int 21hCode ends End go(2)实验运行结果5、总结及心得体会通过本次实验是我第一次接触汇编语言,第一次运用DOS操作台。刚开始的时候看汇编代码是完全看不懂的,然后对汇编代码一行一行的去百度查询并和同学讨论,对其中的各种指令、寄存器等都一个个去查资料和讨论,慢慢对于汇编代码有了一定的了解,能看懂这个程序基本的汇编代码,也能对其进行一些满足自己要求的小修改。如out为数据输出函数。CX为计数寄存器,和LOOP语句一起可以实现代码的循环,10个数的输出就是这样实现的。如JZ和JNZ的不同的判定跳转。又如ax寄存器为累加器,所有的I/O指令都要使用ax与外设接口传递数据,例bx、cx、dx。还有一些其它的等等。另外对于DOS操作台的编译、连接操作也能熟练的运用。本次实验虽然相对后续实验比较简单,但却为我后面的实验打下了很好的基础,在后面的实验中我也会努力去学习更多的关于汇编语言的知识。实验五 LED显示实验1、实验目的要求掌握8255芯片的工作原理、初始化、编程应用。2、实验原理通过三个端口共24位二进制数据控制LED灯亮灭形成走马灯。3、实验内容(1)运行“LED显示实验台”。(2)读懂示例程序led1.asm及led2.asm,以备测试老师询问。(3)编辑、调试、运行程序,让相邻两个LED顺时针(学号末位奇数者)或逆时针(学号末位偶数者)方向旋转亮起来形成走马灯。4、实验结果 (1)实验代码code segment assume cs:code,ds:datago: mov ax,data mov ds,ax mov dx,offset s ;显示提示 mov ah,9 int 21h mov dx,porta+3 mov al,80h Out dx,al ;三端口均初始化为方式0输出L0: mov si,24 mov bx,3H ;低16位初始值设为11(两个灯亮) mov cl,0 ;高8位初始值设为0L1: mov ah,0bH Int 21h ;有无按键 Cmp al,0ffH Jz exit mov dx,porta ;输出24位数 mov al,bl Out dx,al Inc dx mov al,bh Out dx,al Inc dx mov al,cl Out dx,al Call delay05 ;延时 SHL bx,1 ;低16位左移一位 Rcl cl,1 ;高8位左移一位 dec si jnz L1 Jmp L0 ;重新开始Exit: mov ah,4ch Int 21hdelay05 proc near ;循环延时子程序 push cx push bx mov cx,0000Hd1: mov bx,1200hd2: dec bx jnz d2 loop d1 pop bx pop cx retdelay05 endpCode ends End go因源代码中本来就是逆时钟,循环控制处可不用改,只需将低16位置1改为11是开始有两个灯亮即可达到基本效果。(2)实验运行结果5、总结及心得体会通过本实验我对汇编语言有了更进一步的了解,对8255芯片的输入输出也有了一定的了解。如ax、bx、cx、dx四个寄存器都是16位的,分为高8位ah、bh、ch、dh和低8位的al、bl、cl、dl,本实验就是用bx寄存器的16位和cx寄存器的低8位来表示24个灯,用高低电位(即1和0)表示亮和灭。本实验实现走马灯效果用的指令是SHL和RCL,这两个指令都用到了CF这样便将bx和cx两个不同寄存器的之间的移位连接了起来,实现了24个灯的走马灯效果。本次实验中第一次见到延时子程序,经过查资料和讨论也有了一定的了解,通过dec指令和jnz指令循环来控制代码的执行次数来控制时间的多少达到延时的目的。在做这个实验时我们尝试了许多不同地输出方式,如间隔,高8位和低16位单独输出,一个逆时钟,一个逆时钟,循环次数控制只亮部分灯等等。这些虽然不是实验的要求,但对我理解led灯的代码有很大的帮助,多动手实践才能更好地理解和编写代码。实验七 数码管显示实验1、实验目的要求掌握8255芯片的工作原理、初始化、编程应用。2、实验原理通过端口A和端口B的输出实现数字在数码管的显示。3、实验内容修改或自己编写程序将自己学号分三次、间隔1秒显示出来。4、实验结果 (1)实验代码Data segmentPortA equ 404H ;8255的PA口地址 xz db 0f9h,92h,0c0h,92h,0c0h,0f9h,0c0h,0a4h,0c0h,80h s db Display a b c d at the same time. Press any key to exit.,0dh,0ah,$ ;程序功能提示Data endsCode segment assume cs:code,ds:dataStart:mov ax,data mov ds,ax mov dx,offset s ;显示提示 mov ah,9 int 21h mov dx, PortA+3 mov al,80H out dx,al ;PA、PB口初始化为基本输出方式 L0:lea si,xz L2:mov ah,08h ;置位选初值,从左边开始显示 L1:push ax mov al,si ;显示数字 mov dx,PortA out dx,al mov al,ah mov dx,PortA+1 out dx,al call de ;延时 mov ah,0bh int 21h ;检测有无按键,返回AL=0FFh(有按键)或0(无按键) cmp al,0FFh jz Exit inc si ;准备显示下一数字 pop ax shr ah,1 ;选择下一数码管 cmp si,0ah ;判断是否显示完10个学号 jnz l3 jmp l0 L3: cmp ah,0 ;判断是否显示完4位,数码管走完一轮 jnz l1 jmp l2 Exit:mov ah,4ch ;结束程序 int 21h de proc near ;循环延时子程序 push cx push mov cx,0000H d1: mov bx,9000h d2: dec bx jnz d2 loop d1 pop bx pop cx ret de endpCode endsend Start上面那个技巧性高些,但全部显示不好弄 下面这个应该是无技术白痴版本,但显示好弄Data segmentPortA equ 404H ; 8255的PA口地址 xz db 0f9h,92h,0c0h,92h,0ffh,0ffh,0ffh,0ffh,0c0h,0f9h,0c0h,0a4h,0ffh,0ffh,0ffh,0ffh,0c0h,80h,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ;定义09的显示代码s db Display 09 . Press any key to exit .,0dh,0ah,$ ;程序功能提示Data endsCode segment assume cs:code,ds:dataStart:mov ax,data mov ds,ax mov dx,offset s ;显示提示 mov ah,9 int 21h mov dx, PortA+3 mov al,80H out dx,al ;PA、PB口初始化为基本输出方式 L0:lea si,xz mov ah,08h L1:push ax mov al,si ;显示数字 ;mov ah,8h ;置位选初值,四个数码管同时显示 mov dx,PortA out dx,al mov al,ah mov dx,PortA+1 out dx,al call de ;延时 mov ah,0bh int 21h ; 检测有无按键,返回AL=0FFh(有按键)或0(无按键) cmp al,0FFh jz Exit inc si ;准备显示下一数字 pop ax ror ah,1 cmp si,18h ;判断是否显示完 jnz l1 jmp l0 Exit:mov ah,4ch ; 结束程序 int 21h de proc near ; 循环延时子程序 push cx push bx mov cx,3000H d1: mov bx,0 d2: dec bx jnz d2 loop d1 pop bx pop cx ret de endpCode ends end Start (2)实验运行结果 5、总结及心得体会通过本次实验我对汇编语言的理解更加深入,基于前几次实验的基础,本次实验看懂不是非常困难,但自己单独修改代码做到数码管单独显示仍不简单。自己探索学会了一些基本的循环、跳转和判断指令的运用,与同学积极讨论,再借助smg3文件里的一些代码做参考将程序修改成功。本次实验在两个跳转处经常会发生矛盾,将其中一个判断跳转写为L3: cmp ah,0 ;判断是否显示完4位,数码管走完一轮 jnz l1 jmp l2作为另一个的跳转条件才终于将其解决,使程序无错误。只有去尝试并犯错再改正错误才能使自己取得最大的进步和最牢固的记忆。 实验六 小键盘实验1、实验目的要求掌握8255芯片的工作原理、初始化、编程应用。2、实验原理通过端口A的输出和端口B的输入实现按键的判断。3、实验内容(1)运行“LED显示实验台”。(2)读懂示例程序key.asm,以备测试老师询问。(3)借助实验原理图,说明判断某键被按下的方法。(4)解释程序怎样将按键操作转换为DOS命令窗口显示字符的?(5)为什么会将一个字符显示数百次?(6)能否每次按键只显示一次?(说出设想,不一定编程实现) 答:(3)当键被按下时,某个A端口和B端口就连接起来,用cx和bx两个循环来一行一行在电路上找到这个按键。(4)通过disp子程序用xlat指令在table里找按键所代表的到偏移的地址,输出地址里的值,显示在DOS操作台上。(5)因为按键按下去会有一定的持续时间,而cpu读代码的速度非常快,在这段持续时间内cpu对这段代码运行许多次,所以一个字符显示数百次。(6)可以,在代码读按键后加一个延时子程序,让按键在延时时间内断开,使cpu只读一次代码,即可只显示一次字符。4、实验结果(1)实验代码Data segmentPortA equ 408H ; 8255的PA口地址table db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,41h,42h,43h,44h,45h,46hs db Watch and test the keyboard on experiment platform. Press any key to end.,0dh,0ah,$ ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论