机械微机原理学生实验报告.docx

上传人:b****2 文档编号:2090554 上传时间:2023-05-02 格式:DOCX 页数:20 大小:44.90KB
下载 相关 举报
机械微机原理学生实验报告.docx_第1页
第1页 / 共20页
机械微机原理学生实验报告.docx_第2页
第2页 / 共20页
机械微机原理学生实验报告.docx_第3页
第3页 / 共20页
机械微机原理学生实验报告.docx_第4页
第4页 / 共20页
机械微机原理学生实验报告.docx_第5页
第5页 / 共20页
机械微机原理学生实验报告.docx_第6页
第6页 / 共20页
机械微机原理学生实验报告.docx_第7页
第7页 / 共20页
机械微机原理学生实验报告.docx_第8页
第8页 / 共20页
机械微机原理学生实验报告.docx_第9页
第9页 / 共20页
机械微机原理学生实验报告.docx_第10页
第10页 / 共20页
机械微机原理学生实验报告.docx_第11页
第11页 / 共20页
机械微机原理学生实验报告.docx_第12页
第12页 / 共20页
机械微机原理学生实验报告.docx_第13页
第13页 / 共20页
机械微机原理学生实验报告.docx_第14页
第14页 / 共20页
机械微机原理学生实验报告.docx_第15页
第15页 / 共20页
机械微机原理学生实验报告.docx_第16页
第16页 / 共20页
机械微机原理学生实验报告.docx_第17页
第17页 / 共20页
机械微机原理学生实验报告.docx_第18页
第18页 / 共20页
机械微机原理学生实验报告.docx_第19页
第19页 / 共20页
机械微机原理学生实验报告.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

机械微机原理学生实验报告.docx

《机械微机原理学生实验报告.docx》由会员分享,可在线阅读,更多相关《机械微机原理学生实验报告.docx(20页珍藏版)》请在冰点文库上搜索。

机械微机原理学生实验报告.docx

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

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

一、实验主要内容

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

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

二、实验目的

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

三、实验具体操作过程

汇编语言的上机的一般步骤为:

编辑(用编辑程序形成汇编语言源程序)、汇编(用汇编程序将源文件汇编成目标文件)、连接(用连接程序将目标程序转换为可执行文件)、调试运行(执行可执行性文件,若有错误,利用DEBUG调试程序进行调试,直到没有错误为止)。

1、进入DOS系统

单击windows的“开始”按钮,再单击“运行”命令,输入“cmd”命令,进入DOS模式。

再利用相应的DOS命令,切换到masm目录下。

2、编辑.asm源程序

在DOS提示符下输入“edit001.asm”,建立一个汇编源程序文件,本次实验的程序是在屏幕上输出一个字符串“Thisisasampleprogram!

”,具体程序如下:

DATASEGMENT

BUFDB'THISISASAMPLEPROGRAM!

'

DB0DH,0AH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,9

LEADX,BUF

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3、汇编

在dos提示符下输入命令“masm001.asm”,若发现有语法错误,请回到源程序进行修改;若无错误,进行下一步。

4、连接

在dos提示符下输入命令“link001.obj”。

5、运行

在dos提示符下输入命令“001”,发现屏幕上输出“Thisisasampleprogram!

”,实验完成。

实验二DEBUG的应用

一、实验主要内容

1、进入和退出DEBUG程序

2、使用DEBUG中的常用命令

二、实验目的

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

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

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

三、实验具体操作过程

1、debug的启动与退出

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

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

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

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

3、汇编命令A

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

MOVAL,0C

ADDAL,1E

ADCAL,30

4、单步执行命令T

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

5、调试应用程序

debug001.exe

6、反汇编指令U

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

5、运行命令G

输入命令“G”,运行001.exe中的所有指令;输入命令“G=13f0:

0d”,运行指定区域内的指令。

7、显示内存单元命令D

输入“D1389:

0100”,显示1389H:

0100H单元为首的内存区域中存放的内容。

8、修改内在单元命令E

输入“E1389:

0100”,将0100H单元的内容修改为FFH。

 

实验三顺序结构程序设计

一、实验主要内容

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

二、实验目的

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

三、实验具体操作过程

1、流程框图

2、源程序

DATASEGMENT

DATA1DB1,2;被加数

DATA2DB5,6;加数

DATA3DB0,0;和

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

CLC;清进位标志

MOVAL,DATA1[SI]

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

MOVDATA3[SI],AL

INCSI

MOVAL,DATA1[SI]

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

MOVDATA3[SI],AL

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

MOVBX,OFFSETDATA3

MOVDL,[BX]

ADDDL,30H

MOVAH,2

INT21H

INCBX

MOVDL,[BX]

ADDDL,30H

MOVAH,2

INT21H

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

MOVAH,4CH

INT21H;返回DOS

CODEENDS

ENDSTART

实验四分支结构程序设计

一、实验主要内容

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

二、实验目的

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

三、实验具体操作过程

1、流程框图

2、源程序

DATASEGMENT

MSGDB‘ERROR!

',0DH,0AH,‘$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,1

INT21H;读入一字符送入AL

CMPAL,‘a'

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

CMPAL,‘z'

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

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

MOVDL,AL

MOVAH,02

INT21H;输出转换后的字符

OVER:

MOVAH,4CH

INT21H;返回DOS

ERR:

MOVDX,OFFSETMSG

MOVAH,09

INT21H

JMPOVER

CODEENDS

ENDSTART

实验五循环结构程序设计

一、实验主要内容

统计一个有10人的班中,男、女生的人数各为多少。

