微机原理及应用实验一、二(通信、网络)

时间:2024.4.27

微机原理及应用

       

河北科技大学

信息科学与工程学院


目 录

实验一     汇编语言程序的建立、调试和运行…………………………………………(3)

实验二     两个多位十进制数加减运算编程……………………………………(10)

实验三     8255并行接口应用………………………………………………………(14)

实验四     8251串行接口应用………………………………………………………(18)

实验五     8253定时/计数器应用 …………………………………………………(23)


实验一  汇编语言程序的建立、调试和运行

一、实验目的

1、学习debug状态下,汇编语言程序的编程和运行方法

2、掌握汇编语言程序的建立和运行

3、掌握debug状态下调试和运行汇编语言程序的方法

二、实验原理

debug是调试汇编语言程序的工具,它不仅能跟踪程序的运行,还可显示修改内存与寄存器内容,以便在调试程序中检查程序,找错,改错;它还支持小汇编,直接对小段程序进行汇编;也可对盘进行读写操作。但debug不宜汇编较长的程序,不便于分块程序的设计,不能使用绝大多数ASM和MASM提供的伪指令。

 debug命令以单个字母的命令符开头,然后是命令操作参数,操作参数与操作参数之间,用空格或逗号分开,操作参数与命令符之间用空格隔开,命令的结束符是回车键↙。命令及参数的输入可以是大小写的结合,CtrL +break键中止命令的执行。debug下所用的数均为十六进制数,且不必写H。

三、预习要求

1、用debug汇编语言程序建立过程和调试方法

2、写出预习报告

 (一)、debug的常用命令有:

 1.汇编命令A

 格式:(1)  A<段寄存器名>:<位移>

       (2)  A<段地址>:<位移>

       (3)  A<位移>

       (4)  A

功能:键入该命令后显示段地址和位移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,直到显示下一地址时用户直接键入回车键返回到提示符“—”。其中(1)用指定寄存器内容作段地址,(3)用CS内容作段地址,(4)用CS:0100作地址。

以后其它命令中提及的各种“地址”形式,均为(1)、(2)、(3)中A后的地址形式。

2.反汇编命令U

格式1:U <地址>

格式2:U <地址范围>

功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次U指令后下一地址的值。这样可以连续反汇编。

 3.显示内存命令

 格式:(1)  D<地址>;以CS为段寄存器

 (2)  D<地址范围>

       (3)  D;显示CS:0100起始的一片内容。

功能:以两种形式显示指定内存范围内容。一种形式为十六进制内容,一种形式为相应字节的ASCII码字符,对不可见字符以“·”代替。

 4.修改内存命令E

 格式:(1) E<地址><单元内容>

       (2)  E<地址><单元内容表>

 功能:(1)将指定内容写入指定单元后显示下一地址,可连续键入修改内容,直到新地址出现后键入↙为止。

 (2)将<单元内容表>逐一写入由<地址>开始的一片单元。

 5.填充内存命令F

格式:F <地址范围>  <单元内容表>

功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。

例如:—F 12FF:0000   0100  A↙

      —D 12FF:0000   0100 ↙

6.显示并修改寄存器命令R

格式1:R

格式2:R<寄存器名>

 功能:格式1显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句格式。其中对状态标志FLAG以每位的形式显示。格式2显示指定寄存器内容。

 例如:R IP    ↙

 7.单步执行并显示系统环境T

 格式:T[=<地址>][<条数>]

功能:<地址>的缺省值是当前IP值,<条数>的缺省值是一条。执行由指定地址起始的<条数>指定的若干条指令。 

例如:—T;执行当前指令并显示状态

       —T10;从当前指令始执行10H条指令。  

  8.连续执行命令G

  格式:(1)G=<起始地址> <断点地址>

        (2)G<结束地址>;从IP指向的地址开始执行程序到结束地址。

 9.退出debug命令Q

 —Q ↙

(二)、启动操作系统

 例如:利用串操作传送指令将0FFH送入附加段的0180H开始的128个字节存储单元中,编写一段程序。

1.进入DEBUG状态,用鼠标直接点击debug文件

2.用A命令编辑源程序

一A ↙

××××:0100   MOV   DI,0180  ↙

          0103   MOV   CX,  80   ↙

          0106   MOV   AL,  FF   ↙

          0108   REP    STOSB  ↙

          010A   HLT  ↙

          010B    ↙

3.用U命令反汇编以上源程序

