《微机原理及接口技术》
实验报告
2013~20##学年第一学期
实验一 Emu8086软件的使用
一、实验目的
1、熟悉汇编语言开发环境。
2、掌握Emu8086软件使用方法。
3、理解寻址方式的意义。
二、实验环境
1、硬件环境:微机。
2、软件环境:Emu8086 4.07。
三、实验内容
1、安装及运行Emu8086
将老师发给大家的emu8086软件安装在自己的微机上,然后双击运行桌面上的快捷方式Emu8086,单击“new”按钮,选择“COM template”,然后单击“OK”按钮。准备在光标闪烁处输入代码。
2、熟悉Emu8086的基本操作
(1)有以下程序段,请正确填空。
MOV AX,10000
MOV BX,0E49AH
ADD AX,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,试写出以下各指令中源操作数的寻址方式,并计算出它们的物理地址。
① MOV AX,[100H]
源操作数的寻址方式是__直接寻址__________,源操作数的物理地址是_10100H__________。
② MOV AX,[BP+10H]
源操作数的寻址方式是__寄存器相对寻址___,源操作数的物理地址是_35210H__________。
③ MOV AX,100H[BX+DI]
源操作数的寻址方式是_相对的基址变址寻址____,源操作数的物理地址是10224H___。
(4)察看存储单元内容
MOV AX,0100H
MOV DS,AX ;试试能否将这两条指令直接写为“MOV DS,0100H”
MOV AX,1234H
MOV [0200H],AX
HLT
第4条指令中的源操作数的寻址方式是_寄存器寻址__,目的操作数的逻辑地址是_0100h:0200h_________,思考该程序段的执行结果是什么?单击上图中最下方的“aux”按钮,选择“memory”,在随之出现的窗口的左上角文本框中输入要查询的存储单元的逻辑地址,找到该存储单元,察看其内容。
实验二 MASM5的汇编语言上机过程
一、实验目的
1、熟悉汇编语言的上机环境
2、掌握汇编程序的编辑、汇编、连接、运行等步骤
二、实验环境
1、硬件环境:微机。
2、软件环境:Masm5.0、Emu8086 4.07。
三、实验内容
汇编语言的上机的一般步骤为:编辑(用编辑程序形成汇编语言源程序)、汇编(用汇编程序将源文件汇编成目标文件)、连接(用连接程序将目标程序转换为可执行文件)、调试运行(执行可执行性文件,若有错误,利用DEBUG调试程序进行调试,直到没有错误为止)。
1、进入DOS系统
单击windows的“开始”按钮,再单击“运行”命令,输入“cmd”命令,进入DOS模式。再利用相应的DOS命令,切换到masm目录下。
2、编辑.asm源程序
在DOS提示符下输入“edit 001.asm”,建立一个汇编源程序文件,本次实验的程序是在屏幕上输出一个字符串“This is a sample program!”,具体程序如下:
DATA SEGMENT
BUF DB 'THIS IS A SAMPLE PROGRAM!'
DB 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,9
LEA DX,BUF
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
3、汇编
在dos提示符下输入命令__masm 001.asm_________,若发现有语法错误,请回到源程序进行修改;若无错误,进行下一步。
4、连接
在dos提示符下输入命令__link 001.obj___。
5、运行
在dos提示符下输入命令“001”,发现屏幕上输出“This is a sample program!”,实验完成。
实验三 字符串操作
一、实验目的
掌握汇编环境下字符串操作方法。
二、实验环境
1、硬件环境:微机。
2、软件环境:Emu8086 4.07。
三、实验内容
字符串buf1是“hello!”,现将内存中的字符串buf1内容传送到buf2。
1、编写程序
运行Emu8086,选择“exe template”,根据题目要求输入并完整以下程序。
DATA SEGMENT
BUF1 DB 'HELLO!'
COUNT EQU _$-buf1________
DATA ENDS
EXTRA SEGMENT
BUF2 DB 6 DUP(0)
EXTRA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EXTRA
START:
MOV AX,DATA
MOV DS,AX
_mov ax,extra__________________
_mov es,ax__________________
MOV CX,COUNT
LEA _si____,BUF1
LEA _di____,BUF2
CLD
_rep movsb________
HLT
CODE ENDS
END START
2、实验执行及观察分析
保存并生成.exe文件,然后运行该程序,在仿真窗口观察其指令,发现程序运行时,DS=_0710h______,ES=__0711h______,从程序中很容易看出,buf1、buf2的偏移地址是_0_____。然后用实验一的方法,单击下方aux-->memory,察看其内存单元,并输入两字符串的逻辑地址,最后对比程序运行前后内存中数据的变化。
实验四 汇编语言基本程序设计
一、实验目的
1、掌握汇编语言的顺序结构设计
2、掌握汇编语言的分支结构设计
3、掌握汇编语言的循环结构设计
二、实验环境
1、硬件环境:微机。
2、软件环境:Emu8086 4.07。
三、实验内容
1、画图说明以下程序中数据在内存的存放形式,并写出程序运行后,AX的内容。
DATA SEGMENT
BUF DB 25,’AB’
BUF1 DW 10,20,30,40
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET BUF
ADD BX,6
MOV AX,[BX]
MOV AH,4CH
INT 21H
CODE ENDS
END START
(1)数据段中的数据在内存的存放形式。
略
(2)程序运行后,AX寄存器的内容为__0___H。
2、调试下面的程序、写出调试结果及程序的功能。
DATA SEGMENT
A DB 23H
B DB 25H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,A
CMP AL,B
JZ NEXT1
MOV DL,'#'
JMP NEXT2
NEXT1:MOV DL,'='
NEXT2:MOV AH,4CH
INT 21H
CODE ENDS
END START
程序运行后,DL=____23______H。
该程序的功能是:__测试数据区中的两数据是否相同,相同时DL=‘=’,不同时DL=’#’__
3、已知以BUF为首地址的10个数(字节型),求其和(设和小于127),结果存放在RES单元(字节型)。
DATA SEGMENT
BUF DB 1H,3H,12H,5H,6H,7H,8H,9H,5H,2H
RES DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,0
MOV CX,0AH
LEA BX,BUF
LP: ADD AL,[BX]
INC BX
LOOP LP
MOV RES,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
程序运行后,RES单元的值为__40___H。
4、在内存中有一数据块,起始地址为BLOCK,数据块中的数据有正有负,要求把其中的正负数据分开,分别放在BUF1、BUF2缓冲区中。
请将下面的程序补充完整,并上机调试。
DATA SEGMENT
BLOCK DB 03H,45H,90H,87H,50H,99H,9EH
CNT EQU $-BLOCK
BUF1 DB CNT DUP(?)
BUF2 DB CNT DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA BX,BLOCK
lea si,buf1
LEA DI,BUF2
MOV CX,CNT
NEXT:MOV AL,[BX]
test al,80h
JZ ZH
MOV [DI],AL
INC DI
JMP A1
ZH:MOV [SI],AL
INC SI
A1:INC BX
loop next
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验四 DOS中断和BIOS中断
一、实验目的
1、 掌握BIOS及DOS功能调用的一般方法。
2、 掌握常用的DOS功能调用。
二、实验环境
1、硬件环境:微机。
2、软件环境:Emu8086 4.07。
三、实验内容
分析并完整程序,观察运行结果
1、从键盘输入一个小写字母,转换成大写字母并在显示器上输出。
CODE SEGMENT
ASSUME CS:CODE
START:MOV AH,01H ;输入一个字符
_int 21h__________
SUB AL,20H ;小写字符转化为大写字符
MOV DL,AL
_mov ah,02h__________ ;输出单个字符
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2、已知以BUF开始的数据区存放若干个英文字母,将大写转换成小写,将小写转换成大写并输出。
DATA SEGMENT
BUF DB ‘asdfhIJKLMN’
CNT EQU $-BUF
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
_lea bx,buf_____________ ;用bx指向该数据区
MOV CX,CNT
NEXT:MOV AL,[BX]
CMP AL,_61h_____ ;判断是否为小写字母
JL DA
SUB AL,20H
MOV [BX],AL
JMP EXIT
DA:ADD AL,20H
MOV [BX],AL
EXIT:INC BX
LOOP NEXT
MOV BYTE PTR [BX],’$’ ;想一想,此处为什么要输入一个’$’
MOV DX,OFFSET BUF ;输出处理后的字符串
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
3、用BIOS中断实现软件延时
运行Emu8086,打开例子程序“traffic_lights.asm”,分析并运行程序。如果要将红绿灯的状态改变时间间隔修改为2s,则该程序的21-24行应变为:
mov cx, 1eh
mov dx, 8480h
mov ah, 86h
int 15h
综合实验 简单接口——8086控制LED
一、实验目的
1、掌握8086与简单外设之间的数据传送方式。
2、掌握protues软件的设计仿真使用方法。
3、掌握端口译码电路的分析设计方法。
二、实验环境
1、硬件环境:微机。
2、软件环境:Emu8086 4.07、protues7.5。
三、实验内容
本实验是设计一个最简单的开关控制LED灯的计算机控制系统。工作原理:首先用8086CPU来读取一个8位开关的状态,然后8086根据此信息控制LED灯的亮灭,如图所示。
1、安装protues7.5软件
打开老师给的软件,双击setup.exe开始安装,然后根据“安装/破解/汉化 说明.txt”中的1-3步进行操作。
2、绘制8086控制LED的电路图
单击“开始”-->“程序”-->“protues 7 professional”-->“ISIS 7 professional”,开始准备绘制电路图。
如左图所示,单击左侧工具栏,选择“元件模式”,然后单击“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(参考程序,可自己编写)
code segment
assume cs:code
start:
mov dx,_8000h______ ;CPU读开关组的状态
_in al,dx_______________
mov dx,_9000h________ ;根据状态,CPU发出信息控制LED灯
_out dx,al_______________
jmp start
code ends
end start
利用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灯循环的依次点亮,程序该如何编写?并进行仿真实验,观察结果。请在下面给出汇编程序。
参考程序:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,9000H
MOV AL,11111110B
NEXT:
OUT DX,AL
ROL AL,1
JMP NEXT
CODE ENDS
END START
微机原理与接口技术实验指导书班级学号099074姓名安徽工业大学计算机学院实验一存贮器读写实验一实验内容对指定地址区间的RAM40…
实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理…
微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编…
微机原理及接口技术实验报告20xx20xx学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一实验目的1熟悉汇编语言开…
大连理工大学本科实验报告课程名称计算机原理课程设计学院系电气工程学院专业电气工程及其自动化班级学号学生姓名20xx年12月30日大…
1程序DATASEGMENTXDW7A8FHDATAENDSCODESEGMENTMAINPROCFARASSUMECSCODED…
SDU微机原理与接口技术实验报告梁聚仁20xx00120xx0微机原理与接口技术实验报告实验一上机练习实验目的1掌握用编辑软件编辑…
计算机在金属材料中的应用实验山东科技大学材料学院目录一调试程序DEBUG二熟悉80486指令系统三熟悉汇编语言汇编程序上机过程四汇…
姓名:XXX学号:XXXXXX指导教师:XXX实验一Debug命令及汇编指令和寻址的应用一、实验内容1、设堆栈段指针SP=1000…
洛阳理工学院实验报告12345洛阳理工学院实验报告678洛阳理工学院实验报告9101112洛阳理工学院实验报告1314洛阳理工学院…
实验一Debug命令及汇编指令和寻址的应用一、实验目的:1、掌握DEBUG的基本命令及其功能,学会用DEBUG调试程序;2、掌握8…