将统计结果的男生人数存入变量BOY中,女生人数存入变量GIRL中。

二、实验目的

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

三、实验具体操作过程

1.流程框图

2.参考程序

DATASEGMENT

BOYDB0;存放男生人数

GIRLDB0;存放女生人数

COUNTEQU10;班里的总人数

DISPDB0DH,0AH,‘BOYORGIRL1/0?

',‘$’

DISP1DB0DH,0AH,‘BOY:

’,‘$’

DISP2DB0DH,0AH,‘GIRL:

’,‘$’

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,COUNT

INPUT:

MOVDX,OFFSETDISP

MOVAH,9

INT21H

MOVAH,1

INT21H;读入一个字符

CMPAL,‘1’;是男生?

JZBOYCOUNT

CMPAL,‘0’;是女生?

JZGIRLCOUNT

JMPINPUT

BOYCOUNT:

INCBOY;男生人数加1

JMPLOOPNEXT

GIRLCOUNT:

INCGIRL;女生人数加1

LOOPNEXT:

LOOPINPUT

MOVAH,4CH

INT21H;返回DOS

CODEENDS

ENDSTART

 

实验六子程序设计

一、实验主要内容

编写一个程序,将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。

要求码型转换通过子程HEXAC实现,在转换过程中,通过子程序DISP实现显示。

二、实验目的

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

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

三、实验具体操作过程

1、分析:

该实验程序用子程序的近程调用实现。

由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。

实验过程中可以从堆栈的内容看到两个子程序的返回地址值。

由于是近调用,地址值只包括返回地址的段内偏移量。

在每个子程序的执行中,检查CS值是不变的。

2、源程序

DATASEGMENT

BUFDB0ABH,0CDH,0DEH,01H,02H,03H

DB3AH,4BH,5CH,6FH

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,10

LEABX,BUF

AGAIN:

MOVAL,[BX]

CALLHEXASC

INCBX

LOOPAGAIN

MOVAH,4CH

INT21H

HEXASCPROCNEAR

MOVDL,AL

PUSHCX

MOVCL,4

SHRDL,CL

POPCX

CALLDISP;显示高位HEX数

MOVDL,AL

ANDDL,0FH

CALLDISP

RET

HEXASCENDP

DISPPROP

CMPDL,9

JBENEXT

ADDDL,7

NEXT:

ADDDL,30H

MOVAH,2

INT21H;显示

RET

DISPENDP

CODEENDS

ENDSTART

实验七综合程序设计

一、实验主要内容

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

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总控模块

EXTRNINPUT:

FAR

EXTRNRANKP:

FAR

EXTRNOUTPUT:

FAR

CODESEGMENT

ASSUMECS:

CODE

START:

CALLFARPTRINPUT

CALLFARPTRRANKP

CALLFARPTROUTPUT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

模块名:

INPUT.ASM输入模块

PUBLICINPUT

PUBLICGRADE

PUBLICCOUNT

DATASEGMENTPUBLIC

GRADEDW50DUP(?

COUNTDW?

MESS1DB'GRADE?

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

INPUTPROCFAR

MOVAX,DATA

MOVDS,AX

LEADX,MESS1

MOVAH,09

INT21H

MOVSI,0

ENTER:

CALLDECIBIN

INCCOUNT

CMPDL,','

JZSTORE

CMPDL,13

JZEXIT

STORE:

MOVGRADE[SI],BX

ADDSI,2

JMPENTER

EXIT:

MOVGRADE[SI],BX

MOVDL,0AH

MOVAH,02H

INT21H

RET

DECIBINPROCNEAR

MOVBX,0

NEWCHAR:

MOVAH,1

INT21H

MOVDL,AL

SUBAL,30H

JLEXIT1

CMPAL,9D

JGEXIT1

CBW

XCHGAX,BX

MOVCX,10

MULCX

XCHGAX,BX

ADDBX,AX

JMPNEWCHAR

EXIT1:

RET

DECIBINENDP

INPUTENDP

CODEENDS

END

模块名:

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

EXTRNGRADE:

WORD

EXTRNCOUNT:

WORD

PUBLICRANKP

PUBLICRANK

DATASEGMENTPUBLIC

RANKDW50DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

RANKPPROCFAR

MOVAX,DATA

MOVDS,AX

MOVDX,COUNT

MOVBX,0

LOOP1:

MOVAX,GRADE[BX]

MOVRANK[BX],0

MOVCX,COUNT

LEASI,GRADE

NEXT:

CMPAX,[SI]

JGNO_COUNT

INCRANK[BX]

NO_COUNT:

ADDSI,2

LOOPNEXT

ADDBX,2

DECDX

JNELOOP1

RET

RANKPENDP

CODEENDS

END

模块名:

OUTPUT.ASM输出模块

EXTRNRANK:

WORD

EXTRNCOUNT:

WORD

PUBLICOUTPUT

DATASEGMENTPUBLIC

MESS2DB'RANK:

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

OUTPUTPROCFAR

MOVAX,DATA

MOVDS,AX

LEADX,MESS2

MOVAH,09H

INT21H

MOVSI,0

MOVDI,COUNT

NEXT1:

MOVBX,RANK[SI]

CALLBINIDEC

MOVDL,','

MOVAH,02

INT21H

ADDSI,2

DECDI

JNZNEXT1

RET

BINIDECPROCNEAR

PUSHBX

PUSHCX

;MOVCX,100

;CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

POPCX

POPBX

RET

BINIDECENDP

DEC_DIVPROC

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,02H

INT21H

RET

DEC_DIVENDP

OUTPUTENDP

CODEENDS

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2