—U CS:0100  ↙

    ××××:0100    BF8001    MOV  DI,0180

    ××××:0103    B98000    MOV  CX,0080

    ××××:0106    BOFF     MOV  AL,FF

    ××××:0108    F3        REPE

    ××××:0109    AA       STOSB

    ××××:010A    F4       HLT

4.若源程序有错可返回第2步用A命令进行修改,再进行第3步。若无错误,可运行程序。

5.用R命令观察程序未执行前,程序中各有关寄存器内容,并填入括号内。

一R  ↙

AL=(   )    DI=(   )     CX=(   )    DS=(   ) 

CS=(   )    IP=(   )

6.用D命令观察程序未执行前,存放结果的存储区的内容。

—D  ES:0180   ↙

7.用T命令执行一条指令,观察DI寄存器内容的变化,并填入此值:

—T   ↙

DI=(   )    IP=(   )    CS=(   )

8.用T命令一条条执行程序,并观察相应寄存器内容或存储单元内容,一直执行到最后一条指令为止。 

9.用D命令观察最终结果

—D  ES:0180  ↙

此时可观察到ES:0180~ES:01FF单元中的内容已全部改为FF。

10.用R命令改变IP值,使它返回到程序的第一条指令处。   

—R   IP   ↙

IP    ××××

      :0100   ↙

11.用R命令以观察IP值;已改为0100

—R   ↙

12.用A命令对存储数据的缓冲区改变位置

—A  0100  ↙

  ××××:0100    MOV   DI,0200  ↙

  ××××:0103  ↙

13.用D命令观察程序执行前,存储区的内容

  —D  ES:0200   ↙

14.用G命令设置断点为HLT指令处

  —G  010A   ↙

15.再用D命令观察执行结果

  —D  ES:0200   ↙

   将会观察到ES:0200~ES:027F的内容改变为FF。

(三)、可执行文件的生成

1、在桌面状态下,点击我的电脑,含有文件夹ASM的驱动器。

  例如:进入全屏幕编辑状态,点击 EDIT ↙

CODE    SEGMENT

             ASSUME  CS:CODE,DS:CODE

START:  MOV  AX,CODE

          MOV  DS,AX

MOV  DX,OFFSET  AA

MOV  AH,09

INT   21H

MOV  AH,4CH

INT   21H

AA        DB ′HOW ARE YOU $′

CODE    ENDS   

END  START

2.汇编源程序

用汇编程序对源程序进行汇编生成机器能够识别的机器语言,即生成了目标文件(*.obj)。汇编的结果给出了程序的错误语句,可以根据错误提示修改源程序。

其操作步骤如下:

点击 MASM ↙

 Microsoft(R)    Macro    Assembler    Version    5.0

 Copyright(c)    Microsoft  Corp  1981—1985,1987

 ALL  rights  reserved

Source   filename   [.ASM] test  ↙

Object    filename   [test.obj]:   ↙

Source   Listing     [NUL.LST]: ↙

Cross—reference     [NUL.CRF]:↙

51736+405848  bytes  Symbol  Space  free

0  warning  errors

0  severe   errors

汇编的对象是用户编写的汇编语言源程序,它必须是以ASM为扩展名。汇编程序的输出文件有三个,第一个目标文件,它以OBJ为扩展名,产生OBJ文件是我们进行汇编操作的主要目的;第二个是列表文件,它以LST为扩展名,列表文件同时给出源程序和机器语言程序,从而可以使调试变得方便,列表文件是可有可无的,如不要,直接键入回车键即可,如需要,则打入文件名和回车;第三是交叉符号表,此表给出了用户定义的所有符号,对每个符号都列出了将其定义的所在行号和引用的符号,并在定义行号上加“#”号,同列表文件一样,交叉符号表为调试工作带来很大的方便。交叉符号表也是可有可无的,如不需要,那么在屏幕上出现提示信息[NUL.CRF]:时,打入回车即可。

汇编过程结束时,会给出源程序中的警告性错误[warning Errors]和严重错误[severe  Errors],前者指一般性错误,后者指语法性错误,当存在这两类错误时,屏幕上除指出错误个数表外,还给出错误信息代号和错误所在的行号。如果汇编过程中有错误,则程序员应该重新用编辑命令进行修改,再进行汇编,最终直到汇编正确通过。要指出的是汇编过程只能指出源程序中的语法错误,并不能指出算法错误和其它错误。

3.用Link命令产生可执行文件(*.EXE文件)

