四川大学实验报告封面.

时间:2024.5.15

四川大学实验报告封面

四川大学水利水电学院农水系

研究生课程--土壤分析方法

实验报告二

实验名称: 土壤水量转换 探究

实验地点: 水电学院灌排实验室

年 级: 2012级硕士研究生

姓 名: 胡中科

学 号:

实验时间: 2012 年 10 月 25 日


第二篇:四川大学微机原理实验报告


《微机原理与接口技术实验报告》

学  院:   电气信息学院            

班  级:   109班                 

老  师:   

学  号:    

姓  名:                         

实验一    汇编语言程序的上机步骤

一、实验目的:

1、了解汇编语言程序的执行流程。

2、熟悉和使用DEBUG调试工具,分析和读懂一些与硬件相关的小程序。

3、通过对程序的分析,理解计算机程序的执行过程。

4、了解并逐步熟悉汇编语言的编辑方法及特点.

5、复习8086汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。

6、掌握汇编语言的编辑、汇编及连接的过程。

7、了解并逐步掌握运用DEBUG进行调试汇编语言程序

二、实验内容:

以文件名为1.asm源程的序为例,学习汇编语言的上机步骤。汇编语言程序MASM软件由EDIT.COM编辑器,汇编MASM.EXE程序,连接LINK.EXE程序以及DUEBUG.EXE调试程序四个部分组成。汇编语言编制完成后,在计算机上的操作过程就分为四个阶段。

1. 编辑EDIT.COM:首先输入源程序:在记事本里录入,注意在保存时文件格式必须选择所有文件,文件后缀名为.ASM, 即保存时文件名为XXX.asm。

2.用汇编程序MASM.Exe对源程序.ASM文件汇编,生成目标文件.OBJ:双击MASM软件中的MASM.Exe文件框,在命令行后键入源程序名XXX.asm,(如果源程序与MASM软件在同一路径下,可以只键入文件名,而不要后缀)

3.连接LINK.EXE双击MASM软件中的LINK.Exe文件框,在命令行后键入目标文件名XXX.OBJ(如果源程序,目标文件与MASM软件在同一路径下,可以只键入文件名,而不要后缀)如果连接没有错误,就会产生一个XXX.EXE的可执行文件,如果.OBJ文件有错误,连接时会指出错误的原因。

4.运行和调试DEBUG.exe运行可执行文件,即双击XXX.EXE文件框即可,或在DOS下运行此程序,E:\XXX.EXE。

三、程序流程图:

 

四、程序清单与注释:

DATA   SEGMENT

NUM1   DB 35,35H

NUM2   DW  35,35H

NUM3   DB 4 DUP (34,3 DUP (34H))

NUM4   DB   '34AB'

       NUM5   DW   '34','AB'

DATA    ENDS

CODE    SEGMENT

ASSUME CS:CODE,DS:DATA

START:  MOV   AX,DATA

MOV   DS,AX

MOV BX,OFFSET NUM1

MOV AL,[BX]

MOV BX,OFFSET NUM5

MOV AX,[BX]

MOV AH,4CH

INT  21H

CODE    ENDS

END START

五、运行结果:

将以上程序在笔记本中保存为xueyuan1.ASM

编译后显示编译成功:

运行结果如下:

运行可执行文件出现此界面后“闪退”

六、实验心得:

通过本次实验,我了解了一个汇编程序在计算机上的执行步骤,如何实现一个汇编程序的编辑、连接、运行。能看懂一些十分简单的汇编小程序。汇编语言是一种面向机器的“低级”语言,是计算机能够提供给用户的最快而最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。要真正理解计算机的工作过程,理解计算机程序的执行过程,就必须学习汇编语言。也正是因为如此,汇编语言程序设计是计算机专业和电子,自动控制等相关专业的重要课程。

实验二   汇编语言程序设计

                                             ------------- 循环结构程序

一、实验目的:

1.理解8086各种指令的功能。

2.进一步学习程序的调试。

3.掌握循环结构程序的设计编程。

二、实验内容:

用“冒泡“法对一组数300,250,280,240,260,按从小到大的顺序排列。

