汇编语言上机实验指导.docx

上传人:b****1 文档编号:10742644 上传时间:2023-05-27 格式:DOCX 页数:14 大小:22.45KB
下载 相关 举报
汇编语言上机实验指导.docx_第1页
第1页 / 共14页
汇编语言上机实验指导.docx_第2页
第2页 / 共14页
汇编语言上机实验指导.docx_第3页
第3页 / 共14页
汇编语言上机实验指导.docx_第4页
第4页 / 共14页
汇编语言上机实验指导.docx_第5页
第5页 / 共14页
汇编语言上机实验指导.docx_第6页
第6页 / 共14页
汇编语言上机实验指导.docx_第7页
第7页 / 共14页
汇编语言上机实验指导.docx_第8页
第8页 / 共14页
汇编语言上机实验指导.docx_第9页
第9页 / 共14页
汇编语言上机实验指导.docx_第10页
第10页 / 共14页
汇编语言上机实验指导.docx_第11页
第11页 / 共14页
汇编语言上机实验指导.docx_第12页
第12页 / 共14页
汇编语言上机实验指导.docx_第13页
第13页 / 共14页
汇编语言上机实验指导.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编语言上机实验指导.docx

《汇编语言上机实验指导.docx》由会员分享,可在线阅读,更多相关《汇编语言上机实验指导.docx(14页珍藏版)》请在冰点文库上搜索。

汇编语言上机实验指导.docx

汇编语言上机实验指导

实验一汇编语言上机基本步骤

一、实验目的:

熟悉汇编语言的上机过程,掌握各项工具软件的使用方法

二、实验环境:

1.硬件:

PC微机

2.软件:

DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE

三、实验内容:

1.前期准备:

在开始进行汇编语言上机练习之前,建立并进入自己的工作子目录,准备好相关工具软件如MASM.EXE、LINK.EXE等,其后所有工作均在自己的子目录中进行,以避免因路径概念不清而导致的文件存取错误,以及对系统其它部分造成影响。

1)建立自己的工作子目录(例如MYTEST):

C:

\>MDMYTEST

2)进入自己的工作子目录:

C:

\>CDMYTEST

3)将所需工具软件从其它地方(如C:

\MASM)拷贝进自己的工作子目录:

C:

\MYTEST>COPYC:

\MASM\MASM.EXE

C:

\MYTEST>COPYC:

\MASM\LINK.EXE

2.编写源程序:

原则上可以用任何文字处理软件(如EDIT、写字板、甚至WORD)编写源程序,但必须注意,源程序应为ASCII码文件(或称纯文本文件),扩展名一般为.ASM。

因此,建议使用DOS环境下的EDIT软件。

1)在DOS系统操作提示符下键入EDIT并回车,即可进入EDIT文本编辑环境。

如果没有进入,检查当前路径下是否存在EDIT.EXE文件,以及文件是否完整等。

2)从键盘输入下列程序(不必输入注释部分):

CODESEGMENT;定义一个CODE段

ASSUMECS:

CODE;定义CODE段为代码段

START:

;可执行语句起始处

MOVAH,02H;以下三条语句将显示字母a

MOVDL,’a’

INT21H

MOVAH,4CH;以下二条语句将返回DOS

INT21H

CODEENDS;CODE段结束

ENDSTART;整个程序结束

该程序的功能是仅在CRT屏上显示一个字母a,完成功能的只有其中的三条语句,但其它部分则是一个完整的汇编语言源程序必不可少的部分。

3)存盘退出EDIT文本编辑环境。

在存盘时应将文件的扩展名确定为.ASM(如TEST.ASM),并注意存盘的路径,最好与EDIT、MASM、LINK等软件相同。

4)在DOS系统提示符下利用DIR命令检查TEST.ASM文件是否确实产生。

3.汇编:

利用MASM.EXE宏汇编程序,将已经存盘的ASCII码源程序翻译成二进制目标程序,其扩展名一般为.OBJ。

1)操作方法:

假定当前工作路径为C:

\MYTEST>,且所需文件均存在于当前路径,则针对源程序TEST.ASM的汇编有以下三种方法(其中斜体部分由键盘输入):

a)C:

\MYTEST>MASM.EXE↘

