微机实验报告汇总.docx

上传人:b****4 文档编号:1473082 上传时间:2022-10-22 格式:DOCX 页数:26 大小:145.97KB
下载 相关 举报
微机实验报告汇总.docx_第1页
第1页 / 共26页
微机实验报告汇总.docx_第2页
第2页 / 共26页
微机实验报告汇总.docx_第3页
第3页 / 共26页
微机实验报告汇总.docx_第4页
第4页 / 共26页
微机实验报告汇总.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

微机实验报告汇总.docx

《微机实验报告汇总.docx》由会员分享,可在线阅读,更多相关《微机实验报告汇总.docx(26页珍藏版)》请在冰豆网上搜索。

微机实验报告汇总.docx

微机实验报告汇总

微机实验报告

曾东明

实验一输出字符‘A’

一、实验目的

1.通过这个简单的例子熟悉在微机上建立、汇编、链接和运行8086/8088汇编语言程序的过程。

2.掌握字符的显示方法。

3.学习DOS系统功能调用。

二、实验内容

输出字符‘A’,程序流程图如图1-1所示。

图1-1输出字符‘A’程序流程图

源程序如下:

CODESEGMENT

ASSUMECS:

CODE

MOVDL,'A'

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODEENDS

END

三、实验设备

PC机一台,MASM汇编程序

四、实验步骤

1.用记事本将源程序输入,并存盘。

注意:

源程序是用汇编语言语句编写的程序,并不能为机器所识别。

源程序的扩展名为.ASM

2.用宏汇编程序将.ASM源程序汇编成机器码的目标文件(OBJ文件)

3.用LINK程序产生执行文件(EXE文件)

4.执行程序

实验结果:

五、心得体会

第一次经历了汇编语言的上机过程,对在计算机上进行汇编语言程序设计的步骤不是很熟悉,对命令提示符的一些操作命令不懂,后来查阅了一些资料,比如可以在window7下按住shift,点击鼠标右键,在弹出的窗口里就可以打开命令提示符了。

六、思考题

1.请说出一个完整的汇编程序从编写到运行所需的步骤。

(1)用编辑程序建立ASM源程序文件

(2)用宏汇编程序将.ASM源程序汇编成机器码的目标文件(OBJ文件)

(3)用LINK程序产生执行文件(EXE文件)

(4)在DOS命令行直接键入文件名执行该文件

2.修改源程序,改变屏幕显示的内容。

修改的源程序:

CODESEGMENT

ASSUMECS:

CODE

MOVDL,'D'

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODEENDS

END

实验二 数据的显示实验

一、实验目的

1.掌握屏幕上显示各种进制数据的方法。

2.掌握将内存中的二进制数转换为十进制、十六进制数的方法。

3.学会子程序的编写、调用及数据传递方法。

二、实验内容

1.把BX中的无符号二进制数转换成十进制数,在屏幕上显示出来。

2.把BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。

3.求一个数据块(由10个单字节的无符号数组成)中的最大元素,并将结果以十进制数的形式在屏幕上显示出来。

4.求一个数据块(由20个单字节的带符号数组成)中的正数之和(和不超过字)和负数之和(和不超过字),并在屏幕上用十进制数的形式分别显示出两个和。

5.将寄存器BX中的二进制数转换成十六进制数,并在屏幕上显示出来。

从高到低依次取出4位二进制数变为ASCII码输出即可。

三、实验设备:

PC机一台、masm汇编程序

四、实验步骤:

依照前面介绍的方法,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。

1.实验内容1

(1)实验内容1的流程图,如图所示:

(2)实验内容1的程序:

CODESEGMENT

ASSUMECS:

CODE

DEC_DIVMACRO

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

ENDM

START:

MOVBX,0FFFH

MOVCX,1000

DEC_DIV

MOVCX,100

DEC_DIV

MOVCX,10

DEC_DIV

MOVCX,1

DEC_DIV

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(3)实验结果:

2.实验内容2

(1)实验容1的程序:

DATASEGMENT

ADW1000

BDW100

CDW10

DDW1

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,0FFEFH;-0017的补码是0FFEFH

ORBX,BX

JNSNEXT

NEGBX

