机械_微机原理_学生实验报告

时间:2024.4.5

实验一  汇编语言上机认识实验

一、实验主要内容

1、汇编语言源程序文件的建立;

2、汇编程序的编辑、汇编、连接、运行。

二、实验目的

熟悉汇编语言的上机环境,掌握汇编程序的编辑、汇编、连接、运行等步骤。

三、实验具体操作过程

汇编语言的上机的一般步骤为:编辑(用编辑程序形成汇编语言源程序)、汇编(用汇编程序将源文件汇编成目标文件)、连接(用连接程序将目标程序转换为可执行文件)、调试运行(执行可执行性文件,若有错误,利用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!”,实验完成。


实验二  DEBUG的应用

一、实验主要内容

1、进入和退出DEBUG程序

2、使用DEBUG中的常用命令

二、实验目的

1、熟悉DEBUG有关命令的使用方法

2、学会利用DEBUG掌握有关指令的功能

3、学会利用DEBUG运行简单的程序段

三、实验具体操作过程

1、debug的启动与退出

在dos提示符下输入“debug”,并回车,可进入debug状态;在debug提示符下输入“q”,可返回dos提示符。

2、用R命令查看、改变CPU寄存器的内容

①输入“r”,回车,可看到CPU内部所有寄存器内容和标志位状态;

②输入“R AX”,可显示AX的值,并将AX的值修改为1234H;

3、汇编命令A

在debug提示符下,输入“A 100”,输入几条汇编指令。

MOV AL,0C

ADD AL,1E

ADC AL,30

4、单步执行命令T

先输入命令“T=0”,然后每次都输入命令“T”,查看输入的每条指令执行后的状态。

5、调试应用程序

debug 001.exe

6、反汇编指令U

在debug提示符下,输入“U”指令,显示001.exe的汇编指令。

5、运行命令G

输入命令“G”,运行001.exe中的所有指令;输入命令“G=13f0:0  d”,运行指定区域内的指令。

7、显示内存单元命令D

输入“D 1389:0100”,显示1389H:0100H单元为首的内存区域中存放的内容。

8、修改内在单元命令E

输入“E 1389:0100”,将0100H单元的内容修改为FFH。


实验三  顺序结构程序设计

一、实验主要内容

将两个2字节长的二进制数相加,运算结果存放在相应结果单元中。

二、实验目的

掌握汇编语言的顺序结构程序设计方法。

三、实验具体操作过程

1、流程框图

2、源程序

DATA    SEGMENT

DATA1   DB 1, 2                ;被加数   

DATA2   DB 5, 6                ;加数

DATA3   DB 0, 0                ;和       

DATA    ENDS

CODE    SEGMENT

            ASSUME CS:CODE, DS:DATA

START:  MOV AX, DATA

            MOV DS, AX

            MOV SI, 0

            CLC                     ;清进位标志

            MOV AL, DATA1[SI]

            ADC AL, DATA2[SI]       ;第一个字节相加

            MOV DATA3[SI], AL

            INC SI

            MOV AL, DATA1[SI]

            ADC AL, DATA2[SI]        ;第二个字节相加  

            MOV DATA3[SI], AL

 ;.......... 输出显示部分 ........

            MOV BX, OFFSET DATA3

            MOV DL, [BX]

            ADD DL, 30H

            MOV AH, 2

            INT 21H

            INC BX

            MOV DL, [BX]

            ADD DL, 30H

            MOV AH, 2

            INT 21H

;.......... 输出显示结束 ........

            MOV AH, 4CH

            INT 21H                 ;返回 DOS

     CODE   ENDS

            END START


实验四  分支结构程序设计

一、实验主要内容

接收键盘输入字符,将其中的小写字母转换为大写字母。

二、实验目的

学会汇编语言的分支结构程序设计方法。

三、实验具体操作过程

1、流程框图

2、源程序

DATA    SEGMENT

    MSG     DB ‘ERROR!', 0DH, 0AH,‘$'

DATA    ENDS

CODE    SEGMENT

            ASSUME CS:CODE, DS:DATA

START:  MOV AX, DATA

            MOV DS, AX

            MOV AH, 1

            INT 21H                  ;读入一字符送入AL

            CMP AL, ‘a'

            JB ERR                   ;不是小写字母转出错处理

            CMP AL, ‘z'

            JA ERR                   ;不是小写字母转出错处理

            SUB AL, 32               ;转换成大写字母后送到AL

            MOV DL, AL

            MOV AH, 02

            INT 21H                  ;输出转换后的字符

OVER:   MOV AH, 4CH

            INT 21H                  ;返回DOS

ERR:    MOV DX, OFFSET MSG

            MOV AH, 09

            INT 21H

            JMP OVER

CODE    ENDS

            END START


实验五  循环结构程序设计

一、实验主要内容

统计一个有10人的班中,男、女生的人数各为多少。将统计结果的男生人数存入变量  BOY中,女生人数存入变量GIRL中。

二、实验目的

掌握汇编语言的循环结构基本设计方法。

三、实验具体操作过程

1.流程框图

2.参考程序

DATA    SEGMENT

    BOY     DB  0                   ;存放男生人数

    GIRL    DB  0                   ;存放女生人数

    COUNT   EQU 10                  ;班里的总人数

    DISP    DB 0DH, 0AH, ‘BOY OR GIRL 1/0 ? ', ‘$’

    DISP1   DB 0DH, 0AH, ‘BOY:’, ‘$’

    DISP2   DB 0DH, 0AH, ‘GIRL:’, ‘$’

DATA    ENDS

CODE    SEGMENT

            ASSUME CS:CODE, DS:DATA

START:  MOV AX, DATA

            MOV DS, AX

            MOV CX, COUNT

INPUT:  MOV DX, OFFSET DISP

            MOV AH, 9

            INT 21H

            MOV AH, 1

            INT 21H                 ;读入一个字符

            CMP AL, ‘1’           ;是男生?

            JZ BOYCOUNT        

            CMP AL, ‘0’           ;是女生?

            JZ GIRLCOUNT

            JMP INPUT

BOYCOUNT:

            INC BOY                 ;男生人数加1

            JMP LOOPNEXT

GIRLCOUNT:

            INC GIRL                ;女生人数加1

LOOPNEXT:

            LOOP INPUT

            MOV AH, 4CH

            INT 21H                 ;返回DOS

CODE  ENDS

          END START


实验六  子程序设计

一、实验主要内容

编写一个程序,将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程HEXAC实现,在转换过程中,通过子程序DISP实现显示。

二、实验目的

1、掌握汇编语言子程序的设计方法;

2、掌握主程序与子程序之间的调用关系及调用方法。

三、实验具体操作过程

1、分析:

该实验程序用子程序的近程调用实现。由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执行中,检查CS值是不变的。

2、源程序

DATA   SEGMENT

BUF     DB 0ABH,0CDH,0DEH,01H,02H,03H

DB 3AH,4BH,5CH,6FH

DATA   ENDS

CODE   SEGMENT

         ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

         MOV DS,AX

         MOV CX,10

         LEA   BX,BUF

AGAIN: MOV  AL,[BX]

         CALL   HEXASC

         INC   BX

         LOOP   AGAIN

         MOV  AH,4CH

         INT 21H

HEXASC PROC NEAR

MOV DL,AL

PUSH   CX

MOV   CL,4

SHR    DL,CL

POP    CX

CALL   DISP   ;显示高位HEX数

MOV    DL,AL

AND    DL,0FH

CALL   DISP

RET

HEXASC ENDP

DISP    PROP

        CMP   DL,9

        JBE    NEXT

        ADD   DL,7

NEXT: ADD  DL,30H

        MOV  AH,2

        INT  21H     ;显示

        RET

DISP    ENDP

CODE   ENDS

        END START


实验七  综合程序设计

一、实验主要内容

设计并实现一个小型应用实例,要求:

1、接收从键盘输入的一个班的学生成绩,存放于50字的grade数组中,其中grade+i保存学号为i+1的学生成绩。

2、根据grade中学生成绩,把学生名次填入50字的rank数组中,其中rank+i的内容是学号为i+1学生的名次。

3、最后按学号顺序把名次从终端显示出来。

二、实验目的

熟练掌握三种基本结构程序设计、掌握结构化程序设计方法,并能综合运用,从而培养学生综合分析问题和解决问题的能力。

三、实验具体操作过程

1、在该应用实例中,包括三个方面的内容:一成绩输入;二计算名次;三是排序输出。

每一部分可对应一段子程序,程序结构是一个较为典型的层次结构,如下图:

①  程序MAIN

     功能:根据输入的学生成绩,计算并显示出学生名次。

②  程序INPUT

           功能:接收一个班级学生的成绩,各成绩之间用空格隔开。

③  程序RANKP

     功能:计算一个班级学生的名次。(可参照循环程序(一)中的程序段)

④  程序OUTPUT

     功能:输出(显示)一个班级的学生名次

⑤  程序DECIBIN

     功能:十进制转换二进制,存入BX

⑥  程序BINDEC

     功能:十进制转换二进制,并在屏幕上显示。

⑦  程序DEC_DIV

功能:BX的内容除以CX的内容,并在屏幕上显示一位商。

2、程序框图:

3、源程序

模块名:main.ASM  总控模块

EXTRN INPUT:FAR

EXTRN RANKP:FAR

EXTRN OUTPUT:FAR

CODE SEGMENT

ASSUME CS:CODE

START:CALL FAR PTR INPUT

      CALL FAR PTR RANKP

      CALL FAR PTR OUTPUT

      MOV AH,4CH

      INT 21H

 CODE ENDS

      END START

模块名:INPUT.ASM  输入模块

PUBLIC INPUT

PUBLIC GRADE

PUBLIC COUNT

DATA SEGMENT PUBLIC

GRADE DW 50 DUP(?)

COUNT  DW ?

MESS1 DB 'GRADE?$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

INPUT PROC FAR

MOV AX,DATA

MOV DS,AX

LEA DX,MESS1

MOV AH,09

INT 21H

MOV SI,0

ENTER:

CALL DECIBIN

INC COUNT

CMP DL,','

JZ STORE

CMP DL,13

JZ EXIT

STORE:

MOV GRADE[SI],BX

ADD SI,2

JMP ENTER

EXIT:

MOV GRADE[SI],BX

MOV DL,0AH

MOV AH,02H

INT 21H

RET

DECIBIN PROC NEAR

 MOV BX,0

NEWCHAR: MOV AH,1

 INT 21H

 MOV DL,AL

 SUB AL,30H

 JL EXIT1

 CMP AL,9D

 JG EXIT1

 CBW

 XCHG AX,BX

 MOV CX,10

 MUL CX

 XCHG AX,BX

 ADD BX,AX

 JMP NEWCHAR

 EXIT1:RET

 DECIBIN ENDP

INPUT ENDP

CODE ENDS

 END 

模块名:RANKP.ASM  学生成绩名次计算模块

EXTRN GRADE:WORD

EXTRN COUNT:WORD

PUBLIC RANKP

PUBLIC RANK

DATA SEGMENT PUBLIC

RANK DW 50 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

RANKP PROC FAR

MOV AX,DATA

MOV DS,AX

MOV DX,COUNT

MOV BX,0

LOOP1:

MOV AX,GRADE[BX]

MOV  RANK[BX],0

MOV CX,COUNT

LEA SI,GRADE

NEXT:

CMP AX,[SI]

JG NO_COUNT

INC  RANK[BX]

NO_COUNT:

ADD SI,2

LOOP NEXT

ADD BX,2

DEC DX

JNE LOOP1

RET

RANKP ENDP

CODE ENDS

  END  

模块名:OUTPUT.ASM  输出模块

EXTRN RANK:WORD

EXTRN COUNT:WORD

PUBLIC OUTPUT

DATA SEGMENT PUBLIC

MESS2 DB 'RANK :$'

DATA  ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

OUTPUT PROC FAR

      MOV AX,DATA

      MOV DS,AX

      LEA DX,MESS2

      MOV AH,09H

      INT 21H

      MOV SI,0

      MOV DI,COUNT

 NEXT1:

      MOV BX,RANK[SI]

      CALL BINIDEC

      MOV DL,','

      MOV AH,02

      INT 21H

      ADD SI,2

      DEC DI

      JNZ NEXT1

      RET

BINIDEC PROC NEAR

     PUSH BX

     PUSH CX

;     MOV CX,100

 ;    CALL DEC_DIV

     MOV CX,10

     CALL DEC_DIV

     MOV CX,1

     CALL  DEC_DIV

     POP CX

     POP BX

     RET

BINIDEC ENDP

DEC_DIV PROC

   MOV  AX,BX

   MOV DX,0

   DIV CX

   MOV BX,DX

   MOV DL,AL

   ADD DL,30H

   MOV AH,02H

   INT 21H

   RET

DEC_DIV ENDP

OUTPUT ENDP

CODE ENDS

   END

更多相关推荐:
机械原理课程设计报告

青岛理工大学琴岛学院课程设计报告课题名称机械原理课程设计学院机电工程系专业班级机械设计制造及其自动化学号20xx020xx12学生吴涵指导老师胡之杨青岛理工大学琴岛学院教务处20xx年6月29日

机械原理实验报告大全

机械原理实验项目机械原理课程实验一机械传动性能测试实验一实验目的1通过测试常见机械传动装置如带传动链传动齿轮传动蜗杆传动等在传递运动与动力过程中的速度转矩传动比功率及机械效率等加深对常见机械传动性能的认识与理解...

机械原理实验报告

重庆科技学院学生实验报告1234重庆科技学院学生实验报告234重庆科技学院学生实验报告123重庆科技学院学生实验报告123重庆科技学院学生实验报告123

机械原理实验三实验四指导及实验报告

实验三刚性转子动平衡实验一实验目的1加深对刚性转子动平衡概念的理解2掌握刚性转子动平衡实验的原理及基本方法3了解动平衡试验机的结构组成及工作原理二实验设备1JPHA型动平衡实验台2转子试件3平衡块4百分表010...

机械原理实验报告一

河南农业大学机电工程学院指导教师专业班级姓名学号机械原理实验报告一1机构认识实验指导书一实验目的和任务1实验目的1初步了解机械原理课程所研究的各种常用机构的结构类型特点及应用实例2增强学生对机构与机器的感性认识...

机械原理实验报告

机械原理实验报告姓名班级学号日期现代机械设计教研室河南机电高等专科学校1机构现场认识实验报告一平面连杆机构1根据机构中移动副数目的不同平面四杆机构可分为三种类型2根据连架杆是否能整周转动平面铰链四杆机可分为3在...

机械原理实验报告

机械原理实验指导实验一机构运动简图的测绘一实验目的1掌握根据各种机构实物或模型绘制机构运动简图的方法2验证机构自由度的计算公式3分析某些四杆机构的演化过程二实验设备和工具1各类机构的模型和实物2钢板尺量角器内外...

机械原理_平面运动机构设计实验报告

平面机构运动方案设计与拼装姓名班级学号20xx125一实验目的1加深学生对机构组成原理的认识进一步理解平面机构的组成及运动特性2通过平面机构拼装训练学生的实践动手能力了解机构在实际安装中可能出现的运动干涉现象及...

机械原理实验指导书20xx

机械原理实验教程之一大连理工大学机械基础实验室20xx年9月实验一机构分析与创新认识实验一实验目的1通过对典型机械的测绘与分析掌握机械组成原理培养分析和解决工程问题的能力2培养运用机构运动简图正确表达机械系统机...

机械原理实验VB程序

PrivateSubCommand1ClickDimL1L2L3L4AsDoubleDims1Degrees2Degrees3Degrees1s2s3AsDoubleDimw1w2w3AsDoubleDima1...

机械原理课程设计报告

机械原理课程设计说明书设计题目牛头刨床传动机构设计及其运动分析二1目录一机械原理课程设计的目的要求21机械原理课程设计的目的2机械原理课程设计的任务3机械原理课程设计的一般步骤二设计题目4三机构运动简图及原始数...

机械原理陈列柜试验报告

机械原理认知实验实验报告班级学号姓名组号本组人数时间年月日一实验目的二实验内容三简述对机械原理课程学科特点的初步认识四从柜中思考题中选择35个你感兴趣的题目思考答案五通过参观学习得到的启示或体会六提出关于课程教...

机械原理实验报告(19篇)