Microsoft(R)MacroAssemblerVersion5.00

Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.

Sourcefilename[.ASM]:

TEST↘

Objectfilename[TEST.OBJ]:

Sourcelisting[NUL.LST]:

Cross-reference[NUL.CRF]:

51524+435132Bytessymbolspacefree

0WarningErrors

0SevereErrors

b)C:

\MYTEST>MASMTEST.ASM↘

Microsoft(R)MacroAssemblerVersion5.00

Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.

Objectfilename[TEST.OBJ]:

Sourcelisting[NUL.LST]:

Cross-reference[NUL.CRF]:

51524+435132Bytessymbolspacefree

0WarningErrors

0SevereErrors

c)C:

\MYTEST>MASMTEST;↘

Microsoft(R)MacroAssemblerVersion5.00

Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.

51524+435132Bytessymbolspacefree

0WarningErrors

0SevereErrors

2)在上述三种方法中,推荐使用第三种,但是必须满足以下要求:

a)所有文件均位于当前工作路径下。

b)源程序扩展名为.ASM,目标程序扩展名为.OBJ。

3)若源程序有语法错误,则汇编结束将给出提示信息,并依次列出错误出现的行号及性质。

这时,应重新进入EDIT文本编辑环境中,根据提示对源程序进行修改,然后重新存盘、汇编。

只有所有错误为0,才能得到正确的目标文件。

注意该步骤只能检查出语法错误,对设计思想上的错误,应通过调试才能检查出来。

4)汇编结束后,检查是否产生相应目标程序TEST.OBJ。

4.连接:

利用LINK.EXE连接程序,将二进制目标程序整理成DOS系统下的可执行程序,其扩展名必须为.EXE。

1)操作方法:

与汇编相似,可有多种形式,一般使用:

C:

\MYTEST>LINKTEST;↘

但需注意这时的TEST应是.TEST.OBJ文件。

2)在得到正确的.OBJ文件后,该步骤一般不会出现问题,但可能会出现下列提示:

LINK:

warningL4021:

nostacksegment

针对该提示,可不予理会。

3)连接结束后,检查是否产生相应的可执行程序TEST.EXE。

5.运行:

1)如果没有问题,生成的可执行程序TEST.EXE即可以象其它DOS外部命令一样,直接在DOS系统下运行,整个编程工作完成。

如在本实验中:

C:

\MYTEST>TEST↘

2)一般在编写较复杂的程序时,可能出现设计上的错误。

如果不能在源程序中检查出错误,则必须通过DEBUG调试,才能检查出错误所在,然后再回到前面的各个步骤中重复操作。

在本实验中,由于程序简单,可以不必调试。

四、练习

对实验程序进行由浅及深的修改,领会上机的各个步骤及注意事项。

实验二用DEBUG调试程序

一、实验目的

学习利用DEBUG调试程序的基本思想及方法

二、实验环境:

1.硬件:

PC微机

2.软件:

DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE

三、实验内容

利用DEBUG调试程序,可以将一个可执行程序(如.EXE、.COM等)装入内存中,并接管对程序运行的控制权,通过采取如反汇编、断点运行、单步执行、寄存器内容修改等方法,对可执行程序进行跟踪、调试,以找出其中的设计错误,然后再对源程序进行相应修改,重新生成正确的可执行程序。

1.准备被调试程序:

假定所有有关文件均在当前路径C:

\MYTEST>下,按照实验一的步骤生成一个被调试的可执行程序(如TEST.EXE),参考程序如下:

DATASEGMENT

STRDB‘Hello,World!

$’

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2.进入DEBUG环境:

(其中斜体部分由键盘输入。

C:

\MYTEST>DEBUGTEST.EXE↘

-

其中,短线‘-’作为DEBUG环境的操作提示符,在此提示符下,可以输入各种DEBUG命令,对可执行程序TEST.EXE进行跟踪调试。

3.主要调试命令:

1)反汇编命令U:

将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解。

一般常用以下格式:

a)-U↘:

从当前IP处开始,对连续约32字节内容反汇编。

如对TEST.EXE,刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:

-U↘

12B7:

0000B8B612MOVAX,12B6

12B7:

00038ED8MOVDS,AX

12B7:

