文档视界 最新最全的文档下载
当前位置:文档视界 › 汇编语言程序设计的实验环境及上机步骤

汇编语言程序设计的实验环境及上机步骤

汇编语言程序设计的实验环境及上机步骤

一、实验环境

汇编语言程序设计的实验环境如下:

1.硬件环境

微型计算机(Intel x86系列CPU)一台

2.软件环境

⏹Windows98/2000/XP操作系统

⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等)

⏹汇编程序(MASM.EXE或TASM.EXE)

⏹连接程序(LINK.EXE或TLINK.EXE)

⏹调试程序(DEBUG.EXE或TD.EXE)

文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。

二、上机实验步骤

注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。

1.确定源程序的存放目录

建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。如果没有创建过此目录,请用如下方法创建:

通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。

请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。

2.建立ASM源程序

建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。

在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“https://www.docsj.com/doc/9819183562.html, C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。

图1 文本编辑器EDIT的编辑窗口

窗口标题行显示了EDIT程序的完整路径名。紧接着标题行下面的是菜单行,窗口最下面一行是提示行。菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。

如果键入EDIT命令时已带上了源程序文件名(C:\ASM\HELLO.ASM),在编辑窗口上部就会显示该文件名。如果在键入EDIT命令时未给出源程序文件名,则编辑窗口上会显示“UNTITLED1”,表示文件还没有名字,在这种情况下保存源程序文件时,EDIT会提示输入要保存的源程序的文件名。

编辑窗口用于输入源程序。EDIT是一个全屏幕编辑程序,故可以使用方向键把光标定位到编辑窗口中的任何一个位置上。EDIT中的编辑键和功能键符合Windows的标准,这里不再赘述。

源程序输入完毕后,用Alt-F打开File菜单,用其中的Save功能将文件存盘。如果在键入EDIT命令时未给出源程序文件名,则这时会弹出一个“Save as”窗口,在这个窗口中输入你想要保存的源程序的路径和文件名(本例中为C:\ASM\HELLO.ASM)。

注意,汇编语言源程序文件的扩展名最好起名为.ASM,这样能给后面的汇编和连接操作带来很大的方便。

3.用MASM.EXE汇编源程序产生OBJ目标文件

源文件HELLO.ASM建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。具体操作如下:

方法一:在Windows中操作

用资源管理器打开源程序目录C:\ASM,把HELLO.ASM拖到MASM.EXE程序图标上。

方法二:在DOS命令提示符窗口中操作

选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入MASM命令:

I:>C:<回车>

C:>CD \ASM<回车>

C:\ASM>MASM HELLO.ASM<回车>

操作时的屏幕显示如图2所示。

图2 在DOS命令提示符窗口中进行汇编

不管用以上二个方法中的哪个方法,进入MASM程序后,都会提示让你输入目标文件名(Object filename),并在方括号中显示默认的目标文件名,建议输入目标文件的完整路径名,如:C:\ASM\HELLO.OBJ〈回车〉。后面的两个提示为可选项,直接按回车。注意,若打开MASM程序时未给出源程序名,则MASM程序会首先提示让你输入源程序文件名(Source filename),此时输入源程序文件名HELLO.ASM并回车,然后进行的操作与上面完全相同。

图3 有错误的汇编过程例子

如果没有错误,MASM就会在当前目录下建立一个HELLO.OBJ文件(名字与源文件名相同,只是扩展名不同)。如果源文件有错误,MASM会指出错误的行号和错误的原因。图3是在汇编过程中检查出两个错误的例子。在这个例子中,可以看到源程序的错误类型有两类:

警告错误(Warning Errors)。警告错误不影响程序的运行,但可能会得出错误的结果。此例中无警告错误。

严重错误(Severe Errors)。对于严重错误,MASM将无法生成OBJ文件。此例中有两个严重错误。

在错误信息中,园括号里的数字为有错误的行号(在此例中,两个错误分别出现在第6行和第9行),后面给出了错误类型及具体错误原因。如果出现了严重错误,你必须重新进入EDIT编辑器,根据错误的行号和错误原因来改正源程序中的错误,直到汇编没有错为止。

注意,汇编程序只能指出程序的语法错误,而无法指出程序逻辑的错误。

4.用LINK.EXE产生EXE可执行文件

在上一步骤中,汇编程序产生的是二进制目标文件(OBJ文件),并不是可执行文件,要想使我们编制的程序能够运行,还必须用连接程序(LINK.EXE)把OBJ文件转换为可执行的EXE文件。具体操作如下:

方法一:在Windows中操作

用资源管理器打开源程序目录C:\ASM,把HELLO.OBJ拖到LINK.EXE程序图标上。

方法二:在DOS命令提示符窗口中操作

选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入LINK命令:

I:>C:<回车>

C:>CD \ASM<回车>

C:\ASM>LINK HELLO.OBJ<回车>

操作时的屏幕显示如图4所示。

图4 把OBJ文件连接成可执行文件

不管用以上二个方法中的哪个方法,进入LINK程序后,都会提示让你输入可执行文件名(Run file),并在方括号中显示默认的可执行文件名,建议输入可执行文件的完整路径名,如:C:\ASM\HELLO.EXE〈回车〉。后面的两个提示为可选项,直接按回车。注意,若打开LINK程序时未给出OBJ文件名,则LINK程序会首先提示让你输入OBJ文件名(Object Modules),此时输入OBJ文件名HELLO.OBJ并回车,然后进行的操作与上面完全相同。

如果没有错误,LINK就会建立一个HELLO.EXE文件。如果OBJ文件有错误,LINK会指出错误的原因。对于无堆栈警告(Warning:NO STACK segment)信息,可以不予理睬,它不影响程序的执行。如链接时有其它错误。须检查修改源程序,重新汇编、连接,直到正确。

5.执行程序

建立了HELLO.EXE文件后,就可以直接在DOS下运行此程序,如下所示:

C:>HELLO〈回车〉

C:>

程序运行结束后,返回DOS。如果运行结果正确,那么程序运行结束时结果会直接显示在屏幕上。如果程序不显示结果,我们如何知道程序是否正确呢?例如,这里的HELLO.EXE程序并未显示出结果,所以我们不知道程序执行的结果是否正确。这时,我们就要使用TD.EXE调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用TD.EXE。

实验一数据传送

一、实验目的

1.熟悉8086指令系统的数据传送指令及8086的寻址方式。

2.利用Turbo Debugger调试工具来调试汇编语言程序。

二、实验预习要求

1.复习8086指令系统中的数据传送类指令和8086的寻址方式。

2.预习Turbo Debugger的使用方法(见附录二):

a)如何启动Turbo Debugger;

b)如何在各窗口之间切换;

c)如何查看或修改寄存器、状态标志和存储单元的内容;

d)如何输入程序段;

