计算机组成原理与汇编实验报告

合集下载

计算机组成实验报告

计算机组成实验报告

计算机组成实验报告计算机组成实验报告(共3篇)篇一:《计算机组成与结构》实验报告11 .实验目的:1).学习和了解TEC-2000 十六位机监控命令的用法;2).学习和了解TEC-2000 十六位机的指令系统;3).学习简单的TEC-2000 十六位机汇编程序设计;2.实验内容:1).使用监控程序的R 命令显示/修改寄存器内容、D 命令显示存储器内容、E 命令修改存储器内容;2).使用 A 命令写一小段汇编程序,U 命令反汇编刚输入的程序,用G 命令连续运行该程序,用T、P 命令单步运行并观察程序单步执行情况;3、实验步骤1).关闭电源,将大板上的COM1 口与PC 机的串口相连;2).接通电源,在PC 机上运行PCEC.EXE 文件,设置所用PC 机的串口为“1”或“2”, 其它的设置一般不用改动,直接回车即可;3).置控制开关为00101(连续、内存读指令、组合逻辑、16 位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。

其它实验相同;4).按一下“RESET”按键,再按一下“START”按键,主机上显示:TEC-2000 CRT MONITOR Version 1.0 April 2001Computer Architectur Lab.,Tsinghua University Programmed by He Jia >5).用R 命令查看寄存器内容或修改寄存器的内容a.在命令行提示符状态下输入:R↙;显示寄存器的内容图片已关闭显示,点此查看图片已关闭显示,点此查看b.在命令行提示符状态下输入:R R0↙;修改寄存器R0 的内容,被修改的寄存器与所赋值之间可以无空格,也可有一个或数个空格主机显示:寄存器原值:_在该提示符下输入新的值,再用R 命令显示寄存器内容,则R0 的内容变为0036。

图片已关闭显示,点此查看6).用D 命令显示存储器内容在命令行提示符状态下输入:D 2000↙会显示从2000H 地址开始的连续128 个字的内容;连续使用不带参数的 D 命令,起始地址会自动加128(即80H)。

计算机组成原理实验报告

计算机组成原理实验报告

计算机组成原理实验报告实验目的,通过本次实验,深入了解计算机组成原理的相关知识,掌握计算机硬件的基本组成和工作原理。

实验一,逻辑门电路实验。

在本次实验中,我们学习了逻辑门电路的基本原理和实现方法。

逻辑门电路是计算机中最基本的组成部分,通过逻辑门电路可以实现各种逻辑运算,如与门、或门、非门等。

在实验中,我们通过搭建逻辑门电路并进行实际操作,深入理解了逻辑门的工作原理和逻辑运算的实现过程。

实验二,寄存器和计数器实验。

在本次实验中,我们学习了寄存器和计数器的原理和应用。

寄存器是计算机中用于存储数据的重要部件,而计数器则用于实现计数功能。

通过实验操作,我们深入了解了寄存器和计数器的内部结构和工作原理,掌握了它们在计算机中的应用方法。

实验三,存储器实验。

在实验三中,我们学习了存储器的原理和分类,了解了不同类型的存储器在计算机中的作用和应用。

通过实验操作,我们进一步加深了对存储器的认识,掌握了存储器的读写操作和数据传输原理。

实验四,指令系统实验。

在本次实验中,我们学习了计算机的指令系统,了解了指令的格式和执行过程。

通过实验操作,我们掌握了指令的编写和执行方法,加深了对指令系统的理解和应用。

实验五,CPU实验。

在实验五中,我们深入了解了计算机的中央处理器(CPU)的工作原理和结构。

通过实验操作,我们学习了CPU的各个部件的功能和相互之间的协作关系,掌握了CPU的工作过程和运行原理。

实验六,总线实验。

在本次实验中,我们学习了计算机的总线结构和工作原理。

通过实验操作,我们了解了总线的分类和各种总线的功能,掌握了总线的数据传输方式和时序控制方法。