ANDBH,7FH

MOVDL,2DH

MOVAH,2

INT21H

NEXT:

MOVSI,OFFSETA

CALLDEC_DIV

MOVSI,OFFSETB

CALLDEC_DIV

MOVSI,OFFSETC

CALLDEC_DIV

MOVSI,OFFSETD

CALLDEC_DIV

MOVAH,4CH

INT21H

 

DEC_DIVPROCNEAR

MOVCX,[SI]

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

CODEENDS

ENDSTART

(2)实验结果:

3.实验内容3

(1)实验内容3的流程图,如图所示:

(2)实验3的程序:

DATASEGMENT

BLOCKDB1,0,5,7,10,30,100,127,90,80

RESULTDB?

?

BUFDB'MAXIS:

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

BEGINPROCFAR

MOVAX,DATA

MOVDS,AX

MOVCX,9

LEASI,BLOCK

MOVAL,[SI]

X1:

INCSI

CMPAL,[SI]

JAEX2

MOVAL,[SI]

X2:

LOOPX1

MOVRESULT,AL

MOVDX,OFFSETBUF

MOVAH,9

INT21H

MOVBL,RESULT

CBW

MOVCX,1000

CALLDEC_DIV

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

MOVAH,4CH

INT21H

DEC_DIVPROCNEAR

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

BEGINENDP

CODEENDS

ENDBEGIN

(3)实验3的运行结果:

4.实验内容4

(1)实验内容4的流程图,如图所示:

 

(2)实验内容4程序:

DATASEGMENT

BLOCKDB-1,-2,-3,-4,-5,-6,-7,-8,-9,-10

DB11,12,13,14,15,16,17,18,19,20

POSITDW?

NEGATDW?

BUF1DB'POSIT:

$'

BUF2DB'NEGAT:

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROC

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETBLOCK

MOVSI,0

MOVDI,0

MOVCX,20

X1:

MOVAL,[BX]

CBW

CMPAX,0

JGEX3

ADDDI,AX

JMPX2

X3:

ADDSI,AX

X2:

INCBX

LOOPX1

MOVPOSIT,SI

MOVNEGAT,DI

MOVDX,OFFSETBUF1

MOVAH,9

INT21H

MOVBX,POSIT

MOVCX,1000

CALLDEC_DIV

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

MOVDL,0AH

MOVAH,2

INT21H

MOVDX,OFFSETBUF2

MOVAH,9

INT21H

MOVBX,NEGAT

NEGBX

ANDBH,01111111B

MOVDL,2DH;显示负号

MOVAH,2

INT21H

MOVCX,1000

CALLDEC_DIV

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

MOVAH,4CH

INT21H

DEC_DIVPROCNEAR

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

CODEENDS

ENDSTART

(3)实验结果:

5.实验内容5

(1)实验内容5的流程图,如图所示:

图2-4内容5流程图

(2)实验内容5的源程序,参考如下:

CODESEGMENT

ASSUMECS:

CODE

BINHEXPROCFAR

MOVCH,4

MOVBX,1000

ROTATE:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

ADDDL,30H

CMPDL,3AH

JLOUTPUT

ADDDL,7

OUTPUT:

MOVAH,2

INT21H

DECCH

JNEROTATE

MOVDL,'H'

MOVAH,2

INT21H

MOVAH,4CH

INT21H

BINHEXENDP

CODEENDS

ENDBINHEX

(3)实验结果:

五、心得体会

实验内容1:

宏定义必须先定义,后调用,自己刚开始时把宏定义放在调用的后面,导致程序出错。

看了生产的LIST给出的源程序和目标程序,发现每个宏调用处,通过宏扩展,宏体中的指令的机器代码被插入到宏调用处,不节省内存单元,但相对于子程序,简化了源程序。

实验内容2:

刚开始的时候给BX寄存器送负值,比如-17,我写成了1000000000010001

即MOVBX,8011H,后来发现显示出来的数不是-17。

经过思考,懂得原来负数的表示要用补码,下面是两种LIST文件里对应地方的目标程序和源程序,可以看出转化为目标程序的时候,用补码表示。

0000BBFFEFSTART:

M

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

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1