e)如何单步运行程序段和用设置断点的方法运行程序段。

3.按照题目要求预先编写好实验中的程序段。

三、实验任务

1.通过下述程序段的输入和执行来熟悉Turbo Debugger的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下:

MOV BL,08H

MOV CL,BL

MOV AX,03FFH

MOV BX,AX

MOV DS:[0020H],BX

2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下:

MOV AX,0102H

MOV BX,0304H

MOV CX,0506H

MOV DX,0708H

PUSH AX

PUSH BX

PUSH CX

PUSH DX

出栈程序段请自行编写(用不同的出栈顺序)。

3.指出下列指令的错误并加以改正,上机验证之。

(1) MOV [BX],[SI]

(2) MOV AH,BX

(3) MOV AX,[SI][DI]

(4) MOV BYTE PTR[BX],2000H

(5) MOV CS,AX

(6) MOV DS,2000H

4. 设置各寄存器及存储单元的内容如下:

(BX)=0010H,(SI)=0001H

(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H

(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH

说明下列各条指令执行完后AX寄存器中的内容,并上机验证。

(1) MOV AX,1200H

(2) MOV AX,BX

(3) MOV AX,[0120H]

(4) MOV AX,[BX]

(5) MOV AX,0110H[BX]

(6) MOV AX,[BX][SI]

(7) MOV AX,0110H[BX][SI]

5. 将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。

6. 设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:0010H单元中的内容为3333H。将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:0010H 单元中的内容进行交换。试编写程序段,并上机验证结果。

7.设(DS)=1000H,(ES)=2000H,有关存储器的内容如图1.5所示。要求将DS段的内容传送到AX寄存器,ES段的内容传送到BX寄存器,试编写程序段。

DS:1000H

ES:2000H

实验二算术逻辑运算及移位操作一、实验目的

1.熟悉算术逻辑运算指令和移位指令的功能。

2.了解标志寄存器各标志位的意义和指令执行对它的影响。

二、实验预习要求

1.复习8086指令系统中的算术逻辑类指令和移位指令。

2.按照题目要求在实验前编写好实验中的程序段。

三、实验任务

1.实验程序段及结果表格如表1.2:

表1.2

2.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程序段并上机验证结果。

MOV BX, 0010H

MOV BYTE PTR[BX], 10H

MOV BYTE PTR[BX+1], 04H

MOV BYTE PTR[BX+2], 30H

MOV AL, 0H

MOV AL, [BX]

ADD AL, [BX+1]

ADD AL, [BX+2]

MOV BYTE PTR[BX+3], AL

3.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)=? 72

(1) 传送15H到AL寄存器;

(2) 再将AL的内容乘以2;

(3) 接着传送15H到BL寄存器;

(4) 最后把AL的内容乘以BL的内容。

MOV AL, 15H

MUL 2

MOV BL, 15H

MUL BL

4.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的商=?

(1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;

(2) 把DS:1000H单元中的数据传送到AX寄存器;

(3) 把AX寄存器的内容算术右移二位;

(4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;

(5) 最后把商存入字节单元DS:1003H中。

5.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。

(1) 将第4条比较指令语句填写完整(划线处)。

MOV SI,0010H

NEXT: MOV WORD PTR[SI],0

ADD SI,2

CMP SI,

JNE NEXT

HLT

(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),则上述程序段应如何修改?

上机验证以上两个程序段并检查存储单元的内容是否按要求进行了改变。

6.输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。

表1.3

实验三串操作

一、实验目的

1.熟悉串操作指令的功能。

2.了解串操作指令的使用方法。

二、实验预习要求

1.复习8086指令系统中的串操作类指令。

2.按照题目要求在实验前编写好实验中的程序段。

三、实验任务

1.输入以下程序段并运行之,回答后面的问题。

CLD

MOV DI,1000H

MOV AX,55AAH

MOV CX,10H

REP STOSW

上述程序段执行后:

(1) 从DS:1000H开始的16个字单元的内容是什么?

(2) (DI)= ?(CX)= ?,并解释其原因。

2.在上题的基础上,再输入以下程序段并运行之,回答后面的问题。

MOV SI,1000H

MOV DI,2000H

MOV CX,20H

REP MOVSB

程序段执行后:

(1) 从DS:2000H开始的16个字单元的内容是什么?

(2) (SI)= ?(DI)= ?(CX)= ?,并分析之。

3.在以上两题的基础上,再输入以下三个程序段并依次运行之。

程序段1:

MOV SI,1000H

MOV DI,2000H

MOV CX,10H

REPZ CMPSW

程序段1执行后:

(1) ZF=?根据ZF的状态,你认为两个串是否比较完了?

(2)(SI)= ?(DI)= ?(CX)= ?,并分析之。

程序段2:

MOV [2008H],4455H

MOV SI,1000H

MOV DI,2000H

MOV CX,10H

REPZ CMPSW

程序段2执行后:

(1) ZF=?根据ZF的状态,你认为两个串是否比较完了?

(2)(SI)= ?(DI)= ?(CX)= ?,并分析之。

程序段3:

MOV AX,4455H

MOV DI,2000H

MOV CX,10H

REPNZ SCASW

程序段3执行后:

(1) ZF=?根据ZF的状态,你认为在串中是否找到了数据4455H?

(2)(SI)= ?(DI)= ?(CX)= ?,并分析之。

4.从DS:1000H开始存放有一个字符串”This is a string”,要求把这个字符串从后往前传送到DS:2000H开始的内存区域中(即传送结束后,从DS:2000H开始的内存单元的内容为”gnirts a si sihT”),试编写程序段并上机验证之。

实验四字符及字符串的输入和输出

一、实验目的

1.熟悉如何进行字符及字符串的输入输出。

2.掌握简单的DOS系统功能调用。

二、实验预习要求

1.复习系统功能调用的1、2、9、10号功能。

2.按照题目要求预先编写好实验中的程序段。

三、实验任务

1.输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上按“5”键。

MOV AH,1

INT 21H

(1) 运行结束后,(AL)=?它是哪一个键的ASCII码?

(2) 重复运行以上程序段,并分别用“A”、“B”、“C”、“D”键代替“5”键,观察运行结果有

何变化?

2.在DS:1000H开始的内存区域设置如下键盘缓冲区:

DS:1000H 5,0,0,0,0,0,0

然后输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。

LEA DX,[1000H]

MOV AH,0AH

INT 21H

程序段运行完后,检查DS:1000H开始的内存区域:

(1) DS:1001H单元的内容是什么?它表示了什么含义?

(2) 从DS:1002H开始的内存区域中的内容是什么?其中是否有字符“1”的ASCII码?为什么?

3.输入以下程序段并运行之。

MOV DL,‘A’

MOV AH,2

INT 21H

(1)观察屏幕上的输出,是否显示了“A”字符?

(2)分别用“#”、“X”、“Y”、“$”、“?”代替程序段中的“A”字符,观察屏幕上的输出有何变

化。

(3)分别用0DH、0AH代替程序段中的“A”字符,观察屏幕上的输出有何变化。

(4)用07H代替程序段中的“A”字符,观察屏幕上有无输出?计算机内的扬声器是否发出“哔”

的声音?

4.要在屏幕上显示一个字符串“Hello, world”,写出该字符串变量的定义语句和显示这个字符串的程序段。上机验证之。

5.按6行×16列的格式顺序显示ASCII码为20H到7FH之间的所有字符,即每16个字符为一行,共6行。每行中相邻的两个字符之间用空格字符分隔开。试编写程序段并上机运行验证。提示:程序段包括两层循环,内循环次数为16,每次内循环显示一个字符和一个空格字符;外循环次数为6,每个外

循环显示一行字符并显示一个回车符(0DH)和一个换行符(0AH)。

实验五直线程序设计

一、实验目的

1、学习8086汇编语言程序的基本结构和程序设计的基本方法。

2、熟悉在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的全过程。

二、实验预习要求

1、认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。

2、复习BCD码运算的调整指令。

3、根据本实验的编程提示和程序框架预先编写汇编语言源程序。

4、有兴趣的同学请自行编写出后面的实验习题。

三、直线程序简介

直线程序是控制流仅有一个走向的程序,它主要用于解决一些无需进行判断分支,也无需循环简单的简单问题。

四、实验内容

设a、b、c、d四个数分别以压缩的BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d),然后把结果显示在屏幕上。

改变a,b,c,d内容,然后重新汇编、连接并运行程序,检查其结果与手工计算是否相符。下面是几组实验用的数据:

1、a=09,b=16,c=04,d=17

2、a=38,b=41,c=29,d=34

3、a=70,b=23,c=42,d=41

4、a=63,b=73,c=62,d=50

五、调试提示

源程序编制完后,先静态检查,无误后,对源程序进行汇编连接,生成可执行文件。

先将程序在DOS下运行,如正确,则改变a,b,c,d的值反复验证,如不正确,则将程序调入TD 中进行调试。

六、实验习题

若改变a, b, c, d的值如下:

1、a=90,b=34,c=33,d=44

2、a=12,b=19,c=25,d=33

观察结果,改进程序使结果正确。

实验六分支及循环程序设计

一、实验目的

1、学习提示信息的显示及键盘输入字符的方法。

2、掌握分支程序和循环程序的设计方法。

二、实验预习要求

1、复习比较指令、转移指令、循环指令的用法。

2、根据编程提示,编出汇编语言源程序。

3、有兴趣的同学请编写出实验习题中的程序。

三、分支程序和循环程序简介

1、分支程序是根据不同条件执行不同处理过程的程序。分支程序的结构有两种:—种是二分支,—种是多分支。它们的共同特点是在满足某一条件时,将执行多个分支中的某—分支。

2、循环程序

四、实验内容

在屏幕上显示提示信息“Please input 10 numbers:”,提示用户输入10个数(数的范围在0~99之间),然后从键盘上读入这10个数。接着对这10个数从小到大进行排序,并统计0~59、60~79、80~99的数各有多少。最后在屏幕上显示排序后的数(每个数之间用逗号分隔)并显示统计的结果。显示格式如下:

Sorted numbers: xx,xx,xx,xx,xx,xx,xx,xx,xx,xx

0-59: xx

60-79: xx

80-99: xx

五、实验习题

1.从键盘输入任意一个字符串,统计其中不同字符出现的次数(不分大小写),并把结果显示在屏

幕上。

2.从键盘分别输入两个字符串,若第二个字符串包含在第一个字符串中则显示‘MATCH’,否则显示‘NO MATCH’。

TD.EXE简要使用说明

TD. EXE(简称TD)是一个具有窗口界面的程序调试器。利用TD,用户能够调试已有的可执行程序(后缀为EXE);用户也可以在TD中直接输入程序指令,编写简单的程序(在这种情况下,用户每输入一条指令,TD就立即将输入的指令汇编成机器指令代码)。作为入门指导,下面简单介绍一下TD的使用方法,更详细深入的使用说明请参考相关资料。

一、如何启动TD

二、TD中的数制

三、TD的用户界面

四、代码区的操作

五、寄存器区和标志区的操作

六、数据区的操作

七、堆栈区的操作

一、如何启动TD

1.在DOS窗口中启动TD

仅启动TD而不载入要调试的程序

转到TD.EXE所在目录(假定为C:\ASM),在DOS提示符下键入以下命令(用户只需输入带下划线的部分,↙表示回车键,下同):

C:\ASM>TD↙

用这种方法启动TD,TD会显示一个版权对话框,这时按回车键即可关掉该对话框。

启动TD并同时载入要调试的程序

转到TD.EXE所在目录,在DOS提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):

C:\ASM>TD HELLO.EXE↙

若建立可执行文件时未生成符号名表,TD启动后会显示“Program has no symbol table”的提示窗口,这时按回车键即可关掉该窗口。

2.在Windows中启动TD

仅启动TD而不载入要调试的程序

双击TD.EXE文件名,Windows就会打开一个DOS窗口并启动TD。启动TD后会显示一个版权对话框,这时按回车键即可关掉该对话框。

启动TD并同时载入要调试的程序

把要调试的可执行文件拖到TD.EXE文件名上,Windows就会打开一个DOS窗口并启动TD,然后TD会把该可执行文件自动载入内存供用户调试。

若建立可执行文件时未生成符号名表,TD启动后会显示“Program has no symbol table”的提示窗口,这时按回车键即可关掉该窗口。

二、TD中的数制

TD支持各种进位记数制,但通常情况下屏幕上显示的机器指令码、内存地址及内容、寄存器的内容等均按十六进制显示(数值后省略“H”)。在TD

的很多操作中,需要用户输入一些数据、地址等,在输入时应遵循计算机中数的记数制标识规范。例如:二进制数后面加“B”或“b”,如b等;

十六进制数后面加“H”或“h”,如38h、0a5h、0ffh等。

如果在输入的数后面没有用记数制标识字母来标识其记数制,TD默认该数为十六进制数。但应注意,如果十六进制数的第一个数字为“a”~“f”,则

前面应加0,以区别于符号和名字。

TD允许在常数前面加上正负号。例如,十进制数的-12可以输入为-12d,十六进制数的-5a可以输入为-5ah,TD自动会把输入的带正负号的数转换为十六

进制补码数。只有一个例外,当数据区的显示格式为字节,若要修改存储单元的内容则不允许用带有正负号的数,而只能按手工转换成补码后再输入。

本实验指导书中所有的实验在输入程序或数据时,若没有特别说明,都可按十六进制数进行输入,若程序中需要输入负数,可按上述规则进行输入。

三、TD的用户界面

1.CPU窗口

TD启动后呈现的是一个具有窗口形式的用户界面,见图B.1,它称为CPU窗口。CPU窗口显示了CPU和内存的整个状态。利用CPU窗口可以:

在代码区内使用嵌入汇编,输入指令或对程序进行临时性修改。

存取数据区中任何数据结构下的字节,并以多种格式显示或改变它们。

检查和改变寄存器(包括标志寄存器)的内容。

图B.1 TD的CPU窗口界面

CPU窗口分为五个区域:代码区、寄存器区、标志区、数据区和堆栈区。

在五个区域中,光标所在区域称为当前区域,用户可以使用Tab键或Shift-Tab键切换当前区域,也可以在相应区中单击鼠标左键选中某区

为当前区。光标在各个区域中显示形式稍有不同,在代码区、寄存器区、标志区和堆栈区呈现为一个反白条,在存储器区为下划线形状。

在图B.1中,CPU窗口上边框的左边显示的是处理器的类型(8086、80286、80386、80486等,对于80486以上的CPU 均显示为80486)。上边

框的中间靠右处显示了当前指令所访问的内存单元的地址及内容。再往右的“1”表示此CPU窗口是第一个CPU窗口,TD允许同时打开多个CPU窗口。

CPU窗口中的代码区用于显示指令地址、指令的机器代码以及相应的汇编指令;寄存器区用于显示CPU寄存器当前的内容;标志区用于显示CPU

的8个标志位当前的状态;数据区用于显示用户指定的一块内存区的数据(十六进制);堆栈区用于显示堆栈当前的内容。

在代码区和堆栈区分别显示有一个特殊标志( ),称为箭标。代码区中的箭标指示出当前程序指令的位置(CS:IP),堆栈区中的箭标指示出

当前堆栈指针位置(SS:SP)。

2.全局菜单介绍

CPU窗口的上面为TD的全局菜单条,可用“ALT键+菜单项首字符”打开菜单项对应的下拉子菜单。在子菜单中用“↑”、“↓”键选择所需的

功能,按回车键即可执行选择的功能。为简化操作,某些常用的子菜单项后标出了对应的快捷键。下面简单介绍一下常用的菜单命令,详细的说明

情查阅相关资料。

(1)File菜单:文件操作

Open载入可执行程序文件准备调试

Change dir改变当前目录

Get info显示被调试程序的信息

DOS shell执行DOS命令解释器(用EXIT命令退回到TD)

Quit退出TD(Alt-X)

(2)

Copy复制当前光标所在内存单元的内容到粘贴板(Shift-F3)Paste把粘贴板的内容粘贴到当前光标所在内存单元(Shift-F4)(3)

Breakpoints断点信息

Stack堆栈段内容

Watches被监视对象信息

Variables变量信息

Module模块信息

File文件内容

CPU打开一个新的CPU窗口

Dump数据段内容

Registers寄存器内容

(4)

Run从CS:IP开始运行程序直到程序结束(F9)

Go to cursor从CS:IP开始运行程序到光标处(F4)

Trace into单步跟踪执行(对CALL指令将跟踪进入子程序)(F7)

Step over单步跟踪执行(对CALL指令将执行完子程序才停下)(F8) Execute to执行到指定位置(Alt-F9)

Until return执行当前子程序直到退出(Alt-F8)

(5)

Toggle在当前光标处设置/清除断点(F2)

At 在指定地址处设置断点(Alt-F2)

Delete all清除所有断点

(6)

Inspector打开观察器以查看指定的变量或表达式

Evaluate/Modify计算和显示表达式的值

Add watch增加一个新的表达式到观察器窗口

(7)

Display options 设置屏幕显示的外观

Path for source指定源文件查找目录

Save options保存当前选项

(8)

Zoom放大/还原当前窗口(F5)

Next转到下一窗口(F6)

Next Pane转到当前窗口的下一区域(Tab)

Size/Move改变窗口大小/移动窗口(Ctrl-F5)

Close关闭当前窗口(Alt-F3)

User screen查看用户程序的显示(Alt-F5)

3.功能键提示条

菜单中的很多命令都可以使用功能键来简化操作。功能键分为三组:F1~F10功能键,Alt-F1~Alt-F10功能键以及Ctrl 功能键(Ctrl功能键实际

上就是代码区的局部菜单)。CPU窗口下面的提示条中显示了这三组功能键对应的功能。通常情况下提示条中显示的是F1~F10功能键的功能。按

住Alt不放,提示条中将显示Alt-F1~Alt-F10功能键的功能。按住Ctrl不放,提示条中将显示各Ctrl功能键的功能。表B.1列出了各功能键对应的功能。

表B.1

局部菜单

TD的CPU窗口中,每个区域都有一个局部菜单,局部菜单提供了对本区域进行操作的各个命令。在当前区域中按Alt-F10键即可激活本区域的

局部菜单。代码区、数据区、堆栈区和寄存器区的局部菜单见图B.2~图B.5所示。标志区的局部菜单非常简单,故没有再给出其图示。对局部菜

单中各个命令的解释将在下面几节中分别进行说明。

图B.2 代码区的局部菜单

图B.3 数据区的局部菜单图B.4 堆栈区的局部菜单

图B.5 寄存器区的局部菜单

汇编实验指导书

实验一汇编语言程序的上机过程 一、实验目的 掌握汇编语言源程序的编辑、汇编、连接及运行过程,为以后的实验打下基础。 二、实验内容 1、输入下列完整的程序 STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS DATA SEGMENT BUF DB‘HOW ARE YOU!$’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START (本程序的正确运行结果是在屏幕显示“HOW ARE YOU!”) 2、完成课本P193习题5.1。 三、实验步骤 (1)利用EDIT编辑源程序; (2)汇编源程序; (3)连接目标程序文件; (4)运行可执行文件。 四、实验报告要求 写出以上两个实验内容的题目、源码、具体实验步骤和实验结果。 1.在屏幕上打印字符串”How are you?”。 (1)源代码: ;打印字符串"How are you?" STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS DATA SEGMENT BUF DB 'How are you?$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX ;在屏幕上打印字符串 LEA DX, BUF MOV AH, 9H INT 21H MOV AH, 4CH INT 21H CODE ENDS END START (2)具体实验步骤: 编辑→保存→masm→link→运行 (3)结果截图: 2.编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 (1)源代码: (2)具体实验步骤: (3)结果截图: 实验二 DEBUG的使用技术 一、实验目的

汇编语言上机过程

汇编语言上机过程: 一、上机前的软件准备: MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等) 文本编辑器(如:https://www.docsj.com/doc/9819183562.html, , TURBO.EXE , TC.EXE , C.EXE 等) 汇编程序(如:MASM.EXE , ASM.EXE 等) 连接程序(如:LINK.EXE 等) 调试程序(如:DEBUG.EXE 等) 二、汇编程序建立过程: 三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明 PROCEDURE a:建立汇编源程序(即:建立文件名.asm) 这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。 1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename 为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。 2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用C语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。 PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件) 这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程: 在DOS提示符下键入MASM filename回车 (注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM filename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名) 这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。 MASM filename >filen (filen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。

《汇编语言程序设计》实验报告(一)

《汇编语言程序设计》实验报告(一) 姓名学号系别班级 指导教师实验日期 课程名称《汇编语言程序设计》同组实验者 一、实验名称:实验一汇编程序和连接程序的使用 二、实验目的: 1. 熟悉汇编语言的上机环境; 2. 学习EDIT,MASM,LINK程序的使用; 3. 掌握建立、汇编、链接、运行汇编语言程序的过程。 三、实验类型:验证 四、实验材料、工具、或软件 多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。 五、实验要求 1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。 2.完成课堂例题,并用DEBUG运行,观察结果。 六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页) 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下: 1、调用https://www.docsj.com/doc/9819183562.html,程序建立汇编语言源程序.ASM 建立好的源文件以EX_1.ASM为文件名存盘 DATA SEGMENT STRING1 DB 'Visual C++ ' STRING2 DB 'Visual Basic' COUNT EQU $-STRING2 MESS1 DB 'MATCH!’,13,10,’$' MESS2 DB 'NO MATCH!’,13,10,’$' DATA ENDS code segment assume cs:code,ds:data,es:data main proc far start: push ds