汇编过程根据源程序产生二进制的目标文件(OBJ文件),但OBJ文件用的是浮动地址,它不能直接上机执行。所以还必须使用链接程序(LINK)将OBJ文件转换成可执行的EXE文件。Link命令还可以将一个目标文件和其它多个模块(这些模块是由用户编写的,也可以是某个程序库中存在的)链接起来。

具体操作如下:

点击Link   ↙

此时屏幕上见到如下回答信息:

IBM Personal computer Linker

Version 2.00(C)copyright IBM Corpl981,1982,1983

RUN File[test.EXE]:↙

List File[NUL.MAP]:test ↙

Libraries[.LiB]:↙

Waming:1 NO Stack segment

there was 1 error detected

Link命令有一个输入文件,即OBJ文件,有时,用户程序用到库函数,此时,对于提示信息Libraries[.LiB]要输入库名。Link过程产生两个输出文件,一个是扩展名为EXE的执行文件,产生此文件是Link过程的主要目的,另一个是扩展名MAP的列表分配文件,有人也称它为映像文件,它给出每个段在内存中的分配情况MAP文件也是可有可无的。

4.程序执行

点击 文件名 ↙

如果运行结果不正确可把exe文件装入debug进行调试,发现错误并改正。方法是

点击 debug

  _N  文件名.exe

  _L

  _U

四、实验设备

硬件环境 IBM/PC及其兼容机

软件环境 操作系统WINDOWS95以上版本

调试程序  DEBUG.COM  编辑程序  EDIT.EXE

汇编程序  MASM.EXE    连接程序 LINK.EXE

五、实验内容

调试上面给出的例子程序,并查看运行结果。

可自行测试的程序(供选择参考)

1.显示一个字符‘A’

2.从键盘上读取一个字符并显示

3.间隔0.5秒显示8个A

六、思考题

1.将数据段中0200H字节存储单元中的二位BCD码转换为二个ASCII码送0201H 开始的二个字节单元中,编写一段程序。

2.编写一段程序,在内存中自0200H地址开始的连续七个单元中存入0~9的平方值。要求利用计算法查表求0210H单元中指定数0~9中的任意一数的平方值,并将所求平方值存入0211H单元中。

七、实验报告的要求

实验二  两个多位十进制数加减运算编程

一、实验目的

1.掌握汇编语言程序的基本结构;

2.熟练掌握编写汇编语言程序的基本方法;

二、实验原理

使用汇编语言编写程序,实现将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。

三、预习要求

1、汇编语言程序建立过程和调试方法

2、写出预习报告

四、实验设备

PC机一台

五、实验内容及步骤

1、参考程序框图

 


2、参考程序清单

CRLF   MACRO      ;建立宏指令CRLF

MOV   DL,0DH

MOV   AH,02H

INT    21H

MOV   DL,0AH

MOV   AH,02H

INT    21H

ENDM

DATA   SEGMENT

DATA1  DB 33H,39H,31H,37H,34H ;第一个数据(作为被加数)

DATA2  DB 36H,35H,30H,38H,32H ;第二个数据(作为加数)

DATA   ENDS

STACK  SEGMENT                      ;堆栈段

STA     DB    20 DUP(?)

TOP     EQU    LENGTH  STA

STACK  ENDS

CODE   SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA

START:  MOV    AX,DATA

MOV    DS,AX

MOV    AX,STACK

MOV    SS,AX

MOV    AX,TOP

MOV    SP,AX

MOV    SI,OFFSET DATA2

MOV    BX,05

CALL    DISPL    ;显示被加数

CRLF

MOV    SI,OFFSET DATAl

MOV    BX,05   ;显示加数

CALL    DISPL

CRLF

MOV    DI,OFFSET  DATA2

CALL    ADDA    ;加法运算

MOV    SI,OFFSET DATAl

MOV    BX,05     ;显示结果

CALL    DISPL

CRLF

MOV   AX,4C00H

INT      21H

DISPL   PROC   NEAR           ;显示子功能

DS1:    MOV    AH,02

MOV    DL,[SI+BX-1]   ;显示字符串中一字符

INT      21H

DEC     BX              ;修改编移量

JNZ      DSl

RET

DISPL  ENDP

ADDA  PROC   NEAR

MOV    DX,SI

MOV    BP,DI

MOV    BX,05

AD1:   SUB     BYTE PTR[SI+BX-1],30H

SUB     BYTE PTR[DI+BX-1],30H

DEC     BX      ;将ASCII码表示的数字串转化

                  为十六进制的数字串

JNZ     ADl

MOV    SI,DX

MOV    DI,BP

MOV    CX,05         ;包括进位,共5位

CLC   