结论:通过本次实验,我们深入了解了计算机组成原理的相关知识,掌握了计算机硬件的基本组成和工作原理。

通过实验操作,我们加深了对逻辑门电路、寄存器、计数器、存储器、指令系统、CPU和总线的理解,为进一步学习和研究计算机组成原理奠定了坚实的基础。

希望通过不断的实践和学习,能够更深入地理解和应用计算机组成原理的知识。

《计算机组成原理》实验报告一

《计算机组成原理》实验报告一

《计算机组成原理》实验报告一一、实验目的:编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。

通过本次实验, 学习、掌握运行汇编程序的相关知识。

1、二、实验内容:2、熟悉实验用微机的软、硬件配置(1)硬件: Intel Celeron 500GHz CPU、128M内存(8M作共享显存)、intel810芯片主板、集成i752显卡、maxtro20G硬盘、ps/2接口鼠标、PS/2接口键盘。

(2)软件:DOS 操作系统Windows98 seMASM汇编语言程序3、熟悉运行汇编语言所需的应用程序汇编程序使MASM连接程序使用LINK程序调试程序使用DEBUG程序4、熟悉汇编语言源程序上机操作过程(1)编辑源文件(选择可使用的文本编辑器)(2)汇编源程序文件(3)连接目标文件(4)运行可执行文件5、汇编操作举例用edit编辑myprog.asm文件;(见下图)用MASM.exe编译myprog.asm生成myprog.obj文件;C:\masm\bin> masm.exe由图中可以看出:0 个警告错误0个严格错误汇编通过, 生成mygrog.obj目标文件(如果有严格错误, 汇编不能通过, 必须返回编辑状态更改程序。

)用link.exe命令链接myhprog.obj生成myprog.exe文件!C:\masm\bin> link.exeC:\masm\bin> myprog.exe运行程序结果为:屏幕显示“Hi! This is a dollar sign terminated string.”三、实验总结:1.可以在DOS或Windows状态编辑汇编源程序2.可以使用EDIT 或记事本编辑汇编源程序, 源程序必须以.asm为扩展名。

在记事本中保存文件时, 可以加双引号“myprog.asm”,文件名就不会出现myprog.asm.txt的错误3.熟悉相关的DOS 命令cd 进入子目录mkdir 建立子目录xcopy *.* /s 拷贝当前目录下所有文件及子目录format a: 格式化A盘4.在Windows 系统下运行汇编程序, 有时会有问题, 建议大家熟悉DOS命令,DOS编辑工具, 在DOS状态下运行汇编程序。

计算机组成原理与汇编实验报告

计算机组成原理与汇编实验报告

计算机组成原理与汇编实验报告Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT计算机组成原理与汇编课程设计实验报告目录一、课程设计目标 (3)二、课程设计基本要求 (3)三、课程设计的内容 (3)四、课程设计的要求 (5)五、实验详细设计 (5)1.统计文件中各字母出现的频率 (5)2.用递归计算50以内Fibonacci 数, 以十进制数输出 (9)3.虚拟平台模拟机实验 (11)六、使用说明 (19)七、总结与心得体会 (19)八、参考文献 (20)九、附录 (20)1.字符统计.asm (20)2.斐波那契数(小于50).asm (29)一、课程设计目标通过课程设计使学生综合运用所学过的计算机原理与汇编知识,增强解决实际问题的能力,加深对所学知识的理解与掌握,提高软硬件开发水平,为今后打下基础。

课程设计的目的和要求:1、使学生巩固和加强《计算机原理与汇编语言》课程的基本理论知识。

2、使学生掌握汇编语言程序设计的方法及编程技巧,正确编写程序。

3、使学生养成良好的编程习惯并掌握调试程序的基本方法。

4、使学生养成规范书写报告文档的能力,撰写课程设计总结报告。

5、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。

二、课程设计的基本要求1、认真查阅资料,独立完成设计任务,每道题都必须上机通过。

