汇编语言实验报告5574277.docx

上传人:b****3 文档编号:10459367 上传时间:2023-05-25 格式:DOCX 页数:24 大小:28.24KB
下载 相关 举报
汇编语言实验报告5574277.docx_第1页
第1页 / 共24页
汇编语言实验报告5574277.docx_第2页
第2页 / 共24页
汇编语言实验报告5574277.docx_第3页
第3页 / 共24页
汇编语言实验报告5574277.docx_第4页
第4页 / 共24页
汇编语言实验报告5574277.docx_第5页
第5页 / 共24页
汇编语言实验报告5574277.docx_第6页
第6页 / 共24页
汇编语言实验报告5574277.docx_第7页
第7页 / 共24页
汇编语言实验报告5574277.docx_第8页
第8页 / 共24页
汇编语言实验报告5574277.docx_第9页
第9页 / 共24页
汇编语言实验报告5574277.docx_第10页
第10页 / 共24页
汇编语言实验报告5574277.docx_第11页
第11页 / 共24页
汇编语言实验报告5574277.docx_第12页
第12页 / 共24页
汇编语言实验报告5574277.docx_第13页
第13页 / 共24页
汇编语言实验报告5574277.docx_第14页
第14页 / 共24页
汇编语言实验报告5574277.docx_第15页
第15页 / 共24页
汇编语言实验报告5574277.docx_第16页
第16页 / 共24页
汇编语言实验报告5574277.docx_第17页
第17页 / 共24页
汇编语言实验报告5574277.docx_第18页
第18页 / 共24页
汇编语言实验报告5574277.docx_第19页
第19页 / 共24页
汇编语言实验报告5574277.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言实验报告5574277.docx

《汇编语言实验报告5574277.docx》由会员分享,可在线阅读,更多相关《汇编语言实验报告5574277.docx(24页珍藏版)》请在冰点文库上搜索。

汇编语言实验报告5574277.docx

汇编语言实验报告5574277

