实验二初级程序的编写与调试实验Word文档格式.docx

上传人:b****6 文档编号:16216061 上传时间:2022-11-21 格式:DOCX 页数:17 大小:660.67KB
下载 相关 举报
实验二初级程序的编写与调试实验Word文档格式.docx_第1页
第1页 / 共17页
实验二初级程序的编写与调试实验Word文档格式.docx_第2页
第2页 / 共17页
实验二初级程序的编写与调试实验Word文档格式.docx_第3页
第3页 / 共17页
实验二初级程序的编写与调试实验Word文档格式.docx_第4页
第4页 / 共17页
实验二初级程序的编写与调试实验Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验二初级程序的编写与调试实验Word文档格式.docx

《实验二初级程序的编写与调试实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验二初级程序的编写与调试实验Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

实验二初级程序的编写与调试实验Word文档格式.docx

课程

名称

汇编语言程序设计

实验项目

名称

实验二:

初级程序的编写与调试实验

指导教师

教师评语

教师签名:

2014年月日

一【实验目的】

1.进一步熟悉DEBUG命令;

2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;

3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;

4.掌握简单的汇编语言程序编写与调试。

二【实验环境】

PC微机;

DOS操作系统或Windows操作系统;

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。

三【实验要求】

1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;

2.阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP的内容;

3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬家程序段。

四【预备知识】Debug的使用

(1)什么是Debug?

Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。

使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

(2)我们用到的Debug功能

●用Debug的R命令查看、改变CPU寄存器的内容;

●用Debug的D命令查看内存中的内容;

●用Debug的E命令改写内存中的内容;

●用Debug的U命令将内存中的机器指令翻译成汇编指令;

●用Debug的T命令执行一条机器指令;

●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。

五【实验内容】

1.内存操作数及各种寻址方式使用;

2.求累加和程序;

3.多字节加法程序;

4.数据串搬家程序;

5.段寄存器概念及字符串传送指令练习。

六【实验步骤】

1.内存操作数及各种寻址方式使用

MOVAX,1234

MOV[1000],AX

MOVBX,1002

MOVBYTEPTR[BX],20

MOVDL,39

INCBX

MOV[BX],DL

DECDL

MOVSI,3

MOV[BX+SI],DL

MOV[BX+SI+1],DL

MOVWORDPTR[BX+SI+2],2846

步骤:

(1)用A命令键入上述程序,并用T命令逐条运行。

(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

立即选址方式:

直接寻址方式:

基址变址寻址方式:

2.求累加和程序:

程序:

MOVBX,1000

MOVCX,10

SUBAX,AX

LOP:

ADDAL,[BX]

ADCAH,0

J:

LOOPLOP

INT3

(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;

(2)用命令NAA将此程序命名为文件AA(文件名可任取);

(3)用R命令将BX:

CX改为程序长度值(即最后一条指令后面的地址减去开始地址;

(4)用命令W100将此程序存到AA命名的磁盘文件中;

(5)用命令Q退出DEBUG;

(6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序;

(7)用E命令在内存地址1000H处键入16个数字;

(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;

如:

G=0100010D

【说明:

G就是连续执行内存代码,可以在G后面指定内存地址如G=0000:

0100;

地址可以是偏移地址,也可以是逻辑地址。

如不指定地址,G就会从指令指针ip指的内存处开始执行;

G命令还可以指定执行断点,如,G=0000:

01000000:

0200就是代码从100的内存地址执行到200的内存地址然后断住。

(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;

(10)重复G、J与T,再检查AX是否正确;

(11)用G命令使程序运行到结束,检查AX值是否正确。

G=100是指从偏移量:

0100开始执行,直到程序结束为止。

3.多字节加法程序

MOVDI,1000

MOVCX,8

MOVSI,2000

CLC

MOVAL,[SI]

ADC[DI],AL

INCSI

INCDI

LOOPLOP

INT20

(1)用命令键入此程序。

(2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

4.数据串搬家程序

(1)用A命令键入下列程序:

MOVSI,1000

MOVDI,1500

MOVCX,0FH

MOVAL,[SI]

MOV[DI],AL

(2)用A命令DB伪指令在1000H键入下列字符串:

‘IBM_PCCOMPUTER'

(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。

5.段寄存器概念及字符串传送指令练习

(1)用A命令键入下列程序:

MOVSI,0

MOVDI,0

MOVAX,1000

MOVDS,AX

MOVAX,1500

MOVES,AX

MOVCX,0F

CLD

REPMOVSB

(2)用A命令DB伪指令在1000:

0000处键入字符串'

IBM_PCCOMPUTER'

,并用D命检查

(3)用D命令检查0F00:

1000处内容,看是否一样。

为什么?

原因:

因为1000:

0000和0F00:

0000是同一个地址。

(4)用G命令运行此程序,检查目的地址1500:

0000处内容。

并记下DS与ES值。

此时的DS和ES的值分别为:

DS:

1000ES:

1500

(5)修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?

)仍和原来一样。

6.自编程序

用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并做记录。

4字节减法程序源代码

1397:

0100MOVSI,1000

0103MOVCX,4

0106MOVDI,2000

0109CLC

010AMOVAL,[SI]

010CSBB[DI],AL

010EINCSI

010FINCDI

0110LOOP010A

0112INT20

0114

调试和运行

结果运行正确

七【实验过程原始记录(数据、图表、计算等)】

如果有则写。

八【实验结果及分析】

九【思考题】

1.MOVBYTEPTR[BX],20

MOVWORDPTR[BX+SI+2],2846

上述指令中BYTEPTR及WORDPTR伪操作不加行不行?

试一试。

2.用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?

),是否正确?

答:

正确。

3.将多字节加法程序中的INT20H指令改为INT3,有何区别?

若这条指令不加,行不行?

改为INT3后程序可以运行,但无法正常结束。

不加指令,结果与上面一样:

4.数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?

修改程序以做到这一点。

不能。

修改代码如下:

MOV 

SI,1000 

DI,1500 

CX,0FH 

AL,[SI] 

[DI],AL 

INC 

SI 

DI 

LOOP 

LOP 

SI,1500 

1002 

LOP1:

MOV 

LOP1 

INT 

20

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

当前位置:首页 > 小学教育 > 语文

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

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