0005BA0000MOVDX,0000

12B7:

0008B409MOVAH,09

12B7:

000ACD21INT21

12B7:

000CB44CMOVAH,4C

12B7:

000ECD21INT21

12B7:

0010EB51JMP0063

12B7:

00128B867AFMOVAX,[BP+FF7A]

………………

12B7:

001F8B4604MOVAX,[BP+04]

-

在上例中,12B7:

0000表示CS:

IP的内容(其中CS的值是动态值);B8B612代表该处存放的二进制数据,亦即指令MOVAX,12B6的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。

特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中的JMP0063以后的部分,显然不是TEST.EXE的内容。

另外还需注意,DEBUG默认使用十六进制。

b)–U0123↘:

从指定的IP=0123处开始,对连续约32字节内容反汇编。

c)–U01230143↘:

从指定的IP=0123处开始反汇编,直至指定的0143处结束。

2)显示寄存器命令R:

显示或修改寄存器的内容。

一般常用以下形式:

a)-R↘:

显示所有寄存器当前的内容及当前将执行的指令。

如对TEST.EXE,在程序运行之前,键入R命令:

-R↘

AX=0000BX=0000CX=0020DX=0000SP=0000BP=0000SI=0000DI=0000

DS=12A6ES=12A6SS=12B6CS=12B7IP=0000NVUPEIPLNZNAPONC

12B7:

0000B8B612MOVAX,12B6

-

在显示寄存器内容时,标志寄存器F(或程序状态字寄存器PSW)表示成各个分离的标志位,其意义如下表所示:

溢出

方向

中断

符号

辅助进位

奇偶

进位

0

NV

UP

DI

PL

NZ

NA

PO

NC

1

OV

DN

EI

NG

ZR

AC

PE

CY

b)-RAX↘:

显示指定的AX寄存器当前的内容,并等待键入新值;如果不作修改,可直接回车。

如:

-RAX↘

AX0000

1234↘

-

c)-RF↘:

显示标志寄存器F各个标志位的内容,并等待键入新的标志位;如果不作修改,可直接回车。

如:

-RF↘

NVUPEIPLNZNAPONC-ZR↘

-

3)运行命令G:

使程序在DEBUG控制下运行,一般有全程、断点运行两种方式。

a)-G↘:

控制程序由当前IP处运行,直至程序结束。

如果当前IP为初始值,其作用则相当于直接在DOS下运行程序,一般用于快速观察程序的运行情况。

b)-G0123↘:

控制程序由当前IP处运行,直至指定的断点IP=0123H处,程序暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。

如对TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至000A处:

-G000A↘

AX=09B6BX=0000CX=0020DX=0000SP=0000BP=0000SI=0000DI=0000

DS=12B6ES=12A6SS=12B6CS=12B7IP=000ANVUPEIPLNZNAPONC

12B7:

000ACD21INT21

-

断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、缓冲区、标志等)来判断程序是否运行正确。

4)单步命令T:

控制程序运行一条指令后暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。

如对TEST.EXE,若当前IP为初始值,则键入T命令后有如下显示:

-T↘

AX=12B6BX=0000CX=0020DX=0000SP=0000BP=0000SI=0000DI=0000

DS=12A6ES=12A6SS=12B6CS=12B7IP=0003NVUPEIPLNZNAPONC

12B7:

00038ED8MOVDS,AX

-

单步命令一般用于需对程序运行作仔细分析的地方,如判断分支转移、观察运算结果等。

若能综合运用断点及单步指令,则可大大提高DEBUG调试的速度及效率。

但应注意,当IP指针位于INT21H一类指令处时,执行T命令将会使程序进入该功能调用子程序中,因此,这种情况下最好不用T命令,而用断点运行命令跳过该类功能调用指令。

5)显示内存命令D:

以十六进制及ASCII两种方式显示内存区的二进制数据,通常用来观察数据段内的缓冲区内容。

一般常用以下二种形式:

a)-D↘:

从0000单元开始,连续显示128个内存单元的内容,如果继续键入D命令,则继续显示后128个单元内容。

如对TEST.EXE,若想观察字符串显示时的字符串内容是否正确,则可在程序断点运行至000A处,键入D命令:

-DDS:

0↘