2、编写预习报告,写好代码,上机调试。

3、独立思考,培养综合分析问题解决问题和调试程序的能力。

4、按时完成课程设计,写出课程设计报告。

三、课程设计的内容1、给定一个英文ASCII码文件,统计文件中英文字母的频率,以十进制形式输出。

2、用递归计算50以内Fibonacci 数, 以十进制数输出.3、虚拟平台的模型机实验,具体要求如下:1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中2)搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进行连线。

计算机组成原理与汇编实验报告

计算机组成原理与汇编实验报告

计算机组成原理与汇编实验报告姓名:学号:学院:信息科学与工程学院班级:实验1 存储器实验➢实验目的⏹掌握静态存储随机存储器RAM的工作特性⏹掌握静态存储随机存储器RAM的读写方法➢实验设备74LS273(一片),静态存储器MEMORY 6116(一片),与门(一片),与非门(一片),单脉冲(一片),开关若干,灯泡若干➢实验原理在微机系统中,常用的静态RAM 有6116、6264、62256 等。

在本实验中使用的是6116。

6116 为2K╳8 位的静态RAM,其逻辑图3.1如下:图3.1 6116逻辑图其中A0~10 为11 根地址线,I/O0~7 为8 根数据线,CS 为片选端,OE 为数据输出选通端,WR 为写信号端。

其工作方式见下表3-1:一片6116(2K×8)构成,其数据线接至数据总线,地址线由地址锁存器(74LS273)给出。

地址灯AD0—AD7 与地址线相连,显示地址线内容。

数据开关经一三态门(74LS245)连至数据总线,分时给出地址和数据。

图3.2 存储器实验原理图因地址寄存器为8 位,接入6116 的地址A7—A0,而高三位A8—A10 接地,所以其实际容量为256 字节。

6116 有三个控制线:CE(片选线)、OE(读线)、WE(写线)。

当片选有效(CE=0)时,OE=0时进行读操作,WE=0 时进行写操作。

本实验中将OE 常接地,在此情况下,当CE=0、WE=0 时进行读操作,CE=0、WE=1 时进行写操作,其写时间与T3 脉冲宽度一致。

控制信号SW-B 为低电平有效,控制信号LDAR 为高电平有效。

➢实验步骤1. 选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。

搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。

搭建好的实验流程图如图 3.3所示图3.3 存储器实验流程图2. 初始化各芯片的控制信号,仔细检查无误后点击【电源开/关】按钮接通电源。

计算机组成原理与汇编实验报告.

计算机组成原理与汇编实验报告.

计算机组成原理与汇编实验报告.计算机组成原理与汇编课程设计实验报告⽬录⼀、课程设计⽬标 (3)⼆、课程设计基本要求 (3)三、课程设计的内容 (3)四、课程设计的要求 (5)五、实验详细设计 (5)1.统计⽂件中各字母出现的频率 (5)2.⽤递归计算50以内Fibonacci 数, 以⼗进制数输出 (9)3.虚拟平台模拟机实验 (11)六、使⽤说明 (19)七、总结与⼼得体会 (19)⼋、参考⽂献 (20)九、附录 (20)1.字符统计.asm (20)2.斐波那契数(⼩于50).asm (29)⼀、课程设计⽬标通过课程设计使学⽣综合运⽤所学过的计算机原理与汇编知识,增强解决实际问题的能⼒,加深对所学知识的理解与掌握,提⾼软硬件开发⽔平,为今后打下基础。

课程设计的⽬的和要求:1、使学⽣巩固和加强《计算机原理与汇编语⾔》课程的基本理论知识。

2、使学⽣掌握汇编语⾔程序设计的⽅法及编程技巧,正确编写程序。

3、使学⽣养成良好的编程习惯并掌握调试程序的基本⽅法。

4、使学⽣养成规范书写报告⽂档的能⼒,撰写课程设计总结报告。

5、通过查阅⼿册和⽂献资料,培养学⽣独⽴分析问题和解决问题的能⼒。

