答案版微机原理实验报告.docx
《答案版微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《答案版微机原理实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
![答案版微机原理实验报告.docx](https://file1.bdocx.com/fileroot1/2023-5/26/982c263d-0753-438e-8fa2-9418be1c645e/982c263d-0753-438e-8fa2-9418be1c645e1.gif)
答案版微机原理实验报告
《微机原理及接口技术》
实验报告
2013~2014学年第一学期
班级
姓名
学号
指导教师
实验一Emu8086软件的使用
一、实验目的
1、熟悉汇编语言开发环境。
2、掌握Emu8086软件使用方法。
3、理解寻址方式的意义。
二、实验环境
1、硬件环境:
微机。
2、软件环境:
Emu80864.07。
三、实验内容
1、安装及运行Emu8086
将老师发给大家的emu8086软件安装在自己的微机上,然后双击运行桌面上的快捷方式Emu8086,单击“new”按钮,选择“COMtemplate”,然后单击“OK”按钮。
准备在光标闪烁处输入代码。
2、熟悉Emu8086的基本操作
(1)有以下程序段,请正确填空。
MOVAX,10000
MOVBX,0E49AH
ADDAX,BX
HLT;表示CPU停机
该程序段执行后,AX=__0BAAH___,BX=_E49AH____,CF=__1___,OF=___0__,
SF=___0__,ZF=__0__。
(2)上机调试并验证。
①输入
(1)中的程序段。
②程序输入后,单击工具栏上的“emulate”按钮,开始执行程序。
③认识Emu8086的指令执行界面,如上图所示,并开始单步执行指令,观察每条指令执行后的情况,与自己的思考相验证。
④程序执行完毕,观察各寄存器的值以及flags中各状态的值,检测并纠正自己的错误答案,并找出错误的原因。
(3)寻址方式
已知DS=1000H,ES=2000H,SS=3500H,SI=00A0H,DI=0024H,BX=0100H,BP=0200H,试写出以下各指令中源操作数的寻址方式,并计算出它们的物理地址。
①MOVAX,[100H]
源操作数的寻址方式是__直接寻址__________,源操作数的物理地址是_10100H__________。
②MOVAX,[BP+10H]
源操作数的寻址方式是__寄存器相对寻址___,源操作数的物理地址是_35210H__________。
③MOVAX,100H[BX+DI]
源操作数的寻址方式是_相对的基址变址寻址____,源操作数的物理地址是10224H___。
(4)察看存储单元内容
MOVAX,0100H
MOVDS,AX;试试能否将这两条指令直接写为“MOVDS,0100H”
MOVAX,1234H
MOV[0200H],AX
HLT
第4条指令中的源操作数的寻址方式是_寄存器寻址__,目的操作数的逻辑地址是_0100h:
0200h_________,思考该程序段的执行结果是什么?
单击上图中最下方的“aux”按钮,选择“memory”,在随之出现的窗口的左上角文本框中输入要查询的存储单元的逻辑地址,找到该存储单元,察看其内容。
实验成绩指导教师
实验二MASM5的汇编语言上机过程
一、实验目的
1、熟悉汇编语言的上机环境
2、掌握汇编程序的编辑、汇编、连接、运行等步骤
二、实验环境
1、硬件环境:
微机。
2、软件环境:
Masm5.0、Emu80864.07。
三、实验内容
汇编语言的上机的一般步骤为:
编辑(用编辑程序形成汇编语言源程序)、汇编(用汇编程序将源文件汇编成目标文件)、连接(用连接程序将目标程序转换为可执行文件)、调试运行(执行可执行性文件,若有错误,利用DEBUG调试程序进行调试,直到没有错误为止)。
1、进入DOS系统
单击windows的“开始”按钮,再单击“运行”命令,输入“cmd”命令,进入DOS模式。
再利用相应的DOS命令,切换到masm目录下。
2、编辑.asm源程序
在DOS提示符下输入“edit001.asm”,建立一个汇编源程序文件,本次实验的程序是在屏幕上输出一个字符串“Thisisasampleprogram!
”,具体程序如下:
DATASEGMENT
BUFDB'THISISASAMPLEPROGRAM!
'
DB0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,9
LEADX,BUF
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3、汇编
在dos提示符下输入命令__masm001.asm_________,若发现有语法错误,请回到源程序进行修改;若无错误,进行下一步。
4、连接
在dos提示符下输入命令__link001.obj___。
5、运行
在dos提示符下输入命令“001”,发现屏幕上输出“Thisisasampleprogram!
”,实验完成。
实验三字符串操作
一、实验目的
掌握汇编环境下字符串操作方法。
二、实验环境
1、硬件环境:
微机。
2、软件环境:
Emu80864.07。
三、实验内容
字符串buf1是“hello!
”,现将内存中的字符串buf1内容传送到buf2。
1、编写程序
运行Emu8086,选择“exetemplate”,根据题目要求输入并完整以下程序。
DATASEGMENT
BUF1DB'HELLO!
'
COUNTEQU_$-buf1________
DATAENDS
EXTRASEGMENT
BUF2DB6DUP(0)
EXTRAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
EXTRA
START:
MOVAX,DATA
MOVDS,AX
_movax,extra__________________
_moves,ax__________________
MOVCX,COUNT
LEA_si____,BUF1
LEA_di____,BUF2
CLD
_repmovsb________
HLT
CODEENDS
ENDSTART
2、实验执行及观察分析
保存并生成.exe文件,然后运行该程序,在仿真窗口观察其指令,发现程序运行时,DS=_0710h______,ES=__0711h______,从程序中很容易看出,buf1、buf2的偏移地址是_0_____。
然后用实验一的方法,单击下方aux-->memory,察看其内存单元,并输入两字符串的逻辑地址,最后对比程序运行前后内存中数据的变化。
实验四汇编语言基本程序设计
一、实验目的
1、掌握汇编语言的顺序结构设计
2、掌握汇编语言的分支结构设计
3、掌握汇编语言的循环结构设计
二、实验环境
1、硬件环境:
微机。
2、软件环境:
Emu80864.07。
三、实验内容
1、画图说明以下程序中数据在内存的存放形式,并写出程序运行后,AX的内容。
DATASEGMENT
BUFDB25,’AB’
BUF1DW10,20,30,40
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETBUF
ADDBX,6
MOVAX,[BX]
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(1)数据段中的数据在内存的存放形式。
略
(2)程序运行后,AX寄存器的内容为__0___H。
2、调试下面的程序、写出调试结果及程序的功能。
DATASEGMENT
ADB23H
BDB25H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,A
CMPAL,B
JZNEXT1
MOVDL,'#'
JMPNEXT2
NEXT1:
MOVDL,'='
NEXT2:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
程序运行后,DL=____23______H。
该程序的功能是:
__测试数据区中的两数据是否相同,相同时DL=‘=’,不同时DL=’#’__
3、已知以BUF为首地址的10个数(字节型),求其和(设和小于127),结果存放在RES单元(字节型)。
DATASEGMENT
BUFDB1H,3H,12H,5H,6H,7H,8H,9H,5H,2H
RESDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,0
MOVCX,0AH
LEABX,BUF
LP:
ADDAL,[BX]
INCBX
LOOPLP
MOVRES,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
程序运行后,RES单元的值为__40___H。
4、在内存中有一数据块,起始地址为BLOCK,数据块中的数据有正有负,要求把其中的正负数据分开,分别放在BUF1、BUF2缓冲区中。
请将下面的程序补充完整,并上机调试。
DATASEGMENT
BLOCKDB03H,45H,90H,87H,50H,99H,9EH
CNTEQU$-BLOCK
BUF1DBCNTDUP(?
)
BUF2DBCNTDUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEABX,BLOCK
leasi,buf1
LEADI,BUF2
MOVCX,CNT
NEXT:
MOVAL,[BX]
testal,80h
JZZH
MOV[DI],AL
INCDI
JMPA1
ZH:
MOV[SI],AL
INCSI
A1:
INCBX
loopnext
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验四DOS中断和BIOS中断
一、实验目的
1、掌握BIOS及DOS功能调用的一般方法。
2、掌握常用的DOS功能调用。
二、实验环境
1、硬件环境:
微机。
2、软件环境:
Emu80864.07。
三、实验内容
分析并完整程序,观察运行结果
1、从键盘输入一个小写字母,转换成大写字母并在显示器上输出。
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,01H;输入一个字符
_int21h__________
SUBAL,20H;小写字符转化为大写字符
MOVDL,AL
_movah,02h__________;输出单个字符
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2、已知以BUF开始的数据区存放若干个英文字母,将大写转换成小写,将小写转换成大写并输出。
DATASEGMENT
BUFDB‘asdfhIJKLMN’
CNTEQU$-BUF
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
_leabx,buf_____________;用bx指向该数据区
MOVCX,CNT
NEXT:
MOVAL,[BX]
CMPAL,_61h_____;判断是否为小写字母
JLDA
SUBAL,20H
MOV[BX],AL
JMPEXIT
DA:
ADDAL,20H
MOV[BX],AL
EXIT:
INCBX
LOOPNEXT
MOVBYTEPTR[BX],’$’;想一想,此处为什么要输入一个’$’
MOVDX,OFFSETBUF;输出处理后的字符串
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3、用BIOS中断实现软件延时
运行Emu8086,打开例子程序“traffic_lights.asm”,分析并运行程序。
如果要将红绿灯的状态改变时间间隔修改为2s,则该程序的21-24行应变为:
movcx,1eh
movdx,8480h
movah,86h
int15h
综合实验简单接口——8086控制LED
一、实验目的
1、掌握8086与简单外设之间的数据传送方式。
2、掌握protues软件的设计仿真使用方法。
3、掌握端口译码电路的分析设计方法。
二、实验环境
1、硬件环境:
微机。
2、软件环境:
Emu80864.07、protues7.5。
三、实验内容
本实验是设计一个最简单的开关控制LED灯的计算机控制系统。
工作原理:
首先用8086CPU来读取一个8位开关的状态,然后8086根据此信息控制LED灯的亮灭,如图所示。
1、安装protues7.5软件
打开老师给的软件,双击setup.exe开始安装,然后根据“安装/破解/汉化说明.txt”中的1-3步进行操作。
2、绘制8086控制LED的电路图
单击“开始”-->“程序”-->“protues7professional”-->“ISIS7professional”,开始准备绘制电路图。
如左图所示,单击左侧工具栏,选择“元件模式”,然后单击“P”按钮选择电路图中所需要的元器件;在右图中,在关键字文本框中输入元器件名,选择电路图中所需要的元器件。
还需分别单击左侧工具栏上的“终端模式”和“总线模式”按钮,进行电路绘制。
图中用到的元件包括:
8086、74LS373、74LS138、74LS27(或门)、NOT、74LS245、RES(双击后阻值修改为100欧姆)、RESPACK-8(排阻)、DISPW-8(开关组)、LED-YELLOW(黄色发光二极管)
3、分析IO端口地址
根据自己绘制的电路图,分析IO端口地址。
由图中可以看出,IO1端口对应的地址信息A15-A0中,地址信息__A15、A14、A13、A12____应有具定的值,分别是__1001__,而A0=__0___,其它的地址信息是任意的,但一般常取0,所以IO1的端口地址是___90000____H。
4、编写控制程序io.asm(参考程序,可自己编写)
codesegment
assumecs:
code
start:
movdx,_8000h______;CPU读开关组的状态
_inal,dx_______________
movdx,_9000h________;根据状态,CPU发出信息控制LED灯
_outdx,al_______________
jmpstart
codeends
endstart
利用Emu8086或Masm5软件,对该程序进行汇编连接,生成io.exe文件。
5、仿真实验步骤
(1)绘制好电路图,保存为IO.dsn文件。
(2)编制的汇编程序保存为IO.asm,生成的exe文件是IO.exe,并且要与IO.dsn在同一文件夹内。
(3)在电路图中,双击8086,弹出下图,单击按钮选择程序“IO.exe”,并将内存大小修改为1MB(即Ox10000)。
(4)单击左下角的运行按钮,进行仿真。
拨动开关组中的开关,观察LED灯是否会随之变化。
思考题:
在不改变电路图的情况下,要实现LED灯循环的依次点亮,程序该如何编写?
并进行仿真实验,观察结果。
请在下面给出汇编程序。
参考程序:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,9000H
MOVAL,11111110B
NEXT:
OUTDX,AL
ROLAL,1
JMPNEXT
CODEENDS
ENDSTART