答案版_微机原理实验报告

《微机原理及接口技术》

实验报告

 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


相关推荐