汇编语言实验报告5574277Word格式.docx

上传人:b****6 文档编号:18715994 上传时间:2022-12-31 格式:DOCX 页数:20 大小:28.27KB
下载 相关 举报
汇编语言实验报告5574277Word格式.docx_第1页
第1页 / 共20页
汇编语言实验报告5574277Word格式.docx_第2页
第2页 / 共20页
汇编语言实验报告5574277Word格式.docx_第3页
第3页 / 共20页
汇编语言实验报告5574277Word格式.docx_第4页
第4页 / 共20页
汇编语言实验报告5574277Word格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

汇编语言实验报告5574277Word格式.docx

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

汇编语言实验报告5574277Word格式.docx

movsi,[0200]

movdi,[0204]

movbx,[0208]

movax,[si]

movdx,[si+2]

addax,[di]

adcdx,[di+2]

mov[bx],ax

mov[bx+2],dx

附加题1

00001c02

00020100

0004FFFF

00063804

00080000

MicrosoftWindows[?

?

6.1.7600]

(c)2009MicrosoftCorporation?

C:

\Users\Administrator>

debug

-eds:

00080000

-a

13B3:

0100movax,[0000]

0103movbx,[0002]

0107imulbx

0109movcx,ax

010Bmovbx,dx

010Dmovax,[0004]

0110cwd

0111addcx,ax

0113adcbx,dx

0115subcx,21c

0119sbbbx,0

011Cmovax,[0006]

011Fcwd

0120subax,cx

0122sbbdx,bx

0124movbx,[0000]

0128idivbx

012Amov[0008],ax

012D

-g=0100012d

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

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

012D0000

ADD[BX+SI],ALDS:

021C=00

-

四.实验结果

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

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

五.实验体会

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

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

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

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

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

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

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’)。

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

subax,cx

sbbdx,bx

movbx,x

idivbx

movsum1,ax

movsum2,dx

movah,4ch

int21h

Codeends

endstart

gradedw10dup(90)

movcx,50

movbx,0

movax,0

again:

addax,grade[bx]

incbx

loopagain

movbx,50

divbx

3.

lenequ51

stringdblen,?

lendup(?

lfdb0ah

leadx,string

movah,0ah

movdl,lf

movah,2

movcl,string[1]

movch,0

leabx,string[2]

addbx,cx

movbyteptr[bx],'

$'

leadx,string[2]

movah,09h

vdw438H结果为sum1=0001sum2=00d1

2.

输入10组数据,分别为90

输出为46h

输入:

string

输出:

string

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

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

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

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

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

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

地址表和转移表。

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

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

地址表方法:

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.$'

movcx,8

movbl,x

shrbl,1

jncl

movsi,8

subsi,cx

shlsi,1

jmpaddrtbl[si]

l0:

leadx,s0

jmpoutput

l1:

leadx,s1

l2:

leadx,s2

l3:

leadx,s3

l4:

leadx,s4

l5:

leadx,s5

l6:

leadx,s6

l7:

leadx,s7

l:

loopagain

output:

movah,9h

转移表方法:

xdb80h

leaax,jmptbl

movcx,si

addsi,cx

addax,si

jmpax

jmptbl:

jmpnearptrl0

jmpnearptrl1

jmpnearptrl2

jmpnearptrl3

jmpnearptrl4

jmpnearptrl5

jmpnearptrl6

jmpnearptrl7

int21h

xdw1

ydw2

zdw0

subsp,4

pushy

pushx

callf

popz

fprocnear

pushbp

movbp,sp

pushsi

pushdx

pushcx

pushbx

pushax

movax,[bp+4]

movcx,ax

movbx,[bp+6]

imulbx

movsi,0

addax,cx

adcdx,si

subax,bx

sbbdx,si

mov[bp+8],ax

mov[bp+10],dx

ret4

fendp

1.

BL中存储的数为:

10h

输出结果为:

The4bitis1.

80h

The7bitis1.

通过本次试验,掌握了分支和子程序结构和设计方法;

实现了转移表以及地址表的创建及调用,以及几种参数传递的方式,进一步熟悉了在PC机上建立、汇编、连接、调试和运行80868088汇编语言程序的过程。

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

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

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

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

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

MIN3x,y,z,min

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

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

MIN3macrox,y,z,min

moval,x

movbl,y

movcl,z

cmpal,bl

jcl1

cmpbl,cl

jcl2

movmin,cl

jmpexit

cmpal,cl

jcl3

movmin,bl

jmpexit

movmin,al

exit:

endm

xdb03h

ydb02h

zdb01h

mindb?

addmin,30h

movdl,min

movah,02h

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]

STI

ENDIF

SETNEWISR

PUSHDS

MOVAX,SEGISR

MOVDX,OFFSETISR

MOVAH,25H

POPDS

MOVWORDPTRES:

[INTNO*4],OFFSETISR

[INTNO*4+2],SEGISR

WAITHERE

WAITHERE:

CMPISDONE,1

JNZWAITHERE

EXIT:

RESTORE

MOVDX,OLDISR[0]

MOVAX,OLDISR[2]

MOVAX,OLDISR[0]

MOVES:

[INTNO*4],AX

[INTNO*4+2],AX

MOVAX,4C00H

ISRPROCFAR

PUSHDX

PUSHAX

STI;

便于中断嵌套

COUNTHERE

INCTIMER

AGAIN:

CMPTIMER,100055;

18

JBDONE

MOVTIMER,0

carriage

MOVAH,2

MOVDL,13

printtime

MOVAX,COUNTER

MOVDL,10

DIVDL

MOVDH,AH

MOVDL,AL

ADDDL,30H

MOVDL,DH

DECCOUNTER

JGEDONE

MOVISDONE,1

DONE:

PUSHF

CALLDWORDPTROLDISR

POPAX

POPDX

IRET;

中断返回

ISRENDP

CODEENDS

ENDSTART

x,y,z分别是03h02h01h

1

通过本次试验熟悉了汇编语言宏程序设计;

掌握中断服务子程序的编写,其中应注意恢复原中断指令,将ds重新指向数据段。

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

当前位置:首页 > 解决方案 > 其它

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

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