实验内容及实验报告
云南大学软件学院 2015-2016 学年下学期
《计算机组成原理与汇编语言实验》
实验报告
姓名:
学号:
班级:
序号:
实验内容和成绩表
要求:
1. 每次实验请按规定时间提交打印的实验报告;
2. 对于实验的过程、结果以及实验涉及的知识点应进行必要的分析、说明和总结; 3. 实验内容要求独立完成,发现抄袭,所有涉及者本次实验以零分计算。本实验课程如果有3次及以上零分,则期末总评成绩不合格;
4. 所有试验内容,除源程序、程序结果的截图以外,都要求手
写;
5. 实验报告批改返还后,请自己保留好,期末装订成册一起提交。 6. 每次提交,不需要打印封面,封面只需要在最后装订成册时在打印。
指导教师 (签名):
实验一 80x86汇编语言程序开发环境
1. 汇编语言程序开发的过程,实验步骤如下:
(1)编写汇编语言源程序, 将编写的源程序保存,保存注意扩展名为.asm 。
(2)用MASM 对源文件进行汇编, 产生.OBJ 文件和.LST 文件。若汇编时提示有错, 返回修改源程序后重新汇编, 直至无错误通过。
(3)用LINK 将.OBJ 文件连接成可执行的.EXE 文件。 2. 实验内容:
(1)输入下面的汇编源程序,按要求保存(文件名要求以自己的学号命名),并使用编译、链接的工具(masm/link)对编写的源程序进行编译链接操作;
3. 思考题:
(1)总结开发一个汇编程序需注意的问题;
(2)说明汇编过程产生的扩展名分别为lst 和crf 的文件的功能; (3)简述使用masmplus 进行汇编程序开发的过程;
汇编源程序:
data segment message db 'This is a sample program of keyboard and disply'
db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'
data ends code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax mov dx,offset message mov ah,9 int 21h
again: mov ah,1
int 21h cmp al,1bh je exit cmp al,61h jc nd cmp al,7ah ja nd and al,11011111b
nd:
exit: code
mov mov int jmp mov int ends end
dl,al ah,2 21h again ah,4ch 21h start
指导教师 (签名):
实验二 debug调试工具
1. 将下面的程序段输入到地址2000:10开始的内存中,使用文件名(你的学号后6位).com 保存输入的程
序段, 成功后直接执行(你的学号后6位).com 程序,给出程序的输出;
jmp 30
db 'hello,asm!software college!',0d,0a,'$' mov ax,2000 mov ds,ax mov dx,12 mov ah,9 int 21 int 20
2. 使用有关debug 命令,将2000:10开始的内存单元初始化为你的学号和姓名拼音(ASCII 码形式)(格
式 学号-姓名拼音)。并使用有关debug 命令进行显示,以验证初始化成功。 3. 在debug 中,如何查看标志寄存器中标志位的取值?使用例子说明。 4. 思考题:
(1)debug 工具可以做什么;
(2)对常用的debug 调试命令进行说明; (3)如何使用debug 对exe 文件进行调试;
指导教师 (签名):
实验三 80x86指令实验
1.. 如图,给出下面各条四则运算和逻辑运算指令的结果,并对结果对验证。
idiv 指令有除法溢出的问题?
2.. 分析解释下图中int 和call 指令执行的过程,给出使用t 命令执行int 和call 指令后cs 、ip 、sp 等3个寄存器的取值并说明原因;并同时给出执行int 和call 指令后将要执行的下一条指令。
3. 在debug 中定义内存单元如下,编程统计下面数据定义中0的个数并保存在al 寄存器中;
E 2000:20 ‘你的学号’
计算机组成原理与汇编元程序设计实验报告
4. 编写程序将内存中的字节数据的位置颠倒过来(即将第1个字节和最后一个字节的内容进行交换,第2个字节和倒数第2个字节的内容进行交换„„),数据定义如下: E 2000:20 ‘你的名字汉语拼音’
说明:
1. 有关的程序段和实验结果,用图片的形式提供;程序段和实验结果的分析写在图片空白的四周。 2. 所有的程序都要求有分析。所有的实验结果要求有说明。
计算机组成原理与汇编元程序设计实验报告
指导教师 (签名):
实验四 80x86伪指令实验
1. 在数据段winder 中定义下面4个变量W A ,WB ,WC ,WD ,并完成有关的操作:
变量WA :用于保存字符类型数据,初始值为你的学号;
变量WB :用于保存4个整数类型数据(取值范围为-32768~+32767),初始值全为0; 变量WC :用于保存12个整数类型数据(取值范围为0~255),不需要初始化; 变量WD :用于保存4个地址类型数据(偏移地址类型),不需要初始化;
在下面的程序框架中,添加代码,实现下面的功能:
功能1)在winder 逻辑段中按要求定义4个变量;
功能2) 使用有关的汇编指令,在变量WB 分配的空间中保存你学号后5位数据与数据0ABH 做四则运算的结果;(说明:如果运算结果溢出,超过16位二进制的取值范围,只想要保存运算结果的低16位取值)
功能3)使用有关的汇编指令,在变量WC 分配的空间中保存变量W A 、WB 、WC 、WD 的type 、length 、size 运算的结果;
功能4)使用有关的汇编指令,在变量WD 分配的空间中保存变量W A 、WB 、WC 、WD 的偏移地址属性;
程序框架
winder segment org 10h ; 定义变量W A 的语句 org 20h ; 定义变量WB 的语句
org 30h ; 定义变量WC 的语句
org $+10h ; 定义变量WD 的语句
winder ends
cod segment assume cs:cod,ds:winder start: mov ax,winder mov ds,ax ; 实现 功能2)的代码 ; 实现 功能3)的代码
; 实现 功能4)的代码 mov ah,4ch int 21h cod ends end start
要求:
1. 在源程序空白位置,对源程序进行必要的注释。
2. 将源程序以你学号后6位为文件名进行保存,并进行编译、链接生成exe 文件,使用debug 调试工具对exe 文件进行调试,提供exe 文件反汇编的截图,在截图空白位置,对各个功能的结果进行分析说明。
指导教师 (签名):
指导教师 (签名):
实验五 80x86汇编语言程序设计
1. 按要求编写一个汇编语言程序,实现下面的功能:
1)在计算机屏幕上输出自己的学号和姓名拼音; 2)在计算机屏幕上输出99乘法表。 1*1=1 1*2=2 1*3=3„„1*8=8 1*9=9 2*1=2 2*2=4 2*3=6„„2*8=16 2*9=18 3*1=3 3*2=6 3*3=7„„3*8=24 3*9=27 „„ „„ „„
8*1=8 8*2=16 8*3=24 „„8*8=64 8*9=72 9*1=9 9*2=18 9*3=27 „„9*8=72 9*9=81
3)从键盘输入任意两个一位10进制数据,按99乘法表的格式输出这两个数据的乘法运算表达式;
2. 编写设计一个2,10,16进制的码制转换程序,程序输入某进制的数据,转换为其他两种进制数据输出,要求:
1) 程序可以输入<65536的任意进制的数据;
2) 保证输入的数据为正确的进制数据,如果输入不正确,给出错误提示,然后要求重新输入;(比如要输入10进制数据,输入的必须是0-9,如果输入其他,则错误)
3)程序执行输入输出的时请先给出一定的提示,比如“please input 4 bit decimal number:” “output decimal data:”等;
要求:
1. 提供算法与程序框图;
2. 提供源程序,在源程序空白位置,对重要的源程序进行必要的注释;
3. 将源程序以你学号后6位为文件名进行保存,并进行编译、链接生成exe 文件,执行生成的exe 文件,并验证程序的各个功能;提供截图,在截图空白位置,进行简单的说明;
指导教师 (签名):
实验六 运算器实验
I 、采用开关控制操作方式进行实验
为了避免总线冲突,首先将控制开关电路的所有开关拨到输出高电平“1”状态,所有对应的指示灯亮。
本实验中所有控制开关拨动,相应指示灯亮代表高电平“1”,指示灯灭代表低电平“0”。 1. 按图接线图接线:
连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。
2 . 通过数据输入电路的拨开关开关向两个数据暂存器中置数:
注意:本实验中ALU-G 和C-G 不能同时为0,否则造成总线冲突,损坏芯片!故每次实验时应时刻保持只有一路与总线相通。
1)置ALU-G =1,关闭ALU 的三态门U31(74LS244),再置C-G=0,打开数据输入电路的三态门;
2) 向数据暂存器LT1(U27,74LS273)中置数:
(1) 设置数据输入电路的数据开关“D 7……D0”为想要输入的数值,如“0101 0101‖; (2) 置LDR1=1,使数据暂存器LT1(U27,74LS273)的控制信号有效,置LDR2=0,使 数据暂存器LT2(U28,74LS273)的控制信号无效;
(3)按一下脉冲源及时序电路的【单脉冲】按钮,给暂存器LT1(U27,74LS273)送时钟,上升沿有效,把数据存在LT1中。
3)向数据暂存器LT2(U28,74LS273)中置数:
(1) 设置数据输入电路的数据开关“D 7……D0”为想要输入的数值,如“1010 1010‖; (2) 置LDR1=0,数据暂存器LT1的控制信号无效,置LDR2=1,使数据暂存器LT2的控制信号有效。
(3) 按一下脉冲源及时序电路的“单脉冲”按钮,给暂存器LT1(U27,74LS273)送时钟,上升沿有效,把数据存在LT2中。
(4) 置LDR1=0、LDR2=0,使数据暂存器LT1、LT2的控制信号无效。
4)检验两个数据暂存器LT1和LT2中的数据是否正确:
(1)置C-G=1,关闭数据输入电路的三态门,然后再置ALU-G=0,打开ALU 的三态门 ; (2)置“S3S2S1S0M ”为“11111”,数据总线显示灯显示数据暂存器LT1中的数 “0101
0101”,表示往暂存器LT1置数正确;
(3)置“S3S2S1S0M ”为“10101”,数据总线显示灯显示数据暂存器LT2中的数“1010
1010” ,表示往暂存器LT2置数正确。 3. 验证74181的算术和逻辑功能:
按实验步骤2往两个暂存器LT1和LT2分别存十六进制数“34H ”和“B6H ”,在给定LT1=34H、LT2=B6H的情况下,通过改变“S3S2S1S0MCn ”的值来改变运算器的功能设置,通过数据总线指示灯显示来读出运算器的输出值F ,填入下表中,参考表1-1的功能表,分析输出F 值是否正确。
74181功能表见表1-1,其中符号“+”表示逻辑“或”运算,符号“*”表示逻辑“与”运算,符号“/”表示逻辑“非”运算,符号“加”表示算术加运算,符号“减”表示算术减运算。
4.验证带进位控制的算术运算功能发生器的功能:
1)进位标志CY 清零:
进位标志指示灯CY 初始状态为灭,表示当前进位为“1”,可按如下步骤对它进行清零操作。
(1)置S3 S2 S1 S0 M=“00000”,AR =0(AR 为进位控制信号);
(2)按一下脉冲源及时序电路的【单脉冲】按钮,进位标志指示灯CY 亮,表示当前进位为“0”。
2)验证带进位运算及进位的锁存功能:
(1) 首先将控制开关电路的所有开关拨到输出高电平“1”状态,所有对应的指示灯亮。 (2) 置ALU-G =1,关闭ALU 的三态门U31(74LS244),再置C-G=0,打开数据输入电路的三态门;置数据输入电路的数据开关“D 7……D0”=“1000 0000”, 置 LDR1=1,使数据暂存器LT1(U27,74LS273)的控制信号有效,置 LDR2=0,使 数据暂存器LT2(U28,74LS273)的控制信号无效,按一下脉冲源及时序电路的【单脉冲】往暂存器LT1存入数据“1000 0000”。
(3) 置数据输入电路的数据开关“D 7……D0”=“0111 1111‖, 置 LDR1=0,使 数据暂存器LT1(U28,74LS273)的控制信号无效, 置 LDR2=1,使数据暂存器LT2(U27,74LS273)的控制信号有效,按一下脉冲源及时序电路的【单脉冲】往暂存器LT2存入数据“0111 1111‖,然后置LDR2=0,使数据暂存器LT2(U27,74LS273)的控制信号无效,准备执行下一步操作。
(4) 置C-G=1,关闭数据输入电路的三态门,然后再置ALU-G=0,打开ALU 的三态门,置“S3S2S1S0M ”为“11111”,数据总线显示灯显示数据暂存器LT1中的数“1000 0000”,表示往暂存器LT1置数正确;置“S3S2S1S0M ”为“10101”,数据总线显示灯显示数据暂存器LT2中的数“0111 1111” ,表示往暂存器LT2置数正确。
(5) 置ALU-G=0(注意先使C-G=1),S3S2S1S0M=“10010”, Cn=1,不带进位操作,AR=0,参考表1-1可知此时执行“F=A加B ”操作,数据总线上显示 “1111 1111 ”,即“1000 0000”加“0111 1111‖的结果。保持LDR1=0和LDR2=0,检查是否产生进位溢出,按一下【单脉冲】,进位指示灯CY 亮,表示无进位溢出;
(6) 置ALU-G=0(注意先使C-G=1),S3S2S1S0M=“10010”, Cn=0,即当前进位为1, AR=0,参考表1-1可知此时执行“F=A加B 加1”操作,数据总线上显示 “0000 0000 ”,
即“1000 0000”加“0111 1111‖加“1”的结果, 保持LDR1=0和LDR2=0,检查是否产生进位溢出,按一下【单脉冲】,进位指示灯CY 熄灭,表示有进位溢出; II 、PC 机联机操作方式实验 1. 实验连线:
2. 实验连线图与采用单片机键盘操作方式实验连线图一样,如图1-6所示。
3. 实验步骤
1). 将实验系统与计算机串口用实验系统的通讯电缆连接; 3). 打开实验系统上的电源开关,启动实验软件:
启动过
程为开始菜单→程序→计算机组成原理试验系统→计算机组成原理试验系统,也可以为该系统软件在桌面上建立快捷方式;
根据提示设置相应参数(下图):(本系统为8位机)
选择与计算机相连的串口,按【确定】进入下一步骤。
4). 在下面的界面中,按【确定】后,再按键盘上【联机】键,系统监控指示灯上显示
【Pc-Con 】,然后显示【8】,表示联机通讯成功,如果没有显示【Pc-Con 】就显示【8】,则联机通讯没有成功,可检查系统。
5). 联机通讯成功后,自动进入实验选择界面:
点击试验一前面的“+”号,再点击试验说明,查看试验步骤过程,然后点击试验步骤,出现下面的界面:
(1). 在数据总线上输入有效十六进制数据,按"Ldr1" ,数据送入暂存器1,观察数据的走向; (2). 在数据总线上输入有效十六进制数据,按"Ldr2" ,数据送入暂存器2,观察数据的走向; (3).参考实验一的功能表表1-1,在S3...Cn 上输入有效数据组合,然后点击其上面的红色区域进行运算,运算器按规定进行运算,运算结果送入三态门,观察数据的走向;
(4). 按"ALUG" ,运算结果送入数据总线,观察数据的走向,观察数据总线指示灯显示的结果是否正确。
计算机组成原理与汇编元程序设计实验报告
指导教师 (签名):
实验七 储存器实验
Ⅰ、采用单片机键盘操作方式进行实验
在进行单片机键盘控制实验时,必须把K4开关置于“OFF ”状态,否则系统处于自锁状态,无法进行实验。
1. 实验连线:
实验连线图如图3-4所示。
连线时应按如下方法:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。
图3-4 实验三键盘实验接线图 2.写数据:
在监控指示灯滚动显示【CLASS SELECt】时按【实验选择】键,显示【ES--_ _ 】输入03或3,按【确认】键,监控指示灯显示为【ES03】,表示准备进入实验三程序,也可按【取消】键来取消上一步操作,重新输入。再按【确认】键,进入实验三程序, 监控指示灯显示为【CtL= - -】,输入1, 表示准备对RAM 进
行写数据,在输入过程中,可按【取消】键进行输入修改。按 【确认】键,监控指示灯显示【Addr- -】,提示输入2位16进制数地址,输入“00”按【确认】键,监控指示灯显示【dAtA 】,提示输入写入存储器该地址的数据(2位16进制数),输入“33”按【确认】键,监控指示灯显示【PULSE 】,提示输入单步,按【单步】键,完成对RAM 一条数据的输入,数据总线显示灯(绿色)显示“0011 0011”,即数据“33”,地址显示灯显示“0000 0000”,即地址“00”,监控指示灯重新显示【Addr- -】,提示输入第二条数据的2位
表3-1 实验三数据表 3.读数据及校验数据:
按【取消】键退出到监控指示灯显示为【ES03】,或按【RST 】退到步骤2初始状态进行实验选择,在监控指示灯显示【ES03】状态下,按 【确认】键,监控指示灯显示为【CtL= - -】,输入2, 表示准备对RAM 进行读数据,在输入过程中,可按【取消】键进行输入修改。按 【确认】键,监控指示灯显示【Addr- -】,提示输入2位16进制数地址,输入“00”,按【确认】键,监控指示灯显示【PULSE 】,提示输入单步,按【单步】键,完成对RAM 一条数据的读出,数据总线显示灯(绿色)显示“0011 0011”,即数据“33”,地址显示灯显示“0000 0000”,即地址“00”,监控指示灯重新显示 【Addr- -】,重复上述步骤读出表3-1的所有数据,注意观察数据总线显示灯和地址显示灯之间的对应关系,检查读出的数据是否正确。
注意:6116为静态随机存储器,如果掉电,所存的数据全部丢失! Ⅱ、采用开关控制操作方式进行实验
本实验中所有控制开关拨动,相应指示灯亮代表高电平“1”,指示灯灭代表低电平“0”。
为了避免总线冲突,首先将控制开关电路的所有开关拨到输出高电平“1”状态,所有对应的指示灯亮。 连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。
1. 按图3-5接线图接线:
图3-5 实验三开关实验接线图
2.往存储器写数据:
以往存储器的(FF ) 地址单元写入数据“AA ”为例,操作过程如下:
(操作) (显示) (操作) (显示) (操作)
(显示) (操作)
2. 按上述步骤按表3-2所列地址写入相应的数据
表3-2
4. 从存储器里读数据:
以从存储器的(FF ) 地址单元读出数据“AA ”为例,操作过程如下:
(操作) (显示) (操作) (显示) (操作) (显示)
4. 按上述步骤读出表3-2数据,验证其正确性。
计算机组成原理与汇编元程序设计实验报告
指导教师 (签名):
实验八 80x86汇编语言程序综合设计
设计一个功能完善的学生成绩管理系统,每个学生成绩按下面的标准格式保存: 姓名(汉语拼音) 学号(6位数字) 专业(拼音) 语言成绩 数学成绩 英语成绩
1)管理系统要求使用密码登录;初始密码设置为你学号的后6位数字,登录后管理员可以修改密码;密码以加密形式保存;(20%)
2)系统要求提供一下的功能:
(1)显示功能:显示系统中所有学生的信息;(10%) (2)数据录入功能:在系统中增加新学生的信息;(10%)
(3)删除功能:可以根据给定的学号将学号指定的学生的信息删除;(10%) (4)查询功能:可以使用学号、姓名查询学生的信息,并将查询的信息显示;(20%)
(5)统计功能:按照各科成绩先高后低的顺序输出全部学生的排名;计算输出各科成绩的平均分;各名学生的平均分;(20%)
(6)程序要求菜单控制;程序能够处理基本的错误信息;退出系统的功能键是ESC 键;(10%)
要求:
1. 提供算法与程序框图;
2. 提供源程序,在源程序空白位置,对重要的源程序进行必要的注释;
3. 将源程序以你学号后6位为文件名进行保存,并进行编译、链接生成exe 文件,执行生成的exe 文件,并验证程序的各个功能;一个功能验证后提供一个截图,在截图空白位置,进行简单的说明;