⼆、课程设计的基本要求1、认真查阅资料,独⽴完成设计任务,每道题都必须上机通过。

2、编写预习报告,写好代码,上机调试。

3、独⽴思考,培养综合分析问题解决问题和调试程序的能⼒。

4、按时完成课程设计,写出课程设计报告。

三、课程设计的内容1、给定⼀个英⽂ASCII码⽂件,统计⽂件中英⽂字母的频率,以⼗进制形式输出。

2、⽤递归计算50以内Fibonacci 数, 以⼗进制数输出.3、虚拟平台的模型机实验,具体要求如下:1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中2)搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进⾏连线。

3)输⼊机器指令:选择菜单中的“⼯具”,再选择“模型机调试”,在指令输⼊窗⼝中输⼊如下指令:00000000000100000000100100100000000010110011000000001011010000000000000000000001本实验设计机器指令程序如下:4)这⾥做的是个加法运算,第⼀个加数已经存⼊到内存的0000 1010单元中,第⼆个加数是需要⼿⼯输⼊的。

汇编实验报告(详细版)

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告)内容: 实验一、六、七、八院系专业:计算机学院计算机科学与技术姓名:xxxxxxxxx学号:*******xxxxx完成时间:2012年12月1日计算机组成与汇编语言实验报告printf("输入的二进制数不正确!!");break;}}}if(a[15]=='1')s++;for(i=1;i<16;i++){if(a[15-i]=='1')s+=(1<<i);}printf("二进制: ");puts(a);printf("对应的十进制为: ");printf("%d\n",s);}程序1运行结果:实验情况与体会:运行过程中出现过不能判断是否输错的情况以及权位判断有误等情况,经过思考和修改后修改正确,说明理解好二进制与十进制之间的转换过程很重要。

编程过程中主要碰到的问题是,不够十六位的时候要在前面补零。

转换方法主要是除二求余的方法。

注:篇幅不够,可以另外附页。

计算机组成与汇编语言实验报告姓名xxxx 学号2011004xxxx 计分专业软件工程班级xxxxx 实验日期2012年 12 月 1日实验名称实验六分支结构程序设计实验目的●熟悉有符号定点数的表示。

●掌握原码、补码、反码之间的相互转换程序设计。

实验内容说明:该程序中X=23,Y=45,他们之差的绝对值为22,用16进制表示为0016H,即图中显示的结果2.调试程序2:DATA SEGMENTADD AL, 07HLP4: ADD AL, 30H ;将低四位转化为相应的ASCII码并以字符形式输MOV DL, ALMOV AH, 2INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。

上机实验过程:说明:求出三个数里面的最大数73;3. 编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,否则输出0。

汇编计算机组成实验报告计科07 吴加跃

汇编计算机组成实验报告计科07  吴加跃

计算机组成原理与汇编实验报告班级:计科07学号:0909092807姓名:吴加跃实验一:冒泡排序一、实验目的熟练掌握汇编语言编写程序,熟悉编程环境,掌握课堂所学习的编程语言。

并且熟悉运用冒泡算法。

实现对已知数据的冒泡排序。

二、实验内容1、用记事本或各类编辑器编写一个冒泡排序的汇编程序。

2、对编写的程序进行编译,运行得出正确结果。