《汇编语言》实验报告

《汇编语言》实验报告 实验名称:汇编语言实验报告 实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。 实验时间:2024年1月1日 实验地点:实验室 一、实验背景 汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。本实验通过编写汇编语言程序,加深对汇编语言的理解。 二、实验过程 1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。 2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。 3.程序分析: a.定义要输出的字符串,将字符串存储在数据段中。 b.设置段寄存器,将数据段地址加载到DS寄存器中。 c.设置显示模式和光标位置。

d.将字符串逐个字符输出到屏幕上。 e.关闭显示模式。 4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。 5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。 三、实验结果与分析 经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。通过程序分析和调试过程,加深了对汇编语言的理解和掌握。 四、实验总结 通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。 总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。

汇编语言上机过程

汇编语言程序的上机过程 一、上机环境 要运行调试汇编语言程序,至少需要以下程序文件: ?编辑程序:https://www.docsj.com/doc/9819183562.html,或其他文本编辑工具软件,用于编辑源程序。 ?汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。 ?连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。 ?调试程序:DEBUG.EXE,用于调试可执行程序。 二、上机过程 汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。 1.编辑源程序 用文本编辑软件创建、编辑汇编源程序。常用编辑工具有:https://www.docsj.com/doc/9819183562.html,、记事本、Word等。 无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。 2.汇编 用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。 汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件; 展开宏指令。 汇编过程如下: 在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。 此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。 Object Filename [MYFILE.OBJ]: Source Listing [Nul.LST]: Cross Reference [Nul.CRF]: 依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。此时,需要进行修改,然后再进行汇编。 如此进行,直至汇编无错误,得到目标文件为止。 3.连接 汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。连接过程如下: ?在DOS状态下,输入命令:LINK MYFILE.OBJ(回车),即可完成连接。 ?与汇编过程类似,如果连接过程中出错,那么程序会在屏幕上显示提示信息。 此时,需要对源程序进行查错、修改,然后再进行汇编、连接,直至连接无 错误,得到可执行文件为止。 4.程序运行 在DOS提示符下输入可执行程序的文件名即可运行程序。若程序能够运行但不能得到预期结果,则就需要检查源程序,改错后再汇编、连接、运行。 5.程序调试 在程序运行阶段,有时不容易发现问题,尤其是碰到复杂的程序更是如此,这时就