提示:用冒泡的方法对一组数据元素排序,它的基本方法是:将相邻的两个元素通过比较进行排序,通过多次,多遍的邻元素排序,实现整个一组数的排序。

对于5(N)个元素,整个排序通过4遍(=N-1)邻元素排序完成。每一遍的排序由若干次邻元素的排序组成。

4遍排序中,邻元素的排序依次为4,3,2,1遍。完成第一遍排序后,最大数沉底,已经到达它应占据的位置,不需要参加下一遍的排序。

外循环的次数为CX=4次(N-1),内循环的次数为4,3,2,1(DEC CX)

要求:

1.  编制程序,从键盘输入300,250,280,240,260这五个数,并思考如何输入任意五个数,五个数可以有一位数,二位数,三位数,四位数,五位数,混合输入比较大小;

2.  对这组数用冒泡法进行排序,并输出原始数据及排序后数据,两两数据之间用空格分隔;

3.  利用DEBUG调试工具,用D0命令,查看排序前后,内存数据的变化,以及会用调试命令查看程序运算中寄存器中的值;

4.  去掉最大和最小的两个值,求出其余值的平均值,并输出最大值,最小值和平均值;

5.  用压栈PUSH和出栈POP指令“先进后出”的特点,设计算法将平均值按位逐个输出(即输出263);

6.  用移位指令将平均值以二进制串的形式输出。

7.  设计程序要有模块化的思想,用子程序实现不同的功能;

8.  所有数据输出前要用字符串的输出指令,进行输出提示(如:zui da zhi shi : 300等),所有数据结果能清晰地显示在电脑屏幕上。

三、程序流程图:

子程序有:SRZH(输入转化)子程序,XS(显示)子程序,PAIXU(排序)子程序。

四、程序清单与注释:

DSEG       SEGMENT

           SR      DB   40,?,20 DUP(?)

           VAR     DW   5 DUP(0)

           AVG     DW   ? 

           M       DW   10

           P       DW   3

           D       DW   2

           SHURU   DB   'QING SHU RU SHU JU:','$'

           XS1     DB   0DH,0AH,'YUAN SHI SHU JU:','$'

           XS2     DB   0DH,0AH,'PAI XU HOU SHU JU:','$'

            XS3          DB    0DH,0AH,'ZUI DA ZHI SHI:','$'

            XS4          DB    0DH,0AH,'ZUI XIAO ZHI SHI:','$'

           XS5     DB   0DH,0AH,'PING JUN ZHI SHI:','$'

           XS6     DB   0DH,0AH,'ER JIN ZHI PING JUN ZHI SHI:','$'

DSEG       ENDS

STACK       SEGMENT

            DW        100 DUP (?)

STACK      ENDS 

CSEG       SEGMENT

           ASSUME  CS:CSEG,DS:DSEG,SS:STACK,ES:DSEG

START:     MOV   AX,DSEG

           MOV   DS,AX

           MOV   ES,AX

           MOV        DX,OFFSET SHURU      ;显示输入的提示符

            MOV       AH,09H

           INT        21H

           LEA   DX,SR

           MOV   AH,0AH  ;输入待排序的字符

           INT   21H

           CLD

           MOV        CX,5

            LEA       SI,SR

           ADD   SI,2

           LEA   DI,VAR

LOOPS:       CALL     SRZH                     ;调用子程序SRZH进行转化

            LOOP      LOOPS                    ;循环5次

           MOV        DX,OFFSET XS1        ;显示未排序的提示符

            MOV       AH,09H

            INT       21H

            MOV       CX,5

            LEA       SI,VAR

LOOP1:       CALL     XS              ;调用子程序XS进行未排序的数据显示

            LOOP      LOOP1             ;循环5次

           CLD                 

           MOV   CX,4

           MOV   DX,1

LOOP2:     CALL  PAIXU              ;调用子程序PAIXU进行排序

           INC   DX

           LOOP  LOOP2             

           MOV        DX,OFFSET XS2

            MOV       AH,09H

            INT       21H

            MOV       CX,5           ;计数寄存器CX置5才能显示5个数

            LEA       SI,VAR 