三、实验步骤1.在记事本中输入以下代码:DATAS SEGMENT ;数据段DATA1 DB 31H,32H,38H,34H,37H ;定义DATA1为被加数DATA2 DB 34H,35H,39H,37H,31H ;定义DATA2为加数DATAS ENDS STACKS SEGMENT ;堆栈段STA DB 64 DUP(0) ;(伪指令)为STA预留64个字节的存储空间SP_TOP DB 0 ;定义SP_TOP单元的数值为0STACKS ENDS CODES SEGMENT ;代码段ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置数据段 MOV AX,STACKSMOV SS,AX ; 设置堆栈段LEA SP,SP_TOP ; 设置栈顶指针 MOV SI,OFFSET DATA1 ;把DATA1偏移量地址赋予SI MOV BX,05 ;CALL DISPL ; 显示被加数CALL CRLF ; 回车、换行MOV SI,OFFSET DATA2 ; 把DATA2偏移量地址赋予SIMOV BX,05 ;CALL DISPL ; 显示加数CALL CRLF ; 回车、换行MOV DI,OFFSET DATA1 ; 把DATA1偏移量地址赋予DICALL ADDA ;调用ADDA子程序,实行加法运算 MOV BX,05 ;CALL DISPL ; 显示结果CALL CRLF ; 回车、换行MOV AX,4C00H ;INT 21H ;调用DOS21H功能,返回 CRLF PROC NEAR ;回车、显示功能过程定义,属性为NEARMOV DL,0DH ;把回车的ASCII码0DH传给DLMOV AH,02H ;送DOS 的中断调用功能号INT 21H ; DOS 的中断调用 MOV DL,0AH ; 把换行的ASCII码0AH传给DLMOV AH,02H ; 送DOS 的中断调用功能号INT 21H ; DOS 的中断调用RET ; 返回CRLF ENDP ;完成过程定义 DISPL PROC NEAR ;显示功能过程定义,属性为NEAR DSL: MOV AH,02 ;送显示功能号MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21H ; DOS 的中断调用DEC BX ;BX减1,修改偏移量JNZ DSL ;如果BX未减到零,跳到DSL执行指令RET ;返回DISPL ENDP ;完成显示功能子程序定义 ADDA PROC NEAR ;实行加法运算子程序过程定义,属性为NEARMOV DX,SIMOV BP,DIMOV BX,05 TRAN_HEX: SUB BYTE PTR[SI+BX-1],30H ;把ASCII码数转化为十六进制SUB BYTE PTR[DI+BX-1],30HDEC BX ; BX减1,修改偏移量JNZ TRAN_ HEX ; 如果BX未减到零,跳到TRAN_ HEX执行指令MOV SI,DXMOV DI,BPMOV CX,05 ; 包括进位,共5位CLC ;进位标志位CF清零(clear carry flag)THE_ADD: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ; 带进位相加,把结果存在AXAAA ;进行AAA调整,非结合BCD码的加法调整MOV [SI],AL ; 结果送被加数区INC SI ;SI加1INC DI ;DI加1(指向下一位)LOOP THE_ADD ;循环MOV SI,DXMOV DI,BPMOV BX,05 TRAN_ASCI: ADD BYTE PTR[SI+BX-1],30HADD BYTE PTR[DI+BX-1],30H;使用PTR转换属性并相加,将十六进制数转化为ASCII表示DEC BX ; BX减1,修改偏移量JNZ TRAN_ASCI ; 如果BX未减到零,跳到TRAN_ASCI 执行指令RET ;返回ADDA ENDP ;加法子程序定义完成 CODES ENDS ;代码段完成END START2.在cmd窗口dos环境中对上述排序程序进行编译,运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机组成原理与汇编实验报告姓名:学号:学院:信息科学与工程学院班级:实验1 存储器实验实验目的⏹掌握静态存储随机存储器RAM的工作特性⏹掌握静态存储随机存储器RAM的读写方法实验设备74LS273(一片),静态存储器MEMORY 6116(一片),与门(一片),与非门(一片),单脉冲(一片),开关若干,灯泡若干实验原理在微机系统中,常用的静态RAM 有6116、6264、62256 等。

在本实验中使用的是6116。

6116 为2K╳8 位的静态RAM,其逻辑图3.1如下:图3.1 6116逻辑图其中A0~10 为11 根地址线,I/O0~7 为8 根数据线,CS 为片选端,OE 为数据输出选通端,WR 为写信号端。

其工作方式见下表3-1:表3-1工作方式表实验所用的半导体静态存储器电路原理如图3.2 所示,实验中的静态存储器一片6116(2K×8)构成,其数据线接至数据总线,地址线由地址锁存器(74LS273)给出。