AD2:    MOV    AL,[SI]

MOV    BL,[DI]

ADC    AL,BL       ;带进位相加

AAA                 ;非组合BCD码的加法调整

MOV    [SI],AL       ;结果送被加数区

INC     SI

INC     DI           ;指向下一位

LOOP   AD2          ;循环

MOV    SI,DX

MOV    DI,BP

MOV    BX,05

AD3:  ADD    BYTE PTR[SI+BX-1],30H

ADD    BYTE PTR[DI+BX-1],30H

DEC    BX    ;十六进制的数字串转化为ASCII码表示的数字串

JNZ   AD3

RET

ADDA  ENDP

CODE  ENDS

END    START

六、思考题

    自编两个多位十进制数相减程序。

七、实验报告的要求

更多相关推荐:
微机原理及应用实验报告

微机原理及应用实验报告班级姓名学号中南大学机电工程学院精密测控实验室实验二软件程序设计1实验目的1掌握MCS51单片机指令系统及用汇编语言编程技巧2了解和熟悉用MCS51单片机仿真开发机调试程序的方法2实验内容...

微机原理及应用实验报告

实验报告课程名称实验日期学生专业学生学号学生姓名教师姓名成绩南京理工大学机械工程学院实验一DEBUG命令及其操作一实验目的1熟练掌握debug的常用命令学会用debug来调试程序2深入了解数据在存储器中的存取方...

微机原理及应用实验报告

实验报告课程名称实验名称实验日期学生专业学生学号学生姓名教师姓名成绩微机原理及应用实验1DEBUG操作实验实验2汇编程序设计实验实验38253定时计数器实验实验48255并行接口实验年月日至年月日机械工程及其自...

微机原理及应用实验报告(中南大学20xx年)

微机原理及应用实验报告班级姓名学号中南大学机电工程学院精密测控实验室实验二软件程序设计1实验目的1掌握MCS51单片机指令系统及用汇编语言编程技巧2了解和熟悉用MCS51单片机仿真开发机调试程序的方法2实验内容...

微机原理及应用实验报告

实验报告课程名称实验名称实验日期学生专业学生学号学生姓名教师姓名成绩微机原理及应用实验1DEBUG操作实验实验2汇编程序设计实验实验38253定时计数器实验实验48255并行接口实验年月日至年月日南京理工大学机...

微机原理及应用实验报告

微机原理及应用实验报告班级姓名学号座位号中南大学机电工程学院实验一单片机仿真开发机操作和MCS51指令系统应用一实验目的1熟悉MCS51单片机仿真开发机和开发调试软件的操作使用和调整2学会编写和输入汇编语言源程...

微机原理及应用实验报告

微机原理及应用微型计算机技术实验报告预习报告实验一两个多位十进制数相加的实验实验目的1学习数据传送和算术运算指令的用法2熟悉在PC机上建立汇编链接调试和运行8088汇编语言程序的过程实验仪器工业控制计算机一台原...

《微机原理及应用》实验指导书(jian)

实验守则1学生应按照课程教学计划准时上实验课不得迟到早退2实验前认真阅读实验指导书明确实验目的步骤原理预习有关的理论知识并接受实验教师的提问和检查3进入实验室必须遵守实验室的规章制度不得高声喧哗和打闹不准抽烟随...

《微机原理及应用》实验指导(终版)

微机原理及应用实验指导书沈阳化工大学信息工程学院20xx年2月1实验一初级程序的编写与调试实验一实验目的1熟悉在PC上建立汇编连接8086汇编语言程序的过程及操作步骤2熟练掌握DEBUG的常用命令学会用DEBU...

单片机原理及应用实验报告

单片机原理及应用实验报告一选题意义2二单片机AT89C52结构介绍2三实验内容3四实验步骤3五在uvision环境下软件程序设计4六Proteus仿真6七实验器件9八焊接电路实物图10九实验心得101一选题意义...

单片机原理实验报告

桂林航天工业学院电子工程系20xx20xx学年第专业班级学号姓名同组者指导教师任务一单片机控制单灯亮灭一实验目的1初步学会使用KeilVision开发环境和简单程序的编辑编译与运行方法2学习Proteus软件绘...

单片机原理及应用实验报告

实验课程单片机原理及应用实验项目单片机控制LED灯亮灭专业班级学号姓名实验日期实验一单片机控制LED灯实验一实验目的1进一步掌握Keil的使用熟悉单片机C语言编程2学习IO口的使用方法二实验原理发光二级管是半导...

微机原理及应用实验报告(19篇)