南昌大学微型计算机原理与接口技术实验报告全.docx
《南昌大学微型计算机原理与接口技术实验报告全.docx》由会员分享,可在线阅读,更多相关《南昌大学微型计算机原理与接口技术实验报告全.docx(23页珍藏版)》请在冰豆网上搜索。
南昌大学微型计算机原理与接口技术实验报告全
(此文档为word格式,下载后您可任意编辑修改!
)
实验一:
汇编语言程序设计开发环境
实验目的
1、熟悉汇编语言设计开发环境
2、巩固对程序基本结构的认识
3、学会使用debug命令查看结果
实验步骤:
1、打开电脑在系统选择界面,选择DOS操作系统
2、通过键盘输入TC,进入TC操作界面。
在TC操作见面,新建文件,将实验程序写入文件中,然后保存为.ASM文件。
退出TC操作界面
3在DOS操作界面,写入MASM,和刚才的ASM文件名。
产生目标文件。
4、调用link文件,链接目标文件,产生可执行文件
5、再键入debug12.exe(12为对应文件的文件名)来运行程序。
我们的目的是要察看我们程序的运行结果,因此我们希望的动程序运行后应停在返回DOS以前,为此我们可先用反汇编命令U来确定我们所要的断点地址。
编写汇编程序,实现Z=X+Y;
程序如下:
DATASEGMENT
XDB18H
YDB19H
ZDB?
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAL,X
ADDAL,Y
DAA
MOVZ,AL
RET
MAINENDP
CODEENDS
ENDSTART
先退出DOS系统。
先输入MASM12.ASM后,看有没有错误,如果有错误就返回去修改程序,反复调试,直到没有错误为止。
再输入LINK12.OBJ
再输入DEBUG12.exe
再按U。
设置好断点以后再输入G加断点地址。
实验结果
-u
1489:
00001EPUSHDS
1489:
00012BC0SUBAX,AX
1489:
000350PUSHAX
1489:
0004B88814MOVAX,1488
1489:
00078ED8MOVDS,AX
1489:
0009A00000MOVAL,[0000]
1489:
000CADDAL,[0001]
1489:
001027DAA
1489:
0011A20200MOV[0002],AL
1489:
0014CBRETF
1489:
0015D1E3SHLBX,1
1489:
0017D1E3SHLBX,1
1489:
00198B360406MOVSI,[0604]
1489:
001DEBA2JMPFFC1
1489:
001F90NOP
-u
1489:
0020C746FC0000MOVWORDPTR[BP-04],0000
1489:
0025EB1FJMP0046
1489:
002790NOP
1489:
00288A4608MOVAL,[BP+08]
1489:
002B2AE4SUBAH,AH
1489:
002D50PUSHAX
1489:
002E8B5EFCMOVBX,[BP-04]
1489:
0031D1E3SHLBX,1
1489:
0033D1E3SHLBX,1
1489:
00358B7604MOVSI,[BP+04]
1489:
0038FF7002PUSH[BX+SI+02]
1489:
003BFF30PUSH[BX+SI]
1489:
003DE854FECALLFE94
-g0014
AX=1437BX=0000CX=0025DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=1488ES=1478SS=1488CS=1489IP=0014NVUPEIPLNZACPONC
1489:
0014CBRETF
-d1488:
0000
1488:
00001819370000000000-0000000000000000..7.............
1488:
00101E2BC050B888148E-D8A0000002060100.+.P............
1488:
002027A20200CBD1E3D1-E38B360406EBA290'.........6.....
1488:
0030C746FC0000EB1F90-8A46082AE4508B5E.F.......F.*.P.^
1488:
0040FCD1E3D1E38B7604-FF7002FF30E854FE......v..p..0.T.
1488:
005083C406FF46FC8B46-063946FC72DA5E8B....F..F.9F.r.^.
1488:
0060E55DC390558BEC56-C45E0426807F0403.]..U..V.^.&....
1488:
0070750726807F0A0074-37A1582739063622u.&....t7.X'9.6"
-q
实验心得:
这是我第一次在pc机上运用DOS系统来编程,有很多不懂,感觉很陌生。
在进入TC,和文件的保存,以及程序的编译都感觉很陌生。
但是有了这一次的接触,以后会更轻松。
这次主要是熟悉了汇编的环境,对于程序来说,只要熟悉了汇编语言的基本环境,本次程序比较简单。
运行的结果很顺利。
实验二、字符串的传送
一、实验目的:
1.掌握变量的基本使用方法。
2.掌据字符串的输入传送方法的使用。
3.掌握数据段的定义方式
二、实验内容
编程实现将X中的40个字符存储在Y中,并调试程序。
三、实验程序如下:
DATASEGMENT
XDB40DUP(‘B’)
DATAENDS
EXTRASEGMENT
YDB40DUP(?
)
EXTRAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,ES:
EXTRA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAX,EXTRA
MOVES,AX
LEASI,X
LEADI,Y
CLD
MOVCX,40
REPMOVSB
RET
MAINENDP
CODEENDS
ENDSTART
四、实验结果
先退出DOS系统。
先输入MASM12.ASM后,看有没有错误,如果有错误就返回去修改程序,反复调试,直到没有错误为止。
再输入LINK12.OBJ
再输入DEBUG12.exe
再按U。
设置好断点以后再输入G加断点地址。
查看数据段是输入D1488:
0000
显示结果:
-u
148C:
00001EPUSHDS
148C:
00012BC0SUBAX,AX
148C:
000350PUSHAX
148C:
0004B88814MOVAX,1488
148C:
00078ED8MOVDS,AX
148C:
0009B88A14MOVAX,148A
148C:
000C8EC0MOVES,AX
148C:
000E8D360000LEASI,[0000]
148C:
00128D3E0000LEADI,[0000]
148C:
0016B91300MOVCX,0013
148C:
0019FCCLD
148C:
001AF3REPZ
148C:
001BA4MOVSB
148C:
001CCBRETF
148C:
001DDA5E8BFICOMPDWORDPTR[BP-75]
-u
148C:
0020E55DINAX,5D
148C:
0022C3RET
148C:
002390NOP
148C:
002455PUSHBP
148C:
00258BECMOVBP,SP
148C:
002756PUSHSI
148C:
0028C45E04LESBX,[BP+04]
148C:
002B26ES:
148C:
002C807F0403CMPBYTEPTR[BX+04],03
148C:
00307507JNZ0039
148C:
003226ES:
148C:
0033807F0A00CMPBYTEPTR[BX+0A],00
148C:
00377437JZ0070
148C:
0039A15827MOVAX,[2758]
148C:
003CCMP[2236],AX
-g001c
AX=148ABX=0000CX=0000DX=0000SP=FFFCBP=0000SI=0013DI=0013
DS=1488ES=148ASS=1488CS=148CIP=001CNVUPEIPLZRNAPENC
148C:
001CCBRETF
-d1488:
0000
1488:
0000504552534F4E414C-20434F4D50555445PERSONALCOMPUTE
1488:
00105224000000000000-0000000000000000R$..............
1488:
0020504552534F4E414C-20434F4D50555445PERSONALCOMPUTE
1488:
00305224000000000000-0000000000000000R$..............
1488:
00401E2BC050B888148E-D8B88A148EC08D36.+.P...........6
1488:
005000008D3E0000B913-00FCF3A4CBDA5E8B...>..........^.
1488:
0060E55DC390558BEC56-C45E0426807F0403.]..U..V.^.&....
1488:
0070750726807F0A0074-37A1582739063622u.&....t7.X'9.6"
-d148a:
0000
148A:
0000504552534F4E414C-20434F4D50555445PERSONALCOMPUTE
148A:
00105224000000000000-0000000000000000R$..............
148A:
00201E2BC050B888148E-D8B88A148EC08D36.+.P...........6
148A:
003000008D3E0000