地址灯AD0—AD7 与地址线相连,显示地址线内容。

数据开关经一三态门(74LS245)连至数据总线,分时给出地址和数据。

图3.2 存储器实验原理图因地址寄存器为8 位,接入6116 的地址A7—A0,而高三位A8—A10 接地,所以其实际容量为256 字节。

6116 有三个控制线:CE(片选线)、OE(读线)、WE(写线)。

当片选有效(CE=0)时,OE=0时进行读操作,WE=0时进行写操作。

本实验中将OE 常接地,在此情况下,当CE=0、WE=0 时进行读操作,CE=0、WE=1 时进行写操作,其写时间与T3 脉冲宽度一致。

控制信号SW-B 为低电平有效,控制信号LDAR 为高电平有效。

实验步骤1. 选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。

搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。

搭建好的实验流程图如图 3.3所示图3.3 存储器实验流程图2. 初始化各芯片的控制信号,仔细检查无误后点击【电源开/关】按钮接通电源。

3. 写存储器。

给存储器的00、01、02、03、04 地址单元中分别写入数据11H、12 H、13 H、14 H、15 H。

由图3.2 存储器实验原理图看出,由于数据和地址全由一个数据开关给出,因此要分时地给出。

下面的写存储器要分两个步骤,第一步写地址,先关掉存储器的片选(CE=1),打开地址锁存器门控信号(LDAR=1),打开数据开关三态门(SW-B=0),由开关给出要写入的存储单元的地址,双击单脉冲产生T3 脉冲将地址输入到地址锁存器;第二步写数据,关掉地址锁存器门控信号(LDAR=0),打开存储器片选,使之处于写状态(CE=0,WE=1),由开关给出此单元要写入的数据,,双击单脉冲产生T3 脉冲将数据写入到当前的地址单元中。

写其他单元依次循环上述步骤。

写存储器流程如图3.4所示(以向00 号单元写入11H 为例)。

图3.4 写存储器流程图4. 读存储器。

依次读出第00、01、02、03、04 号单元中的内容,观察上述各单元中的内容是否与前面写入的一致。

同写操作类似,读每个单元也需要两步,第一步写地址,先关掉存储器的片选(CE=1),打开地址锁存器门控信号(LDAR=1),打开数据开关三态门(SW-B=0),由开关给出要写存储单元的地址,双击单脉冲产生T3 脉冲将地址输入到地址锁存器;第二步读存储器,关掉地址锁存器门控信号(LDAR=0),关掉数据开关三态门(SW-B=1),片选存储器,使它处于读状态(CE=0,WE=0),此时数据总线上显示的数据即为从存储器当前地址中读出的数据内容。

读其他单元依次循环上述步骤。

读存储器操作流程如图3.5所示(以从00 号单元读出11H 数据为例)图3.5 读存储器流程图思考与分析1.由两片6116(2K*8)怎样扩展成(2K*16)或(4K*8)的存储器?怎样连线?观察思考1.按图4.4-5连接实验线路,向存储器中指定的地址单元输入数据,地址先输入AR寄存器,在地址灯上显示;再将数据送入总线后,存到指定的存储单元,数据在数据显示灯和数码显示管显示。

从存储器中指定的地址单元读出数据, 地址先输入AR寄存器,在地址灯显示;读出的数据送入总线, 通过数据显示灯和数码显示管显示。

(1) 将时序电路模块中的Φ和H23排针相连。

将时序电路模块中的二进制开关“STOP”设置为“RUN”状态、将“STEP”设置为“STEP”状态。

(2) 准备排线13条:8芯4条,2芯9条。

按图4.4-5连接实验线路,仔细查线无误后接通电源。

