汇编实验报告.docx

上传人:b****5 文档编号:2787688 上传时间:2022-11-15 格式:DOCX 页数:11 大小:114.46KB
下载 相关 举报
汇编实验报告.docx_第1页
第1页 / 共11页
汇编实验报告.docx_第2页
第2页 / 共11页
汇编实验报告.docx_第3页
第3页 / 共11页
汇编实验报告.docx_第4页
第4页 / 共11页
汇编实验报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

汇编实验报告.docx

《汇编实验报告.docx》由会员分享,可在线阅读,更多相关《汇编实验报告.docx(11页珍藏版)》请在冰豆网上搜索。

汇编实验报告.docx

汇编实验报告

实验一汇编程序

一、实验目的

1.掌握DEBUG常用命令的使用方法

2.熟悉汇编源程序编辑、汇编、连接和调试过程

3.练习汇编源程序编写

二、实验内容及步骤

(一)学习DEBUG常用命令的使用方法

1.进入DEBUG;

2.用DEBUG的R命令查看、改变CPU寄存器的内容;

a)用R命令查看各寄存器的内容并纪录;

b)用R命令修改寄存器BX、SI、BP的值。

3.用DEBUG的D命令查看内存中的内容(以下内容分别使用不同的D命令);

a)用D命令查看从1000:

0开始的128个内存单元的内容并纪录;

b)用D命令查看从2000:

8开始的128个内存单元的内容并纪录;

c)用D命令查看从3000:

0开始的10个内存单元的内容并纪录;

4.用DEBUG的E命令改写内存中的内容;

用E命令将内存1000:

0—1000:

9单元中的内容改写为0、1、2、3、4、5、6、7、8、9,并进行验证。

5.用DEBUG的U命令将内存中的机器指令翻译成汇编指令;

用E命令从1000:

0单元开始写入如下机器码,然后用U命令将内存中的机器指令翻译成汇编指令,并分析实验结果各部分的含义。

机器码对应的汇编指令

b80100movax,0001

b90200movcx,0002

01c8addax,cx

6.用DEBUG的T命令执行机器指令;

用T命令单步执行上题程序段的每条指令并纪录结果。

7.用DEBUG的A命令以汇编指令的格式在内存中写入机器指令

用A命令将下面的程序段写入内存,用U命令翻译成机器指令,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。

MOVAX,4E20H

ADDAX,1416H

MOVBX,2000H

ADDAX,BX

MOVBX,AX

ADDAX,BX

MOVAX,001AH

MOVBX,0026H

ADDAL,BL

ADDAH,BL

ADDBH,AL

MOVAH,0

ADDAL,BL

ADDAL,9CH

(二)掌握汇编程序编辑、汇编、连接及调试的方法

设首地址为BUFFER的内存缓冲区中有20H个字节数据,试将数据区中的正数(包括0)存放至起始地址为PLUS的缓冲区,负数存入起始地址为MINUS的缓冲区。

初始源程序如下,请用DEBUG软件调试该程序,找出其中的错误并加以修改。

;ex1.asm

Datasegment

Bufferdbf5h,46h,78h,4fh,0bch,0dah,0abh,02h//f5h应该改为0f5h

db12h,56h,0d5h,0ach,34h,89h,45h,0c3h

db00,14h,45h,58h,64h,0d4h,0c3h,0a5h

db0b3h,0ffh,0d9h,64h,0d3h,90h,80h,7fh

countequ$-buffer

plusdbcountdup(?

minusdbcountdup(?

dataends

stacksegmentstack‘stack’//应该有stack结束

db100dup(?

codesegmentpara‘code’

assumecs:

code,ss:

stack,ds:

data,es:

data

startprocfar//不能用start作为子程序名

pushds

xorax,ax

pushax

movax,data//应该放在主程序开始start后边

movds,ax

moves,ax

movsi,offsetbuffer

leadi,plus

leabx,minus

movcl,count

l1:

losdb//拼写错误,应该是lodsb

testal,80

jnzl2

stosb

l2:

xchgbx,di

stosb

xchgbx,di

again:

loopl1

ret//在ret前应该有pop操作

startendp//应该把start改为另外定义的子程序名

codeends

endstart

调试通过后的程序:

Datasegment

Bufferdb0f5h,46h,78h,4fh,0bch,0dah,0abh,02h

db12h,56h,0d5h,0ach,34h,89h,45h,0c3h

db00,14h,45h,58h,64h,0d4h,0c3h,0a5h

db0b3h,0ffh,0d9h,64h,0d3h,90h,80h,7fh

countequ$-buffer

plusdbcountdup(?

minusdbcountdup(?

dataends

stacksegmentstack'stack'

db100dup(?

stackends

codesegmentpara'code'

assumecs:

code,ss:

stack,ds:

data,es:

data

start:

movax,data

movds,ax

calldone

movax,4c00h

int21h

doneprocfar

pushds

xorax,ax

pushax

moves,ax

movsi,offsetbuffer

leadi,plus

leabx,minus

movcl,count

l1:

lodsb

testal,80

jnzl2

stosb

l2:

xchgbx,di

stosb

xchgbx,di

again:

loopl1

popax

popds

ret

doneendp

codeends

endstart

(三)编写汇编源程序

将两个多位十进制数相加(39174+65082),并在屏幕上显示加数、被加数以及和。

已知被加数和加数均以ASCII码形式存放在DATA1和DATA2为首的单元中(“低端方式存储”),结果送回DATA1中。

提示:

被加数和加数以ASCII码形式存放在内存中,在相加前必须转换为BCD码,用未组合BCD码最适宜。

未组合BCD码相加要用到AAA加法调整指令。

.modelsmall

.stack

.data

data1db'3','9','1','7','6'

data2db'6','5','0','8','2'

.code

start:

movax,@data

movds,ax

movdi,offsetdata1

movsi,offsetdata2

movcx,5

again:

;显示第一个加数

movdl,[di]

movah,2h

int21h

incdi

loopagain

movcx,5

calldecrf;调用回车换行子函数

again1:

;显示第二个加数

movdl,[si]

movah,2h

int21h

incsi

loopagain1

calldecrf

movcx,5

xorax,ax

movdi,offsetdata1+4;从低位开始

movsi,offsetdata2+4

again2:

sub[di],30h;转换为由十六进制表示的数字串形式

sub[si],30h

moval,[di]

addal,[si]

addal,ah

movah,0

aaa;aaa调整指令

addal,30h

mov[di],al

decdi

decsi

loopagain2

cmpah,1

jnzdone;若有进位则在前面显示1

movdl,'1'

movah,02h

int21h

done:

movdi,offsetdata1

movcx,5

again3:

movdl,[di]

movah,02h

int21h

incdi

loopagain3

movax,4c00h

int21h

decrfproc;回车换行子函数

pushax

pushdx

movah,2

movdl,0dh

int21h

movah,2

movdl,0ah

int21h

popdx

popax

ret

decrfendp

endstart

三、思考题

1.汇编程序经汇编和链接后产生的是哪一种可执行程序?

这种文件中IP的一般初始值是多少?

答:

用masm汇编程序对源程序进行汇编,形成目标文件,再用link链接程序对目标程序进行链接形成可执行文件。

IP的一般初始值为0000

1.调试过程中遇到什么问题?

如何解决?

答:

①对基本汇编指令不是很熟悉,通过查找资料解决;

②感觉算法不是很好,但是没有想出来更好的算法;

③在调试过程中有很多错误,通过debug调试出结果;

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

当前位置:首页 > PPT模板 > 可爱清新

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

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