汇编语言程序设计实验指导

汇编语言程序设计实验指导 【实验提要】以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6. X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。(带*号的为选作内容) 实验一调试工具DEBUG的应用 实验目的 通过实验掌握下列知识: 1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能; 2、DEBUG命令: A,D,E,F,H,R,T,U的使用; 3、BCD码、ASCII码及用十六进制数表示二进制码的方法; 4、寄存器: AX,BX,CX,DX,FLAGS,IP。 内容及步骤 注:本次实验可以参照教材上关于DEBUG的叙述内容进行。 一、DEBUG 命令使用 1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境, 显示提示符 '- '。 2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。 注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。 3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。 4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。 5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再 用D命令观察结果,看键入的十六进制数和ASCII码的对应关系。

计算机组成原理实验1-汇编语言实验

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言上机实验指导

汇编语言上机实验指导 实验一汇编语言基本指令操作练习 一、实验目的: 1、掌握8086/8088基本指令的使用方法和功能。 2、初步了解汇编语言程序设计的基本结构和利用DEBUG调试 程序的方法。 3、进一步熟悉汇编语言的上机过程。 二、上机实验指导: (一)利用DEBUG的A命令输入指令,做如下实验。 1、比较下面指令的区别: ①MOVAX,2000H②MOVBX,[2000H] -D2*******;显示字存储单元DS:2000的内容 3ADC:20005A58ZX -R;显示指令执行前AX,BX的内容 AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000 DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0100NVUPEIPLNZNAPONC 3ADC:0100858CFFF3TESTCX,[SI+F3FF]DS:F3FF=74C0 -A;利用A命令输入汇编指令 3ADC:0100MOVAX,2000 3ADC:0103MOVBX,[2000] 3ADC:0107INT3;此中断为断点中断,使程序执行暂停 3ADC:0108 -G;不指定地址,从当前CS:IP处执行 AX=2000BX=585ACX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000 DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0107NVUPEIPLNZNAPONC 3ADC:0107CCINT3;指令执行后,AX=2000H,BX=585AH 2、以寄存器BX作为地址指针,从BX所指的存储单元开始起,连续存放着 两个无符号数(字操作数),编程求它们的和,并将结果存放在这两个数 之后。 -RBX;显示BX寄存器中的内容(BX=0000h) BX0000 :;回车 -D0*******;显示DS:0000到DS:0005的内容(BX所指的三个 字操作数),如BX不为0000H,自己修改范围。3A6B:0000CD20FF9F009A..... ;三个字操作数依次为20CDH,9FFFH,9A00H -A;输入指令 3A6B:0100MOVAX,[BX] 3A6B:0102INCBX 3A6B:0103INCBX 3A6B:0104ADDAX,[BX] 3A6B:0106INCBX