图4.4-5 存储器实验接线图(3) 向存储器指定的地址送入数据,如:向00单元中输入11,步骤如图4.4-6:图4.4-6 向地址寄存器AR中输入地址00的流程图操作步骤:观察并记录地址灯的变化:地址灯由11010011→11111111(4) 输入要存放的数据“11”,步骤如图4.4-7:图4.4-7 输入要存放的数据“11”的流程图操作步骤:观察并记录数据显示灯和数码显示管的变化:数据显示灯变为00010001数码管显示11(5) 按照“(3)、(4)”的步骤继续向“00”下面的4个地址中输入下述数据:数据显示灯变为00010010数码管显示12数据显示灯变为00010011数码管显示13数据显示灯变为00010100数码管显示14数据显示灯变为00010101数码管显示15(6) 从存储器指定的地址中读出数据。

步骤如图4.4-8:图4.4-8 从00中读出数据的流程图操作步骤:同样从其它4个地址:01, 02, 03, 04中读出数据,观察地址显示灯、数据显示灯和数码显示管的变化,并检查是否和输入的数据一致。

地址显示灯11111111在T3脉冲变为00000000数据显示灯0000000在SW-B=1后变为11111111数码显示管发W/R脉冲之后变为FF2.在进行存储器操作(写/读)是不是必须先往地址寄存器(AR)存入所访问的存储器单元地址?答:是,从存储器中指定的地址单元读出数据, 地址先输入AR寄存器才能进行读写操作。

3.T3在本实验中起了哪些作用,如何区分它们?答:T3可以进行手动发脉冲。

根据在此之前所进行的操作进行区分。

4.在进行存储器读写操作时,CE和WE信号有没有先后顺序?为什么?答:有,应先对CE进行操作,再对WE进行操作。

因为CE禁止存储器读写,只有将CE=0时WE=0时才能从存储器中读出数据。

六、试验心得本次实验中,首先连接线路时应该着重注意接线端口的对应,避免出现排线方向错误对实验结果的影响,同时要仔细对照输入的0或1。

通过此次实验我们对存储器有一个重新整体的认识,同时也是自己在课堂上的知识得使实践和理解,为以后更深的学习打下基础。

实验二(汇编语言):从键盘接受用户所输入的不超过20个的0~99的数,在用户完成输入后对用户所输入的数据进行排序并输出。

要求定义子程序。

实验要求:1)在虚拟实验平台中选择元器件并搭建存储实验2)完成汇编语言程序设计、编写、调试、运行。

3)撰写实验报告实验报告模板:1)实验目的完成从键盘接受用户所输入的不超过20个的0~99的数,在用户完成输入后对用户所输入的数据进行排序并输出。

并定义子程序。

2)实验平台简介模块层次图3)实验原理、步骤及分析本次实验值输入10个数作为测试系统结构图(1)主程序流程图N (2)冒泡排序子程序流程图3.功能模块设计说明(1)main模块输入:从键盘输入十个有符号十进制整数输出:在屏幕上显示排好序的十个十进制整数功能:通过对input,bubblesort,output三个模块的调用实现将屏幕上输入的10个十进制有符号整数进行冒泡排序,然后将排好序的10个十进制有符号整数显示在屏幕上。

(2)input模块输入:从键盘上输入十个有符号十进制整数。

各个整数之间用逗号隔开,最后以‘回车’符结束。

输出:把这十个有符号十进制整数存入buf数组里面。

功能:屏幕上首先显示一行提示信息:“Please input ten decimal integers and use the comma as separation:”。

意思就是要求用户输入10个十进制有符号整数,并且用逗号作为分隔符。

用户开始输入,如果用户输入了除数字、逗号、以及负号以外的符号,屏幕上将显示:“error!”。

然后自动退出程序,不继续执行。

如果用户没有输满10个数,其余数将为0代替。

输完后按回车键表示输入完毕。

(3)bubblesort模块输入:从buf数组里面取数。

输出:将排好序的数存到buf数组里。

功能:利用冒泡排序法对输入的数进行排序。