LOOP3:     CALL  XS                  ;调用子程序XS进行排序后结果显示

           LOOP  LOOP3

           MOV        DX,OFFSET XS3 ;输出最大值

            MOV       AH,09H

            INT       21H

            LEA       SI,VAR

           ADD   SI,8               ;SI要进行加8处理后指向排在最后的最大值

            CALL      XS

           MOV        DX,OFFSET XS4 ;输出最小值

            MOV       AH,09H

            INT       21H

            LEA       SI,VAR

            CALL  XS

           MOV   DX,OFFSET XS5  ;输出去掉最大最小值的平均值

            MOV       AH,09H

            INT       21H

           MOV   AX,[SI]          

           MOV   BX,[SI+2]            ;取第二个数据

            ADD       AX,BX          

           MOV   BX,[SI+4]    ;取第三个数据(这样相加相当于去掉了最大最小值)

            ADD       AX,BX

           CWD

           IDIV  P                   ;把相加和除以三来求得平均值

           LEA   SI,AVG                

           MOV   [SI],AX              ;把求得的平均值存入AVG

           CALL  XS

           MOV   DX,OFFSET XS6 ;输出2进制的平均数

            MOV       AH,09H

            INT   21H

            MOV       CX,16

            LEA       SI,AVG

            MOV       AX,[SI]

LP2:    CWD  

            IDIV   D ;采用不断除以二并压入栈的方式得到数据的二进制表示方式

            PUSH      DX

            LOOP  LP2

            MOV       CX,16

LP3:    POP   DX             

            ADD       DL,30H  ;将数据弹出站并且加30H进行ASCII的转换显示

            MOV       AH,2

            INT       21H

            LOOP      LP3

           MOV   AH,4CH

           INT   21H

SRZH       PROC       ;输入转化子程序

         MOV   BX,2  ;BX取2,可以循环3次,相当于把3个字节的数转化为1个字

           MOV   DX,0

ZH1:       MOV   AX,0

           LODSB             ;从SR串中读出数据

           SUB   AL,30H

           ADD   DX,AX

           MOV   AX,DX

           MUL   M

           MOV   DX,AX

           DEC   BX

           JNZ   ZH1

           MOV   AX,DX

           STOSW             ;把字数据以16进制存入VAR数据串中

           INC   SI

           INC   SI          ;跳过3位数后面的空格或逗号

           RET     ;输入转化子程序结束

SRZH       ENDP   

XS          PROC                        ;显示子程序

            LODSW

          MOV BX,3           ;数据在十进制时的是三位数所以计数部分BX置三

ZL1:    CWD

            IDIV  M                 ;采用除以16的方法不断得到每一位数

            PUSH      DX                   ;将每一位压入栈

            DEC       BX

            JNZ       ZL1            

            MOV       BX,3

ZL2:    POP   DX                  ;压完一个数后立即出栈进行显示

            ADD       DL,30H

            DEC       BX

            MOV       AH,2

            INT       21H

            JNZ       ZL2

           MOV   DL,20H                   ;每个数据间由空格隔开

           MOV   AH,2

            INT       21H

            RET                         ;显示子程序结束

XS          ENDP

PAIXU      PROC         ;排序子程序

           PUSH  CX

           MOV   CX,5

           SUB   CX,DX

           MOV   SI,0

RECMP:     MOV   AX,VAR[SI]

           CMP   AX,VAR[SI+2]

           JLE   NOCH

           XCHG  AX,VAR[SI+2]

           XCHG  AX,VAR[SI]

NOCH:      INC   SI

           INC   SI

           LOOP  RECMP

           POP   CX

           RET        ;排序子程序结束

PAIXU      ENDP

CSEG       ENDS

           END   START

五、运行结果:

六、实验心得:

因为很容易出错,编辑的错误很容易找,通过masm.exe和edit.exe就能找到。难的是算法和逻辑上的错误,看了很多遍程序总觉得没有错误,但是就是1个小问题就导致全部出错,比如我的这个程序里的SRZH(输入转化)子程序最后是有2行的INC   SI,相当于SI加了2,就直接跳过数中间的空格或者逗号,但是如果只加了1行的话,程序能运行,但是最后输出的全是乱码。