汇编语言程序设计2

目录 系统认识 (1) 实验一数码转换编程及程序调试 (5) 实验二运算类编程实验 (11) 实验三分支程序、循环程序设计实验 (16) 实验四子程序设计实验 (22) 实验五显示程序实验 (26) 实验六串行通讯应用实验 (27) 附录WMD86 联机软件使用说明 (40)

系统认识 一、实验目的 掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 二、实验设备 PC微机一台,TD-PITE实验装置一套。 三、实验内容 编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。 四、实验步骤 1. 运行Wmd86软件,进入Wmd86集成开发环境。 2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1 3. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。默认文件名为Wmd861。 图2 4. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

图3 程序: SSTACK SEGMENT STACK ;定义堆栈段 DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START: PUSH DS XOR AX, AX MOV DS, AX MOV SI, 3000H ;建立数据起始地址 MOV CX, 16 ;循环次数 AA1: MOV [SI], AL INC SI ;地址自加1 INC AL ;数据自加1 LOOP AA1 AA2: JMP AA2 CODE ENDS END START 5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。 图4

汇编语言程序设计的实验环境及上机步骤

汇编语言程序设计的实验环境及上机步骤 一、实验环境 汇编语言程序设计的实验环境如下: 1.硬件环境 微型计算机(Intel x86系列CPU)一台 2.软件环境 ⏹Windows98/2000/XP操作系统 ⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等) ⏹汇编程序(MASM.EXE或TASM.EXE) ⏹连接程序(LINK.EXE或TLINK.EXE) ⏹调试程序(DEBUG.EXE或TD.EXE) 文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。 二、上机实验步骤 注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。 1.确定源程序的存放目录 建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。如果没有创建过此目录,请用如下方法创建: 通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。 请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。 2.建立ASM源程序 建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。 在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“https://www.docsj.com/doc/9819183562.html, C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。

