实验二汇编语言上机过程实验机制本.docx
《实验二汇编语言上机过程实验机制本.docx》由会员分享,可在线阅读,更多相关《实验二汇编语言上机过程实验机制本.docx(8页珍藏版)》请在冰豆网上搜索。
![实验二汇编语言上机过程实验机制本.docx](https://file1.bdocx.com/fileroot1/2023-2/8/95332deb-ea51-4b7f-98ee-0199de14a68c/95332deb-ea51-4b7f-98ee-0199de14a68c1.gif)
实验二汇编语言上机过程实验机制本
实验二汇编语言上机过程实验
一、实验目的
1、了解和掌握由键盘接收数据,并显示其运行结果的方法。
2、掌握INT21H的09H和0AH,01H和02H的功能。
3、熟悉在PC机上建立,汇编,链接,调试和运行8086/8088汇编语言程序的过程。
二、实验内容
1、汇编语言源程序的上机过程:
1将masm5.zip文件下载放在D:
\masm文件夹下,在该文件夹下将压缩文件解压缩。
2利用编辑器建立一个ASM源文件。
Edit,记事本等编辑器文件以文件名.asm文件名保存。
最好保存在D:
\masm文件夹下。
(即:
D:
\masm\文件名.asm)文件名自取。
3点击开始菜单,运行↙>cmd↙>d:
↙>cdmasm↙>masm文件名3下回车>link文件名3下回车>debug文件名.exe>g↙
其中利用MASM.EXE对源程序进行编译。
生成中间代码文件:
文件名.obj。
利用link.exe对obj文件进行连接。
生成最终目标代码文件:
文件名.exe。
运行可执行文件:
文件名.exe,并利用debug调试工具查看结果。
2、编写一个完整程序,
在屏幕上显示字符串Howareyou!
datasegment
stringdb'howareyou!
$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetstring
movah,9
int21h
movah,4ch
int21h
codeends
endstart
三、实验器材
IBMPC微机一台
四、实验报告要求
1、实验报告应包括实验目的,实验内容,实验步骤,实验思考题
2、完成实验思考题,如有编程题,写出调试正确的程序,并给程序加注释,写出实验中所记录下的内存数据存放格式。
五、实验思考题
下面的汇编语言源程序有错误的,试给程序加注释。
通过调试手段找出程序中的错误并改之。
写出程序的功能,画出程序流程图。
STACKSG:
SEGMENTPARASTACK‘STACK’
DB256DUP(?
)
STACKSGENDS
DATASG:
SEGMENTPARA‘DATA’
BLOCKDW0,-5,8,256,-128,96,100,3,45,6,512
DW23,56,420,75,0,-1024,-67,39,-2000
COUNTEQU20
MAXDW?
DATASGENDS
CODESG:
SEGMENT
ASSUMESS:
STACKSG,CS:
CODESG
ASSUMEDS:
DATASG
ORG100H
BEGINMOVDS,DATASG
LEASI,BLOCK
MOVCX,COUNT
DECCX
MOVAX,[SI]
CHKMAXADDSI,2
CMP[SI],AX
JLENEXT
MOVAX,[SI]
DECCX
NEXT:
LOOPCHKMAX
MOVMAX,AX
MOVAH,4CH
INT21H
CODESGENDS
ENDBEGIN
实验步骤:
1、建立汇编语言源程序,对所建立的汇编语言源程序进行汇编,链接。
2、运行DEBUG调试程序,装入被调试程序,用U命令查看调入的程序,记录代码段基值和数据段基值,用R命令查看并记录下当前寄存器内容
3、用D命令查看并记录下内存中数据存放格式
4、用T命令单步运行程序,观察各条指令执行结果,以及对寄存器、标志位、内存单元的影响,若查找出程序中的错误,用Q命令退出DEBUG环境,修改汇编语言源程序,重复上述步骤,直至整个程序无误。
5、若要求找出数据区中最小数,程序将如何修改,试上机调试。
五、实验思考题
1、在装入被调试程序后,如何知道分配给该用户程序的数据段在内存中的位置?
2、数据区中以什么形式存放带符号数的?
3、程序执行完毕,结果存放在何处?
4、观察伪指令PARA和ORG的作用
附1.1汇编语言程序的编程环境
在通用PC机系统上建立汇编语言程序,需要软件开发环境:
1)文本编辑程序EDIT(或WINDOWS下的记事本、WORD等)。
2)汇编程序MASM(或TASM.EXE)。
3)连接程序LINK(或TLINK.EXE)。
4)调试程序DEBUG(或TD.EXE)。
1.2汇编语言程序的建立过程
一、编辑源程序(建立ASM源程序文件)
汇编源程序可调用计算机系统中任一文本文件编辑器来编辑和修改。
常用的编辑器有DOS下的EDIT和WINDOWS下的记事本、写字板、WORD等,但源文件扩展名必须为.ASM
二、汇编程序(用MASM命令产生OBJ目标文件)
当源程序编写好后,可用MASM命令来汇编该源程序,可得目标文件(.OBJ)、列表文件(.LST)和交叉索引文件(.CRF)等。
如源程序有错误,汇编程序将显示出错位置和原因,也可用列表文件来查看出错位置和原因。
再调用编辑程序,对源程序修改再重复汇编,直至没语法错误,才进入下步链接。
MASM命令行格式为:
MASM源文件名,目标文件名,列表文件名,交叉索引文件名;
命令行中,扩展名都可不给出,汇编程序会按默认情况使用或产生。
若只想对部分提示是否需要给出或产生相关文件给出回答,则在相应位置用逗号隔开。
行末的分号表示不再对剩余部分作答。
如1)C:
\>MASM\MASMHELLO此操作将生成HELLO.OBJ文件
2)C:
\>MASM\MASMHELLO,HELLO1,HELLO2,HELLO3此操作将生成HELLO1.OBJ,HELLO2.LST,HELLO3.CRF等文件
3)C:
\>MASM\MASMHELLO,,,HELLO此操作将生成HELLO.OBJ,HELLO.LST,HELLO.CRF等文件。
在DOS状态下可以用TYPE命令或在WINDOWS下用记事本查看LST和CRF文件。
HELLO文件内容如下:
_Microsoft(R)MacroAssemblerVersion5.009/19/1216:
27:
53
Page1-1
10000datasegment
20000686F7720617265stringdb'howareyou!
$'
320796F752124
4000Ddataends
50000codesegment
6assumecs:
code,ds:
data
70000B8----Rstart:
movax,data
800038ED8movds,ax
90005BA0000Rmovdx,offsetstring
100008B409movah,9
11000ACD21int21h
12000CB44Cmovah,4ch
13000ECD21int21h
140010codeends
15endstart
_Microsoft(R)MacroAssemblerVersion5.009/19/1216:
27:
53
Symbols-1
SegmentsandGroups:
NameLengthAlignCombineClass
CODE..............0010PARANONE
DATA..............000DPARANONE
Symbols:
NameTypeValueAttr
START.............LNEAR0000CODE
STRING.............LBYTE0000DATA
@FILENAME...........TEXThello
14SourceLines
14TotalLines
6Symbols
49782+451626Bytessymbolspacefree
0WarningErrors
0SevereErrors
三、连接程序(用LINK命令产生EXE可执行文件)
经汇编以后产生的OBJ目标程序文件并不是可执行程序文件,必须经过用LINK将一个或几个.OBJ文件(以及可能需要的.LIB库文件)进行连接,生成一个.EXE可执行文件,同时可生成内存映像文件(.MAP)。
LINK命令行格式为:
LINK目标文件名,执行文件名,内存映像文件名,库文件名;
命令行中,扩展名都可不给出,汇编程序会按默认情况使用或产生。
若只想对部分提示给出回答,则在相应位置用逗号隔开。
行末的分号表示不再对剩余部分作答。
例如C:
\>MASM\LINKHELLO;仅生成HELLO.EXE
C:
\>MASM\LINKHELLO,,;生成HELLO.EXE,HELLO.MAP
C:
\>MASM\LINKHELLO,,HELLO;生成HELLO.EXE,HELLO.MAP
同样,KELLO.MAP文件内容可以用记事本来查看,该文件记录了源程序中三个逻辑段的起始地址、终止地址和逻辑段长度等信息:
LINK:
warningL4021:
nostacksegment
StartStopLengthNameClass
00000H0000CH0000DHDATA
00010H0001FH00010HCODE
Programentrypointat0001:
0000
四、执行程序
可执行文件HELLO.EXE建立后,就可以在DOS下运行。
具体操作可为:
C:
\masm\hello
若程序有结果显示,则在屏幕上可以直接看到。
若不显示结果,则只能通过DEBUG等调试工具来查看运行结果。
实际上,大部分程序需要用调试程序来发现和纠正错误,再经过编辑、汇编、链接,才能得到正确的结果。