冒泡排序法的基本思想就是让相邻的两个数进行比较,如果前面的比后面的大,就将两个数调换次序,如果小,就不调换,这样每一次参加排序的数中最大的数就到了最后面,通过n-1次排序就可以完成对所有的数的排序。

(4)output模块输入:从buf数组里面取出排好序的数。

输出:把排好序的数在屏幕上显示出来,各整数之间用逗号隔开。

功能:屏幕上首先显示一行提示信息:“The result is:”。

然后换一行显示排序好的数。

(5)char_int模块输入:从键盘取得一个有符号十进制整数。

输出:把该数转化为二进制数并存入bx寄存器。

功能:把从键盘取得的一个十进制数转换为二进制数,并将该数存入bx寄存器中。

(6)int_char模块输入:从bx寄存器取出一个二进制数。

输出:在屏幕上显示一个有符号十进制整数。

功能:把bx寄存器中的一个二进制数通过模块dec_div转换为十进制数,并在屏幕上显示出来。

(7)dec_div模块输入:从bx寄存器中取得需转换为十进制的数。

输出:在屏幕上显示一位十进制数。

功能:把bx寄存器中的二进制数除以相应的十的幂,并在屏幕上显示一位商。

余数保存在bx寄存器中。

(8)crlf模块输出:向系统发出回车、换行符。

功能:起到回车、换行的作用。

4)实验代码datarea segmentbuf dw 100 dup(?)count = 10flag db 0mess1 db 'Please input ten decimal integers and use the comma as separation:$'mess2 db 'error!$'mess3 db 'The result is: $'datarea ends;----------------------------------------prognam segmentassume cs:prognam,ds:datareastart:push dssub ax,axpush axmov ax,datareamov ds,axcall inputcmp ax,10000dje endallcall bubblesortcall outputendall: mov ah,4chint 21h;----------------------------------------input proclea dx,mess1mov ah,09int 21hcall crlfmov si,0mov cx,countenter: call char_intdec cxcmp dl,','je storecmp dl,13je exit2jne errorstore: mov buf[si],bxadd si,2jmp entererror: call crlflea dx,mess2mov ah,09int 21hmov ax,10000djmp exit3exit2: mov buf[si],bxcall crlfexit3: retinput endp;----------------------------------------- bubblesort procmov cx,countdec cxlg4: mov di,cxmov si,0lg2: mov ax,buf[si]cmp ax,buf[si+2]jle lg3lg5: xchg ax,buf[si+2]mov buf[si],axlg3: add si,2loop lg2mov cx,diloop lg4retbubblesort endp;-------------------------------------- output proclea dx,mess3mov ah,09int 21hcall crlfmov si,0mov di,countnext1: mov bx,buf[si]cmp bl,0jge next4mov dl,'-'mov ah,2int 21hneg bxnext4: call int_charmov dl,','mov ah,02int 21hadd si,2dec dijnz next1call crlfretoutput endp;---------------------------------------char_int procmov bx,0mov flag,0 newchar: mov ah,1int 21hmov dl,alcmp al,2dhjnz next2mov flag,1jmp newcharnext2: sub al,30hjl next3cmp al,9djg next3cbwxchg ax,bxmov cx,10dmul cxxchg ax,bxadd bx,axjmp newchar next3: cmp flag,1jne exit1neg bxexit1: retchar_int endp;----------------------------------- int_char procpush bxpush cxpush sipush dimov cx,1000dcall dec_divmov cx,100dcall dec_divmov cx,10dcall dec_divmov cx,1dcall dec_divpop dipop sipop cxpop bxretint_char endp;--------------------------------------- dec_div procmov ax,bxmov dx,0div cxmov bx,dxmov dl,aladd dl,30hmov ah,02hint 21hretdec_div endp;----------------------------------crlf procmov dl,0ahmov ah,02hint 21hmov dl,0dhmov ah,02hint 21hretcrlf endp;------------------------------------prognam endsend start5)实验结果1.输入正确的字符时,结果如图1所示。

相关文档
最新文档