实验二 汇编语言程序上机过程及调试

实验报告二 课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名 实验日期:2014 年 3 月10 日报告退发(订正、重做) 一、实验目的 学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。 二、实验内容 1、学习使用全屏幕文本编辑软件EDIT。用EDIT输入一段给定的源程序。 2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到 EDIT进行修改。 3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE) 4、在DOS提示符下运行该可执行文件。 [汇编语言程序的编写格式] 汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。段的定义有两种格式,分述如 下: 1,完整的段定义格式: 一个段由段头,段体,段尾组成,形式如下: 段名SEGMENT[定位类型][组合类型][‘类别’] … … 段名ENDS 其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。 2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下: DOSSEG .MODEL 存储类型;“存储类型”可选择为SMALL。 .STACK[大小];堆栈段,“大小”指定堆栈的字节数。 .DATA;数据段。 .CODE[名字];代码段;一般只有一个代码段,名字可缺少 … … 例1:用完整的段定义编写一源程序。 NAME EXAM1;可以省略 DATA SEGMENT;定义数据段,以下是数据段的内容 STR1 DB “HELLO,WELCOME!”,13,10,‘$’ STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’

汇编语言程序设计上机步骤与调试方法

汇编语言程序设计上机步骤与调试方法 在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们 能够帮助程序员更好地编写和调试程序。本文将介绍汇编语言程序设 计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些 知识。 一、上机步骤 1. 准备工作 在开始上机之前,我们需要做一些准备工作。首先,确认计算机已 经连接好必要的硬件设备,例如键盘、显示器等。其次,确保操作系 统和开发环境已经正确安装并能够正常运行。最后,根据需要准备好 所需的汇编语言文档和程序样例。 2. 创建新项目 在开始编写汇编语言程序之前,我们需要创建一个新的项目。在项 目中,我们可以组织和管理相关的文件和代码。通常,我们会选择一 个合适的集成开发环境(IDE)来创建和管理项目。 3. 编写程序 在创建项目之后,我们可以开始编写汇编语言程序。首先,我们需 要了解目标机器的指令集和寄存器,以便正确地编写程序。然后,根 据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。

4. 调试程序 编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性 和稳定性。调试是一个迭代过程,通常包括以下步骤: - 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。 - 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行 过程,并检查各寄存器和内存的值。 - 监视变量:在调试过程中,我们可以监视程序中的变量值,以验 证其正确性。 - 查看输出:观察程序的输出结果,与预期结果进行比较,以确定 程序是否按照预期执行。 - 修复错误:如果发现程序中存在错误,我们需要对程序进行修改 和调整,直到问题解决为止。 5. 运行程序 在完成程序的调试之后,我们可以运行程序并观察其运行效果。在 运行过程中,我们可以测试程序的各种功能,以确保其正常工作。 二、调试方法 1. 打印输出 在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。在程序中插入打印语句,将一些变量的值打印到控制台或文件中,

《汇编语言上机环境及基本步骤》实验报告

汇编语言上机环境及基本步骤 一、实验目的: 1.掌握编写汇编源程序的基本格式。 2.熟悉汇编语言上机环境。 3.掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。 4.掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。 二、实验内容: 在屏幕上显示并打印字符串“This is a sample program.” 三、实验仪器 微机一台 四、实验步骤: 1.在某盘如E盘,以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太 长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE等复制到该目录 下,编辑的源文件也保存到该目录下。 从WINDOWS进入DOS环境:C:\> 2.用EDIT编辑SW1.ASM源文件。 (1). 从当前目录进入自己的目录下, C:\>E: 回车 E:\> CD zhangsan ↙回车 键入EDIT并回车: E:\ zhangsan>EDIT 根据菜单提示进行各种操作。 (2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。 说明:也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。 (3).编辑新文件: a、在EDIT编辑器中输入汇编源程序。 b、检查输入有无错误。 c、打开文件菜单FILE→选择另存为SA VE AS┅→输入文件名为:SW1.ASM→保 存。 注意:保存到你自己的文件夹中 d、若需要修改此文件,用FILE菜单→选择打开OPEN→输入文件名SW1.ASM,即 可修改。修改后注意重新再存盘。 (4).编辑汇编源程序 a、在EDIT(或记事本)中输入源程序。 b、检查。 c、存盘。可保存为SW1.ASM

汇编语言上机过程以及调试

一、预习内容 1. 工具软件MASM、LINK的使用 2. 常用DEBUG命令的使用: G,D,R,T,U,Q 3. 完整程序设计方法的格式。 二、目的要求 1. 掌握常用工具软件MASM、LINK的使用 2. 掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序 3. 掌握完整程序设计方法的格式,能正确书写数据段,代码段等。 三、实验内容 比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。 DSEG SEGMENT string1 db 'Move the cursor backward.' string2 db 'Move the cursor backward.' mess1 db 'Match.',13,10,'$' mess2 db 'No match.',13,10,'$'

DSEG ENDS CSEG SEGMENT assume cs:CSEG, ds:DSEG, es:DSEG, MAIN PROC FAR start: mov ax, dseg mov ds, ax mov es, ax lea si ,string1 ① cld ② repz cmpsb jz match lea dx,mess2 jmp short disp match: lea dx,mess1 disp: mov ah,09h

int 21h mov ax, 4c00h int 21h MAIN ENDP CSEG ENDS end start 实验步骤: 1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在c:\masm615下,注意保存时将文件扩展名改为.asm(如lab1.asm)。 2)打开桌面的“命令提示符”程序进入dos命令操作,先用cd masm615 命令改变路经,接着用”masm + 文件名”(如 masm lab1,这里文件名可以不带扩展名) 对源文件进行汇编,产生.obj文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。 3)用”link + 文件名” (如 link lab1) 将.obj文件连接成可执行的.exe文件(lab1.exe)。