实验三    8253定时器/计数器与接口实验

                                       ------乐曲程序

一、实验目的:

学习8253计数器2输出方波信号用以驱动扬声器发声的原理,通过程序设置计数器2的输出波形的频率和延续时间,控制扬声器的音调和发生长短。

二、实验内容:

1.设计程序让微机演奏一段两只老虎的乐曲。

2.思考如何让PC机演奏一遍,两遍以及数遍这段两只老虎的乐曲,并修改程序实现。

三、程序流程图:

 

四、程序清单与注释:

DATAS SEGMENT 

DATAS ENDS

STACK SEGMENT PARA STACK 'STACK'

    SSS DW 100 DUP(?)              ;堆栈段代码

STACK ENDS

CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS

START:

    MOV AH,1

    INT 21H

    MOV AH,0

    SUB AX,30H

    MOV CX,AX

AGAIN:

    PUSH CX

    MOV AX,DATAS

    MOV DS,AX

    MOV CX,2

A:  MOV BX,262                ;两只老虎

    CALL YINYUE

    MOV BX,294

    CALL YINYUE

    MOV BX,330

    CALL YINYUE

    MOV BX,262

    CALL YINYUE

    MOV BX,50

    CALL DELAY

    LOOP A

    MOV CX,2

A1: MOV BX,330         ;跑得快

    CALL YINYUE

    MOV BX,349

    CALL YINYUE

    MOV BX,392

    CALL YINYUE

    MOV BX,250

    CALL DELAY

    LOOP A1

    MOV CX,2

A2: MOV BX,392        ;一只没有耳朵,一直没有尾巴

    CALL YINYUE1

    MOV BX,440

    CALL YINYUE1

    MOV BX,392

    CALL YINYUE1

    MOV BX,349

    CALL YINYUE1

    MOV BX,330

    CALL YINYUE

    MOV BX,262

    CALL YINYUE

    MOV BX,50

    CALL DELAY

    LOOP A2

    MOV CX,2

A3: MOV BX,294                 ;真奇怪

    CALL YINYUE

    MOV BX,196

    CALL YINYUE

    MOV BX,262

    CALL YINYUE

    MOV BX,250

    CALL DELAY

    LOOP A3

    POP CX

    DEC CX

    CMP CX,0

    JNZ AGAIN

    MOV AH,4CH

    INT 21H

YINYUE PROC NEAR

    MOV AX,34DCH             ;输出音符的特定频率

    MOV DX,12H

    DIV BX

    OUT 42H,AL

    MOV AL,AH

    OUT 42H,AL

    IN AL,61H                ;开扬声器

    OR AL,3

    OUT 61H,AL

    PUSH CX               ;延时1s

    MOV BX,500

    DEL1:MOV CX,2800

    DEL2:LOOP DEL2

         DEC BX

         JNZ DEL1

         POP CX      

    IN AL,61H                ;关扬声器

    AND AL,0FCH

    OUT 61H,AL

        RET

    YINYUE ENDP

YINYUE1 PROC NEAR

    MOV AX,34DCH             ;输出音符的特定频率

    MOV DX,12H

    DIV BX

    OUT 42H,AL

    MOV AL,AH

    OUT 42H,AL

    IN AL,61H                ;开扬声器

    OR AL,3

    OUT 61H,AL

     PUSH CX               ;延时0.5s

    MOV BX,250

    DEL1:MOV CX,2800

    DEL2:LOOP DEL2

         DEC BX

         JNZ DEL1

         POP CX 

    IN AL,61H                ;关扬声器

    AND AL,0FCH

    OUT 61H,AL

        RET

    YINYUE1 ENDP

     

DELAY PROC NEAR         ;子程序DELAY1,延时0.2s

       PUSH CX

     DEL1:MOV CX,2800

     DEL2:LOOP DEL2

          DEC BX

          JNZ DEL1

          POP CX

          RET

      DELAY ENDP     

CODES ENDS

    END START

五、运行结果:

六、实验心得

通过本次实验,我第一次用8253通过电脑发声,了解了其编程过程,学到了很多新的知识。我理解了汇编语言中编程的基本步骤,掌握了通过地址对数据赋值的方法。掌握芯片的使用方法,了解了计算机编程过程中的相关知识。特别是能够是主板发出声音,我觉得很有成就感,自己编的小调尽管十分粗糙,我还是从中得到了快乐。

更多相关推荐:
南昌大学实验报告封面

实实验课程学生姓名学号专业班级验报告单片机原理及应用6100410106中兴101班20xx年1月2日目录二号宋体实验一IO口输入输出实验实验二实验三实验四实验五定时计数器实验交通灯控制实验并行AD转换实验并行...

南昌大学实验报告封面及目录

实实验课程学生姓名学号专业班级指导老师验报告自动控制理论樊晟年12月20日20xx目录一实验一典型环节的模拟研究二实验二二阶系统瞬态响应和稳定性三实验三一阶惯性环节的频率特性曲线实验四二阶开环系统的频率特性曲线...

南昌大学实验报告封面及内页

实实验课程学生姓名学号专业班级验报告年月日南昌大学实验报告学生姓名学号专业班级实验类型验证综合设计创新实验日期实验成绩以下主要内容由学生完成一实验项目名称二实验目的三实验基本原理四主要仪器设备及耗材五实验步骤六...

南昌大学实验报告封面及目录(1)

实实验课程学生姓名学号专业班级指导老师验报告材料成型与加工林尤琳高分子092班年12月09日20xx目录一实验一高分子材料的塑炼混炼和硫化二实验二聚氯乙烯塑料板模压成型三实验三热塑性塑料的超声波焊接四实验四PE...

南昌大学实验报告封面及目录

实实验课程学生姓名学号专业班级验报告通信原理何凯年6月12日20xx目录实验一CPLD可编程数字信号发生器实验二实验三实验四实验五实验六实验七实验八实验九模拟信号发生器实训抽样定理与PCM系统实训PCM编码译码...

南昌大学实验报告封面及目录

实实验课程学生姓名学号专业班级验报告年月日目录一实验一页码二实验二页码三实验三四实验四五实验五页码页码页码

南昌大学实验报告封面

实实验课程学生姓名学号专业班级验报告6101113078电气工程及其自动化13220xx年12月日目录实验一三相笼型异步电动机的工作特性实验二实验三实验四实验五异步电动机的起动和调速三相同步发电机的运行特性三相...

南昌大学面向对象程序设计实验4

南昌大学实验报告学生姓名学号专业班级管理科学与工程类121班验证综合设计创新实验日期实验成绩实验4C程序的结构一实验目的1观察程序运行中变量的作用域生存期和可见性2学习类的静态成员的使用3学习多文件结构在程序中...

南昌大学电力系统分析实验报告2

南昌大学实验报告学生姓名学号专业班级实验类型验证综合设计创新实验日期127实验成绩一实验项目名称电力系统短路计算实验二实验目的与要求目的通过实验教学加深学生的基本概念掌握电力系统的特点使学生通过系统进行物理模拟...

南昌大学发电厂电气部分实验报告20xx

南昌大学实验报告实验一具有灯光监视的断路器控制回路实验一实验目的1掌握具有灯光监视的断路器控制回路的工作原理电路的功能特点2理解为使断路器控制回路能安全可靠地工作所必须满足对合闸及分闸监视的基本要求及其重要性3...

南昌大学电力系统分析实验报告3

南昌大学实验报告学生姓名李开卷学号6100312199专业班级电力系统124班实验类型验证综合设计创新实验日期1219实验成绩一实验项目名称电力系统故障分析计算二实验目的本实验通过对电力系统故障条件下的网络分析...

南昌大学,数据结构,实验报告

实实验课程学生姓名学号专业班级验报告数据结构6100410235计科103班20xx年6月1日1目录实验一线性表及其应用3实验二栈和队列12实验三二叉树及其应用19实验四实验五图的运用24查找排序292南昌大学...

南昌大学实验报告封面(21篇)