汇编实验报告.docx

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

汇编实验报告.docx

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

汇编实验报告.docx

汇编实验报告

 

 

合肥工业大学

计算机与信息学院

实验报告

 

课程:

汇编语言程序设计

专业班级:

学号:

姓名:

实验一Debug程序的使用

一.实验目的

1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容

1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:

0200H和DS:

0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:

0200H单元和DS:

0204H单元中的数据相加,并将运算结果存放在DS:

0208H单元中。

要求:

本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序

1、启动DOS操作系统

2、运行DEBUG.COM程序(若当前盘为C)

C:

>DEBUG↙

–;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令)

3、用“A”命令编辑和汇编源程序

–A↙

186E:

0100MOVAX,[0200]↙

186E:

0103MOVBX,[0202]↙

186E:

0107ADDAX,[0204]↙

186E:

010BADCBX,[0206]↙

186E:

010FMOV[0208],AX↙

186E:

0112MOV[020A],BX↙

186E:

0116↙

4、用“U”命令反汇编验证源程序

–UCS:

0100↙

186E:

0100A10002MOVAX,[0200]

186E:

01038B1E0202MOVBX,[0202]

186E:

010703060402ADDAX,[0204]

186E:

010B131E0602ADCBX,[0206]

186E:

010FA30802MOV[0208],AX

186E:

0112891E0A02MOV[020A],BX

186E:

0116

注意:

●检查源程序是否有错误,若有则返回到第3步用“A地址”命令进行修改,直到程序无错误。

●DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。

●在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。

●在DEBUG下,大小写不敏感。

5、程序未执行前,用“R”命令观察,相关寄存器的内容。

–R↙

如:

(AX)=0000H,(BX)=0000H,(SI)=0000H,

(DI)=0000H,(CS)=0B32H,(IP)=0100H。

6、在程序未执行前,用“D”命令观察DS:

0200H,DS:

0204H、DS:

0208H单元的内容

–D20020B↙

7、用“G”命令运行源程序

–G=1100116↙

8、再用“D”命令观察DS:

0200H~DS:

020BH字节单元中的内容

–D20020B↙

9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。

注意:

●D命令显示内存数据,注意观察多字节数据在内存中的存放方式。

●指令执行的时候,IP寄存器随着变化,注意观察。

1、程序运行结果:

(AX)=00ABH,(BX)=00ABH

DS:

0208H四字节单元的内容:

00AB00ABH

 

2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。

(参考下列程序流程图)

 

 

3、附加题目:

1.从DS:

0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:

540,1,-1,1080,0,试求w=(v-(x*y+z-540))/x

2.完成BX中1的个数的统计。

3.用串操作指令将DS:

0000开始20个字节初始化为:

0CCH。

并将这20个字节的内容复制到其后的20个字节里。

cld

四.实验体会

通过这次试验,对于debug环境有了一个基本的了解,同时通过对指令的使用而对计算机的数据传送、算术运算、逻辑和移位操作、串操作、控制转移和循环等指令有了更深的理解。

串操作指令是对一个一个字节进行操作的。

实验二汇编语言程序设计(顺序、循环)

一.实验目的

1、掌握顺序和循环程序结构和设计方法;

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

二.实验内容

1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。

试编写汇编语言程序完成以下功能:

①计算表达式值(V–(X*Y+Z-720))/X;

②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

dsegsegment

xdw2

ydw360

zdw0

vdw5

sum1dw?

sum2dw?

dsegends

csegsegment

assumecs:

cseg,ds:

dseg

start:

movax,dseg

movds,ax

movax,x

movbx,y

mulbx

movbx,z

addax,bx

subax,2d0h

movbx,v

subbx,ax

movax,bx

cbw

movbx,x

divbx

movsum1,ax

movsum2,dx

movah,4ch

int21h

csegends

endstart

2、求一个班50名学生成绩的平均值(附加题:

最大值和最小值,并将结果显示出来)

dsegsegment

scoredb10dup(80,70,60,90,90)

avgdb?

maxdb0dh,0ah,?

mindb0dh,0ah,?

dsegends

csegsegment

assumecs:

cseg,ds:

dseg

start:

movax,dseg

movds,ax

movcx,50

movax,0

movbh,0

movbl,100

movsi,0

l:

addal,score[si]

adcah,0

incsi

loopl

movdx,si

divdl

movavg,al

movcx,50

movsi,0

l1:

cmpscore[si],bh

jbes1

movbh,score[si]

s1:

incsi

loopl1

movcx,50

movsi,0

l2:

cmpscore[si],bl

jas2

movbl,score[si]

s2:

incsi

loopl2

moval,bl

movah,0

movcl,10

divcl

cmpal,0

jzgw1

cmpal,10

jzmf1

movch,ah

addal,30h

movdl,al

movah,2

int21h

addch,30h

movdl,ch

movah,2

int21h

jmpdone1

gw1:

movdl,ah

adddl,30h

movah,2

int21h

jmpdone1

mf1:

movdl,31h

movah,2

int21h

movdl,30h

movah,2

int21h

movdl,30h

movah,2

int21h

done1:

movdl,0dh

movah,2

int21h

movdl,0ah

movah,2

int21h

moval,bh

movah,0

movcl,10

divcl

cmpal,0

jzgw

cmpal,10

jzmf

movch,ah

addal,30h

movdl,al

movah,2

int21h

addch,30h

movdl,ch

movah,2

int21h

jmpdone

gw:

movdl,ah

adddl,30h

movah,2

int21h

jmpdone

mf:

movdl,31h

movah,2

int21h

movdl,30h

movah,2

int21h

movdl,30h

movah,2

int21h

done:

movah,4ch

int21h

csegends

endstart

 

3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:

查找中间是否有‘asm’子串。

如果有,输出‘Yes’;否则,输出‘No’)。

datasegment

s1db51,?

51dup('$')

s3db0ah,0dh,'Yes$'

s4db0ah,0dh,'No$'

dataends

dsegsegment

s2db'asm'

dsegends

csegsegment

assumecs:

cseg,ds:

data,es:

dseg

start:

movax,data

movds,ax

movax,dseg

moves,ax

leadx,s1

movah,0ah

int21h

movdl,0dh

movah,2

int21h

movdl,0ah

movah,2

int21h

leadx,s1+2

movah,9

int21h

movcl,s1+1

cmpcl,3

jbnotfound

leasi,s1

leadi,s2

movdx,si

movbx,di

movah,48

cld

again:

movcx,3

repzcmpsb

jzfound

adddx,1

movsi,dx

movdi,bx

decah

jnzagain

jmpnotfound

jmpover

found:

leadx,s3

movah,9

int21h

jmpover

notfound:

leadx,s4

movah,9

int21h

over:

movah,4ch

int21h

csegends

endstart

三.实验体会

通这次试验,熟悉了MASM汇编环境和汇编程序设计的格式,熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

同时对顺序和循环程序设计更加熟练,并在编程过程中熟悉了算术运算、位操作和串操作等指令。

算术运算中,对于不同类型数进行运算时,要进行扩展,还有不要忽视进位;对于循环和控制转移指令,如果有多个循环或转移指令,则前一个循环或转移结束后,一定到无条件转移到结尾处

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

当前位置:首页 > 医药卫生 > 中医中药

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

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