实验一 熟悉汇编语言开发环境及顺序程序设计

实验一熟悉汇编语言开发环境及顺序程序设计实验一熟悉汇编语言开发环境及顺序程序设计 实验一熟悉汇编语言开发环境及顺序程序设计 一、实验目的 1.学习汇编语言的开发环境和过程。2.掌握顺序程序的设计方法。 二、实验设备 1.pc机一台; 2.tdn86/88教学实验系统一台。 三、实验内容及步骤 1.系统重新认识实验 从3500h内存单元开始建立0-15共16个数据。实验参考程序如下: stack1segmentstack;8088宏汇编程序dw64dup(?);定义堆栈段stack1ends codesegment;定义代码段assumecs:code start:movdi,3500h;程序已经开始设立数据区首址movcx,0010h;字节数送进cx中 movax,0000h a1:mov[di],al;载入一字节 incdi;修改地址指针incax loopa1a2:jmpa2 codeends;代码段结束endstart实验步骤 (1)启动wmd86联机软件 wmd86联机软件的启动方式有两种,可以在【开始】/【程序】/【tangdu】菜单中单击“wmd86”的程序组启动,也可以直接双击桌面上的“wmd86”快捷键启动该程序组。启动应用程序进入主界面窗口后,应显示“串口通讯成功”小窗口,若显示“串口通讯不成功”,说明上位机和下位机的连接不正常或下位机死机,请确认下位机电源已经打开,串口线两端接触良好。 (2)输出源程序,检查有误后计算机上安装。

(3)对源程序进行编译、链接和加载,可以使用编译菜单项,也可以使用编译工具栏。(4)运行程序,观察结果。 已连续运转程序,在输出区中的调试区用debug命令观测运转结果,即为键入d0000:3500l,可以查阅3500h-350fh单元中的内容与否为0-f共16个数。特别注意,因本程序 的结尾为死循环,应当在程序运行后暂停运转再观测结果。 (5)熟悉系统提供的单步运行、断点运行等功能,可以使用调试菜单项,也可以使 用调试工具栏。2.二进制双精度加法运算计算x+y=z,实验程序如下:datasegment ;程序完结 ;修改数据;未填完转移 xlxhylyhzl dw?;请在此处给x低位赋值dw?;请在此处给x高位赋值dw?;请在此处给y低位赋 值dw?;请在此处给y高位赋值dw? zhdw? dataendscodesegment assumecs:code,ds:data start:movax,data movds,ax movax,xl;x低位送ax addax,yl;x低位提y低位movzl,ax;存有低位和movax,xh;x高位送来axadcax,yh;x高位提y高位movzh,axmovah,4ch int21hcodeends endstart 本实验程序是双精度(2个16位,即32位)运算,利用累加器ax,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有 进位,因而高位字相加语句需用adc指令,则低位相加有进位时,cf=1,高位字相加时, 同时加上cf中的1。 实验步骤 (1)输入源程序,进行编译、链接和加载。(2)运行程序并检查结果。

汇编语言实验指导书 (3)

实验报告 实验课程:汇编语言 学生姓名:李斯超 学号:6100409010 专业班级:电三091班 2010年12月20日

目录 实验1 利用DEBUG调试汇编语言程序段实验2 初级程序的编写与调试实验(一)实验3 初级程序的编写与调试实验(二)实验4 汇编语言程序上机过程 实验5 分支程序实验 实验6 循环程序实验 实验7 子程序实验

实验1 利用DEBUG调试汇编语言程序段 一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 2)E命令(修改指定内存) 例1:-E100 41 42 43 44 48 47 46 45 -D 100,L08 结果:08F1:0100 41 42 43 44 48 47 46 45 例2:-E 100: 08F1:0100 76 42 :42是操作员键入 此命令是将原100号内存内容76修改为42,用D命令可察看。 3)R命令(显示当前寄存器的内容) 4)T命令(设置陷井,单步执行) 5)A命令(将指令直接汇编成机器码输入到内存中。) 6)G命令等的使用(执行A命中输入的汇编指令) 3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。 四.实验环境 PC微机 DOS操作系统或Windows 操作系统 MASM.EXE,LINK.EXE,https://www.docsj.com/doc/9819183562.html,或宏汇编集成环境 五.实验步骤 1.在DOS提示符下,进入DEBUG程序; 在运行中输入cmd命令调出DOS窗口,在其中输入debug命令进入程序。 2.详细记录每一步所用的命令,以及查看结果的方法和具体结果。 (1)在debug中输入D查看当前数据数据段的断地址:偏移地址中的内容。如输入-d100,接着操作输入e命令,e命令可以修改指定的内存中的数据,如输入-e100

NO.1:汇编语言的上机过程(基于MASM_6.15)

1) 了解并熟悉汇编源程序的编写环境,了解汇编源程序的汇编链接运行 2) 写出一个简单的汇编程序并运行 3) 编写程序,从键盘接收两个十进制数,将它们的和存入变量sum (上机第一步)EDIT,是编辑程序,像一个文本编辑器,用来编辑汇编语言源程序,编辑好的程序扩展名为*.asm; (第二步)MASM,是汇编程序,用来把*.asm程序编译成二进制代码,该二进制代码文件称为目标程序,扩展名为*.obj; (第三步)LINK,是链接程序,用来把*.obj文件变成可执行目标代码,即可执行文件*.exe; 在第二步和第三步中,可以发现程序语法上的错误; (第四步)DEBUG是调试工具,用于发现程序逻辑上的错误。 汇编语言的上机过程(基于MASM 6.15) 汇编语言的一般上机过程:1.建立ASM文件 2.产生OBJ文件 3.产生EXE 文件4.程序的调试和执行 MASM 6.15包含文件: *************************************************** M ASM.EXE 汇编器 E https://www.docsj.com/doc/9819183562.html, DOS下的文本编辑器 E DIT.HLP EDIT帮助文件 L IB.EXE 过程库管理程序 L INK.EXE 连接器