(此文档为word格式,下载后您可任意编辑修改!

合肥工业大学

计算机与信息学院

实验报告

课程:

汇编语言程序设计

专业班级:

学号:

姓名:

实验一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.

eds:

020078563412

eds:

020498BADCFE

2.

直接寻址:

movax,[0200]

movbx,[0202]

addax,[0204]

adcbx,[0206]

mov[0208],ax

mov[020a],bx

间接寻址:

movsi,[0200]

movdi,[0204]

movbx,[0208]

movax,[si]

movdx,[si+2]

addax,[di]

adcdx,[di+2]

mov[bx],ax

mov[bx+2],dx

附加题1

eds:

00001c02

eds:

00020100

eds:

0004FFFF

eds:

00063804

eds:

00080000

MicrosoftWindows[?

?

?

?

6.1.7600]

?

?

?

?

?

?

?

?

(c)2009MicrosoftCorporation?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

C:

\Users\Administrator>debug

-eds:

00001c02

-eds:

00020100

-eds:

0004FFFF

-eds:

00063804

-eds:

00080000

-a

13B3:

0100movax,[0000]

13B3:

0103movbx,[0002]

13B3:

0107imulbx

13B3:

0109movcx,ax

13B3:

010Bmovbx,dx

13B3:

010Dmovax,[0004]

13B3:

0110cwd

13B3:

0111addcx,ax

13B3:

0113adcbx,dx

13B3:

0115subcx,21c

13B3:

0119sbbbx,0

13B3:

011Cmovax,[0006]

13B3:

011Fcwd

13B3:

0120subax,cx

13B3:

0122sbbdx,bx

13B3:

0124movbx,[0000]

13B3:

0128idivbx

13B3:

012Amov[0008],ax

13B3:

012D

-g=0100012d

AX=0002BX=021CCX=FFFFDX=0001SP=FFEEBP=0000SI=0000DI=0000

DS=13B3ES=13B3SS=13B3CS=13B3IP=012DNVUPEIPLZRACPECY

13B3:

012D0000

ADD[BX+SI],ALDS:

021C=00

-

四.实验结果

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

0200H和DS:

0204H两个单元中。

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

0200H单元和DS:

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

0208H单元中。

附加题1

五.实验体会

通过本次试验熟悉了DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

以及DEBUG下的八个基本的指令,如a,g,t,u等等。

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

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

一.实验目的

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

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

二.实验内容

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

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

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

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

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

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

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

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

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

三.实验过程和程序

1.

Datasegment

sum1dw0

sum2dw0

xdw21CH

ydw1H

zdw0FFFFH

vdw438H

Dataends

Codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movax,x

movbx,y

imulbx

movcx,ax

movbx,dx

movax,z

cwd

addcx,ax

adcbx,dx

subcx,0D0H

sbbbx,0

movax,v

cwd

subax,cx

sbbdx,bx

movbx,x

idivbx

movsum1,ax

movsum2,dx

movah,4ch

int21h

Codeends

endstart

 

2.

Datasegment

gradedw10dup(90)

Dataends

Codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,50

movbx,0

movax,0

again:

addax,grade[bx]

incbx

incbx

loopagain

movbx,50

divbx

movah,4ch

int21h

Codeends

endstart

 

3.

lenequ51

Datasegment

stringdblen,?

lendup(?

lfdb0ah

Dataends

Codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

leadx,string

movah,0ah

int21h

movdl,lf

movah,2

int21h

movcl,string[1]

movch,0

leabx,string[2]

addbx,cx

movbyteptr[bx],'$'

leadx,string[2]

movah,09h

int21h

movah,4ch

int21h

Codeends

endstart

四.实验结果

1.

xdw21CH

ydw1H

zdw0FFFFH

vdw438H结果为sum1=0001sum2=00d1

2.

输入10组数据,分别为90

输出为46h

3.

输入:

string

输出:

string

五.实验体会

掌握了顺序和循环程序结构和设计方法,以及字符、字符串的输入和显示,熟悉了在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

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

一.实验目的

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

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

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

二.实验内容

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

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

地址表和转移表。

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

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

三.实验过程和程序

1.

地址表方法:

Datasegment

xdb10h

addrtbldwl0,l1,l2,l3,l4,l5,l6,l7

s0db'The0Bitis1.$'

s1db'The1Bitis1.$'

s2db'The2Bitis1.$'

s3db'The3Bitis1.$'

s4db'The4Bitis1.$'

s5db'The5Bitis1.$'

s6db'The6Bitis1.$'

s7db'The7Bitis1.$'

Dataends

Codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,8

movbl,x

again:

shrbl,1

jncl

movsi,8

subsi,cx

shlsi,1

jmpaddrtbl[si]

l0:

leadx,s0

jmpoutput

l1:

leadx,s1

jmpoutput

l2:

leadx,s2

jmpoutput

l3:

leadx,s3

jmpoutput

l4:

leadx,s4

jmpoutput

l5:

leadx,s5

jmpoutput

l6:

leadx,s6

jmpoutput

l7:

leadx,s7

jmpoutput

l:

loopagain

output:

movah,9h

int21h

movah,4ch

int21h

Codeends

endstart

 

转移表方法:

Datasegment

xdb80h

addrtbldwl0,l1,l2,l3,l4,l5,l6,l7

s0db'The0Bitis1.$'

s1db'The1Bitis1.$'

s2db'The2Bitis1.$'

s3db'The3Bitis1.$'

s4db'The4Bitis1.$'

s5db'The5Bitis1.$'

s6db'The6Bitis1.$'

s7db'The7Bitis1.$'

Dataends

Codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,8

movbl,x

again:

shrbl,1

jncl

movsi,8

subsi,cx

l:

loopagain

leaax,jmptbl

movcx,si

shlsi,1

addsi,cx

addax,si

jmpax

jmptbl:

jmpnearptrl0

jmpnearptrl1

jmpnearptrl2

jmpnearptrl3

jmpnearptrl4

jmpnearptrl5

jmpnearptrl6

jmpnearptrl7

l0:

leadx,s0

jmpoutput

l1:

leadx,s1

jmpoutput

l2:

leadx,s2

jmpoutput

l3:

leadx,s3

jmpoutput

l4:

leadx,s4

jmpoutput

l5:

leadx,s5

jmpoutput

l6:

leadx,s6

jmpoutput

l7:

leadx,s7

jmpoutput

output:

movah,9h

int21h

movah,4ch

int21h

Codeends

endstart

 

2.

Datasegment

xdw1

ydw2

zdw0

Dataends

Codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

subsp,4

pushy

pushx

callf

popz

movah,4ch

int21h

fprocnear

pushbp

movbp,sp

pushsi

pushdx

pushcx

pushbx

pushax

movax,[bp+4]

movcx,ax

movbx,[bp+6]

imulbx

movsi,0

addax,cx

adcdx,si

movsi,0

subax,bx

sbbdx,si

mov[bp+8],ax

mov[bp+10],dx

ret4

fendp

Codeends

endstart

 

四.实验结果

1.

地址表方法:

BL中存储的数为:

10h

输出结果为:

The4bitis1.

转移表方法:

BL中存储的数为:

80h

输出结果为:

The7bitis1.

2.

五.实验体会

通过本次试验,掌握了分支和子程序结构和设计方法;实现了转移表以及地址表的创建及调用,以及几种参数传递的方式,进一步熟悉了在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

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

一.实验目的

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

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

3、汇编语言与高级语言的混编。

二.实验内容

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

MIN3x,y,z,min

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

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

三.实验过程和程序

1.

MIN3macrox,y,z,min

moval,x

movbl,y

movcl,z

cmpal,bl

jcl1

cmpbl,cl

jcl2

movmin,cl

jmpexit

l1:

cmpal,cl

jcl3

movmin,cl

jmpexit

l2:

movmin,bl

jmpexit

l3:

movmin,al

exit:

endm

Datasegment

xdb03h

ydb02h

zdb01h

mindb?

Dataends

Codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

MIN3x,y,z,min

addmin,30h

movdl,min

movah,02h

int21h

movah,4ch

int21h

Codeends

endstart

 

2.

INTNOEQU1CH

USEINT=59

DATASEGMENT

OLDISRDW?

?

TIMERDB100

COUNTERDW60

ISDONEDB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,0

MOVES,AX

;PROTECT

IFUSEINT

MOVAL,INTNO

MOVAH,35H

INT21H

;ES:

BX

MOVOLDISR[0],BX

MOVAX,ES

MOVOLDISR[2],AX

ELSE

CLI

MOVAX,ES:

[INTNO*4]

MOVOLDISR[0],AX

MOVAX,ES:

[INTNO*4+2]

MOVOLDISR[2],AX

STI

ENDIF

;SETNEWISR

IFUSEINT

PUSHDS

MOVAX,SEGISR

MOVDS,AX

MOVDX,OFFSETISR

MOVAL,INTNO

MOVAH,25H

INT21H

POPDS

ELSE

CLI

MOVWORDPTRES:

[INTNO*4],OFFSETISR

MOVWORDPTRES:

[INTNO*4+2],SEGISR

STI

ENDIF

;WAITHERE

WAITHERE:

CMPISDONE,1

JNZWAITHERE

EXIT:

;RESTORE

IFUSEINT

PUSHDS

MOVDX,OLDISR[0]

MOVAX,OLDISR[2]

MOVDS,AX

MOVAL,INTNO

MOVAH,25H

INT21H

POPDS

ELSE

CLI

MOVAX,OLDISR[0]

MOVES:

[INTNO*4],AX

MOVAX,OLDISR[2]

MOVES:

[INTNO*4+2],AX

STI

ENDIF

MOVAX,4C00H

INT21H

ISRPROCFAR

PUSHDX

PUSHAX

MOVAX,DATA

MOVDS,AX

STI;便于中断嵌套

;COUNTHERE

INCTIMER

AGAIN:

CMPTIMER,1000/55;18

JBDONE

MOVTIMER,0

;carriage

MOVAH,2

MOVDL,13

INT21H

;printtime

MOVAX,COUNTER

MOVDL,10

DIVDL

MOVDH,AH

MOVDL,AL

MOVAH,2

ADDDL,30H

INT21H

MOVDL,DH

ADDDL,30H

INT21H

DECCOUNTER

JGEDONE

MOVISDONE,1

DONE:

PUSHF

CALLDWORDPTROLDISR

CLI

POPAX

POPDX

IRET;中断返回

ISRENDP

CODEENDS

ENDSTART

 

四.实验结果

1.

输入:

x,y,z分别是03h02h01h

输出:

1

2.

五.实验体会

通过本次试验熟悉了汇编语言宏程序设计;掌握中断服务子程序的编写,其中应注意恢复原中断指令,将ds重新指向数据段。

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2