汇编实验报告Word文件下载.docx

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

汇编实验报告Word文件下载.docx

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

汇编实验报告Word文件下载.docx

0100↙

0100A10002MOVAX,[0200]

01038B1E0202MOVBX,[0202]

010703060402ADDAX,[0204]

010B131E0602ADCBX,[0206]

010FA30802MOV[0208],AX

0112891E0A02MOV[020A],BX

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名学生成绩的平均值(附加题:

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

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

avgdb?

maxdb0dh,0ah,?

mindb0dh,0ah,?

movcx,50

movax,0

movbh,0

movbl,100

movsi,0

l:

addal,score[si]

adcah,0

incsi

loopl

movdx,si

divdl

movavg,al

l1:

cmpscore[si],bh

jbes1

movbh,score[si]

s1:

loopl1

l2:

cmpscore[si],bl

jas2

movbl,score[si]

s2:

loopl2

moval,bl

movah,0

movcl,10

divcl

cmpal,0

jzgw1

cmpal,10

jzmf1

movch,ah

addal,30h

movdl,al

movah,2

addch,30h

movdl,ch

jmpdone1

gw1:

movdl,ah

adddl,30h

mf1:

movdl,31h

movdl,30h

done1:

movdl,0dh

movdl,0ah

moval,bh

jzgw

jzmf

jmpdone

gw:

mf:

done:

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

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

如果有,输出‘Yes’;

否则,输出‘No’)。

datasegment

s1db51,?

51dup('

$'

s3db0ah,0dh,'

Yes$'

s4db0ah,0dh,'

No$'

dataends

s2db'

asm'

data,es:

movax,data

moves,ax

leadx,s1

movah,0ah

leadx,s1+2

movah,9

movcl,s1+1

cmpcl,3

jbnotfound

leasi,s1

leadi,s2

movbx,di

movah,48

cld

again:

movcx,3

repzcmpsb

jzfound

adddx,1

movsi,dx

movdi,bx

decah

jnzagain

jmpnotfound

jmpover

found:

leadx,s3

notfound:

leadx,s4

over:

三.实验体会

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

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

算术运算中,对于不同类型数进行运算时,要进行扩展,还有不要忽视进位;

对于循环和控制转移指令,如果有多个循环或转移指令,则前一个循环或转移结束后,一定到无条件转移到结尾处;

串操作指令中,源串和目的串分别定义在DS和ES两个段中的,不能对ES进行段超越操作等。

实验三汇编语言子程序设计(分支、子程序)

1、掌握分支和子程序结构和设计方法;

3、通过汇编语言了解高级语言的参数传递等知识。

1、1.BL中的只有一位为1。

编写程序测试,并输出提示信息“TheXBitis1”,要求:

地址表和转移表。

adb2

msg0db0dh,0ah,'

The0Bitis1'

'

msg1db0dh,0ah,'

The1Bitis1'

msg2db0dh,0ah,'

The2Bitis1'

msg3db0dh,0ah,'

The3Bitis1'

msg4db0dh,0ah,'

The4Bitis1'

msg5db0dh,0ah,'

The5Bitis1'

msg6db0dh,0ah,'

The6Bitis1'

msg7db0dh,0ah,'

The7Bitis1'

addrtb1dwfunc0,func1,func2,func3,func4,func5,func6,func7

movcx,8

movbl,a

cmpbl,0

jzexit

shrbl,1

jcl1

jmpexit

movax,si

andax,0fh

shlax,1

movbx,ax

jmpaddrtb1[bx]

func0:

leadx,msg0

jmpoutput

func1:

leadx,msg1

func2:

leadx,msg2

func3:

leadx,msg3

func4:

leadx,msg4

func5:

leadx,msg5

func6:

leadx,msg6

func7:

leadx,msg7

output:

movah,9

exit:

adb8

addbx,ax

addbx,offsetjmptb1

jmpbx

jmptb1:

jmpnearptrfunc0

jmpnearptrfunc1

jmpnearptrfunc2

jmpnearptrfunc3

jmpnearptrfunc4

jmpnearptrfunc5

jmpnearptrfunc6

jmpnearptrfunc7

2.编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。

要求通过堆栈(寄存器、内存)传送所有参数。

xdb2

ydb4

zdb?

callresult

resultproc

pushax

pushbx

moval,x

imuly

movbl,x

addal,bl

subal,y

movz,al

popbx

popax

ret

resultendp

xdw123

ydw56

zdw?

codesegment

code,ds:

data

subsp,2

pushx

pushy

callc

popz

cproc

pushbp

movbp,sp

pushdx

movax,[bp+6]

movbx,[bp+4]

movdx,[bp+6]

subdx,bx

addax,dx

mov[bp+8],ax

popdx

popbp

ret4

int21h

codeends

通过本次试验,进一步熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程,通过汇编语言了解了高级语言的参数传递等知识,并熟悉了分支程序和子程序的设计方法,对于地址表和转移表的概念、使用及其区别更加熟悉。

实验四汇编语言高级编程专题

1、汇编语言宏程序设计;

2、掌握中断服务子程序的编写。

1、编写一个宏,求三个数的最小数,原型为:

MIN3x,y,z,min

shiftmacrox,y,z

movax,x

cmpax,y

jldone

movax,y

cmpax,z

jlexit

movax,z

movax,ax

endm

code

shift4,2,3

movah,4ch

2、挂接1CH中断,正计时60秒后退出。

要求屏幕显示0-59的秒数。

intnoequ1ch

useint=1

datasegment

oldisrdw?

?

timerdb100

counterdw0

isdonedb0

dataends

codesegment

ifuseint

moval,intno

movah,35h

movoldisr[0],bx

movax,es

movoldisr[2],ax

else

cli

movax,es:

[intno*4]

movoldisr[0],ax

movax,es:

[intno*4+2]

sti

endif

pushds

movax,segisr

movdx,offsetisr

movah,25h

popds

movwordptres:

[intno*4],offsetisr

[intno*4+2],segisr

waithere:

cmpisdone,60

jnzwaithere

movdx,oldisr[0]

movax,oldisr[2]

movax,oldisr[0]

moves:

[intno*4],ax

[intno*4+2],ax

movax,4c00h

isrprocfar

sti

inctimer

cmptimer,1000/55;

18

jbdone

movtimer,0

movdl,13

movax,counter

movdl,10

movdh,ah

movdl,dh

inccounter

jgedone

movisdone,1

pushf

calldwordptroldisr

popd

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

当前位置:首页 > 工作范文 > 行政公文

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

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