D OSXNT.EXE m l.err 汇编的错误信息文件 m l.exe(masm and link)汇编连接器 *************************************************** D EBUG.EX E 调试器(一般是系统自带) *************************************************** 对于MASM 6.10以下的版本,汇编器和连接器是分开的,分别是MASM.EXE 和LINK.EXE,使用时要先用MASM.EXE生成.OBJ文件,再使用LINK.EXE生成.EXE 文件。ml.exe把MASM.EXE和LINK.EXE整合到一起,可以一步生成.EXE 文件。 ml命令有许多参数,可以使用ml /?命令查看。下面介绍几个低级实用的参数: /AT Enable tiny model (.COM file) /c Assemble without linking 只汇编不连接 /Fe Name executable 指定.EXE文件名 /Fl[file] Generate listing 生成列表文件(.LST) /Fm[file] Generate map 生成映像文件(.MAP) /Fo Name object file 指定.OBJ文件名 /I Add include path 指定include文件的路径名 两种开发环境: 1.32位Windows控制台(CMD.EXE)

单片机实验报告KeilC的使用与汇编语言上机操作

单片机实验报告KeilC的使用与汇编 语言上机操作 单片机实验报告:Keil C的使用与汇编语言上机操作 一、实验目的 1.掌握Keil C的使用方法,了解其集成开发环境下的单片机编程流程。 2.掌握汇编语言的基本语法和指令,通过上机操作熟悉其应用。 3.通过实际操作,增强动手能力和解决问题的能力。 二、实验设备 1.单片机开发板 2.Keil C软件 3.电脑及编程器 三、实验原理及步骤 1.Keil C使用介绍 Keil C是一款广泛使用的单片机集成开发环境,它提供了包括编译器、调试器、仿真器等在内的全套开发工具。使用Keil C可以方便地进行代码编写、编译、调试和模拟,适用于多种单片机开发。 2.汇编语言基础 汇编语言是一种直接与硬件相关的编程语言,它通过特定的指令集直接控制硬件进行操作。汇编语言具有高效、直接的特点,但编写和理解相对困难。本实验主要学习并熟悉汇编语言的基本语法和指令。 3.实验步骤 (1) 在Keil C中创建新项目,选择合适的单片机型号。 (2) 创建源文件,编写汇编程序。 (3) 对源文件进行编译,生成目标文件。

(4) 将目标文件下载到单片机开发板进行调试和运行。 四、实验内容及分析 1.在Keil C中创建新项目并选择单片机型号。在创建项目时,需要选择正确 的单片机型号,这将直接影响到程序的编写和运行。根据实际需要,我们选择了AT89C51作为实验用的单片机。 2.创建源文件并编写汇编程序。在Keil C中,可以方便地创建新的源文件, 并在其中编写汇编程序。例如,下面是一个简单的汇编程序,用于点亮开发板上的LED灯: MOV P1, #1 // 将1赋值给P1端口 此程序将使P1端口的所有引脚输出高电平,从而点亮LED灯。 3.对源文件进行编译并生成目标文件。在Keil C中,可以通过简单的点击完 成编译操作。编译成功后,将生成一个目标文件(如*.obj文件)。 4.将目标文件下载到单片机开发板进行调试和运行。在Keil C中,可以通过 仿真功能模拟程序的运行,也可以通过调试功能查看程序运行过程中的细节信息。如果程序运行无误,将在单片机开发板上看到预期的结果。 五、实验总结与体会 通过本次实验,我们深入了解了Keil C的使用方法和单片机编程的基本流程。同时,通过实际操作,我们熟悉了汇编语言的应用和编程技巧。虽然汇编语言相对于高级语言更为复杂,但在特定场合下(如对性能要求极高或与硬件直接交互时),其高效性和直接性具有不可替代的优势。因此,掌握汇编语言对于单片机开发具有重要的意义。在未来的学习和实践中,我们将进一步运用和发展所学的知识和技能,为科学研究和工程实践做出贡献。

东南大学微机实验二_汇编语言程序设计

3.2 实验二汇编语言程序设计 3.2.1 实验目的 1)进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念; 2)熟练掌握动态调试程序TD/DEBUG的常用命令或窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器等环境; 3)熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOS/BIOS功能调用的基本方法。 3.2.2 实验环境 实验环境同实验一。 3.2.3 基本实验内容 1)基本实验内容和要求 (1)编写程序实现如下功能; ①从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕上显示出来。 ②从键盘输入在0-65535之间的十进制数,将其转换为16进制数并在屏幕中显示出来,要求判断输入字符串是否为在0-65535之间的十进制数。 (2)复习功各种操作,并用DEBUG调试程序,学会基本命令操作,并通过单步、设置断点等方法观察中间结果,完成正常运行。 命令行方式下直接键入debug myfile.exe回车(myfile为待调试可执行程序),进入调试方式(显示—),键入H回车显示全部命令、格式和功能。常用命令有;U(反汇编)、A(汇编输入指令程序)、R(寄存器显示/修改)、I(端口输入)、0(端口输出)、D(显示数据)、E(修改数据)。 除资源修改管理功能外,重点应用T(单步)、Tn(执行n步)、P(过程/指令)、G××××(从当前器:IP执行到断点××××)或G=××××l ××××2(从××××l执行到××××2断点)调试实驴程序。 2)编程提示 (1)小写字母的ASCII码比其所对应的大写字母的ASCII码值大20H,如字符“a”的ASCII 码为61H,而字符“A”的ASCII码为41H,因此字符变换时将小写字母的ASCII码减去20H即为大写字母的ASCII码。同样将数字转换为ASCII码的方法为:将其值加上30H。 (2)键盘输入字符串:采用DOS系统功能调用(1NT 21H),功能号为AH=OAH,DS:DX为存放键入字符串的缓冲区首地址,其中第一个字节需要初始化,为用户定义的缓冲区长度。当完成字符串输入并存储后,第二个字节为键入的字符串的个数,从第三个字节开始存放键入的字符串,并在最后有一个字节为0DH作为字符串的结束。 (3)显示字符:采用DOS系统功能调用(1NT 21H),功能号为AH=02H,DL中存放要显示字符的ASCII码;显示字符串:采用DOS系统功能调用+(1NT 21H),功能号为AH=09H,DS:DX存放要显示字符串的首地址,串尾字符为“$”但不显示出来。 (4)将10进制数转换为16进制数可采用按位取值再相加的方法,即(个位*1)+(十位*10)+(百位*100)+···,可用数值位数来判断位值。 (5)输入的十进制数,要求介于0~65535,因此缓冲区长度可定为6字节(第二字节要存放实际键入的字符数),数据段定义时可采用如下方式:input db 6,7 dup(0)。 (6)判断输入的是否为介于0~65535之间的十进制数可分为两步:①按位比较,如果某个字符不是0~9,则不符合条件;②将数值计算累加后若溢出,表示输入数值大于FFFFH,则也不符合要求。 3)程序流程图

相关文档
相关文档 最新文档