12B6:

000048656C6C6F2C576F-726C642124000000Hello,World!

$...

12B6:

0010B8B6128ED8BA0000-B409CD21B44CCD21...........!

.L.!

12B6:

0020EB518B867AFF2BC6-40508A460898508B.Q..z.+*****..P.

…………

12B6:

007083C4028B5E048A07-2AE489867AFF3BC6....^...*...z.;.

-

在上例中,128个单元分成8行,每行16个单元,每个单元的内容分别以十六进制形式和ASCII码形式显示。

如果该单元的内容不是可显示字符,则在ASCII区内显示为“.”。

b)–D01230143↘:

从指定的0123单元开始显示,直至指定的0143单元结束。

6)汇编命令A:

用于在DEBUG环境下直接键入汇编语言语句、生成较简单的可执行代码而不必经过完整的汇编语言编程步骤,或者用来在调试过程中临时修改某条指令。

如:

-A↘

127D:

0100MOVAH,02↘

127D:

0102MOVAL,6A↘

127D:

0104INT21↘

127D:

0106↘

-A0102↘

127D:

0102MOVDL,6A↘

127D:

0104↘

-

当键入汇编命令A后,将从当前IP或指定地址处提示输入汇编语句,每输入一条语句,DEBUG将其汇编成机器码,并存入相应的存储单元中,然后地址自动增加,继续提示输入下一条语句;如果直接回车,则结束汇编命令。

特别应注意的是,DEBUG默认使用十六进制,故在输入时不能使用H。

7)装载命令L:

用来将被调试程序重新装载进内存中,一般用于程序运行结束后需继续调试程序时,或需从头开始调试程序时。

如对TEST.EXE:

-G↘

Hello,World!

Programterminatednormally

-L↘-

8)退出命令Q:

键入此命令,即退出DEBUG状态,返回DOS。

实验三基本程序设计

一、实验目的

学习顺序、分支、循环三种基本结构的程序设计方法

二、实验环境:

1.硬件:

PC微机

2.软件:

DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE

三、实验内容

1.编写程序,要求对键盘输入的小写英文字母用相应大写英文字母显示,如键盘输入“a”,则显示“A”。

2.编写程序,若键盘输入小写字母,则用相应大写字母显示;反之,若键盘输入大写字母,则用相应小写字母显示。

3.编写程序,循环实现上述程序2的功能,直至键盘输入任一非英文字符,程序停止。

四、练习

1.统计某班学生的成绩等级并存放在相应变量中。

等级的划分原则为:

A:

90~100B:

80~89C:

70~79D:

60~69E:

0~59

2.编写程序,统计某个字变量中1的个数并存放在相应变量中。

实验四数码转换程序设计

一、实验目的

学习不同进制数及编码间相互转换的程序设计方法

二、实验环境:

1.硬件:

PC微机

2.软件:

DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE

三、实验内容

1.编写程序,要求从键盘输入一个多位十进制数(如123),在程序中将其转换成8位二进制数,以实现由ASCII码到二进制数的转换。

2.编写程序,要求从键盘输入两个二位十进制数(如12和34),在程序中将二数相加,并显示其和,以实现由二进制数到ASCII码的转换。

3.编写程序,在某内存区存放10个任意字节数,然后将它们按照十六进制形式显示出来,以实现由十六进制数到ASCII码的转换。

四、练习

从键盘输入两个十进制数,按照BCD原则相加,并显示其结果。

实验五排序程序设计

一、实验目的

学习综合程序的设计、编制及调试方法。

二、实验环境:

1.硬件:

PC微机

2.软件:

DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE

二、实验内容

1.在数据区中存放10个不同大小的个位数,要求将它们由大到小(或相反)进行排序,并存放在另一数据区中。

2.在数据区中存放10个不同大小的个位数,要求将它们由大到小(或相反)进行排序,并存放在同一数据区中。

3.从键盘输入10个不同大小的个位数,利用冒泡法进行排序,然后显示在屏幕上。

三、练习

从键盘输入某班学生的某课程成绩,利用冒泡法对它们进行排序,然后按照由高到低的顺序显示在屏幕上。

要求学生人数不定。

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

当前位置:首页 > 工程科技 > 能源化工

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

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