合肥工业大学汇编程序设计实验报告完整代码.docx

上传人:b****4 文档编号:1475160 上传时间:2022-10-22 格式:DOCX 页数:32 大小:875.27KB
下载 相关 举报
合肥工业大学汇编程序设计实验报告完整代码.docx_第1页
第1页 / 共32页
合肥工业大学汇编程序设计实验报告完整代码.docx_第2页
第2页 / 共32页
合肥工业大学汇编程序设计实验报告完整代码.docx_第3页
第3页 / 共32页
合肥工业大学汇编程序设计实验报告完整代码.docx_第4页
第4页 / 共32页
合肥工业大学汇编程序设计实验报告完整代码.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

合肥工业大学汇编程序设计实验报告完整代码.docx

《合肥工业大学汇编程序设计实验报告完整代码.docx》由会员分享,可在线阅读,更多相关《合肥工业大学汇编程序设计实验报告完整代码.docx(32页珍藏版)》请在冰豆网上搜索。

合肥工业大学汇编程序设计实验报告完整代码.docx

合肥工业大学汇编程序设计实验报告完整代码

合肥工业大学

计算机与信息学院

实验报告

课程:

汇编语言程序设计

专业班级:

信息安全13-1

学号:

**********

*****

 

实验一Debug程序的使用

一.实验目的

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

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

二.实验内容

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

0200H和DS:

0204H两个单元中。

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

0200H单元和DS:

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

0208H单元中。

要求:

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

三.实验过程和程序

实验将”12345678H”和”FEDCBA98H”分别送入起始地址为DS:

200H和DS:

204H的两个单元中。

还包含两个附加题,一是从DS:

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

540,1,-1,1080,0,试求w=(v-(x*y+z-540))/x,二是统计bx中1的个数

四.实验结果(包括必要的截图)

将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:

0200H和DS:

0204H两个单元中。

直接寻址方式实现数据相加

寄存器间接寻址实现数据相加

附加题一:

从DS:

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

始化为:

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

附加题二:

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

五.实验体会

通过本次实验,了解了使用debug的各种指令。

同时在debug下进行编程,比较麻烦。

由于是第一次编写汇编程序,还是需要多练习。

 

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

一.实验目的

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、计算表达式值(V–(X*Y+Z-720))/X;

datasegment

xdw021ch

ydw0001h

zdw0ffffh

vdw0438h

wdw0000h

sum1dw?

sum2dw?

dataends

assumecs:

code,ds:

data

codesegment

start:

movax,data

movds,ax

MOVAX,x

IMULY;x*y

MOVCX,AX

MOVBX,DX

MOVAX,Z

CWD

ADDCX,AX

ADCBX,DX;x*y+z

SUBCX,540;?

SBBBX,0;x*y+z-540

MOVAX,V

CWD

SUBAX,CX

SBBDX,BX;v-(x*y+z-540)

IDIVX;(v-(x*y+z-540))/x

movsum1,ax

movsum2,dx

movax,4c00h

int21h

codeends

endstart

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

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

datasegment

db7,49dup(6)

maxdb?

mindb?

resultdb0

dataends

assumecs:

code,ds:

data

codesegment

start:

movax,data

movds,ax

movax,0

movcx,50

movdi,0

again:

movbx,0

movbl,[di]

adddi,1

addax,bx

loopagain

movbl,50

divbl

movresult,al

movdi,50

max2:

subdi,1

movcx,50

movsi,0

moval,[di]

max1:

cmpal,[si]

jbmax2

addsi,1

loopmax1

movmax,al

movdi,50

min2:

subdi,1

movcx,50

movsi,0

moval,[di]

min1:

cmpal,[si]

jnbmin2

addsi,1

loopmin1

movmin,al

movax,4c00h

int21h

codeends

endstart

 

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

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

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

datasegment

data2db50,?

50dup('$')

stringdb'yes$'

string1db'no$'

dataends

assumecs:

code,ds:

data

codesegment

start:

movax,data

movds,ax

movah,0ah

movdx,offsetdata2

int21h

movah,2h

movdl,0ah

int21h

movah,2h

movdl,0dh

int21h

movdx,offsetdata2+2

movah,09h

int21h

movah,2h

movdl,0ah

int21h

movah,2h

movdl,0dh

int21h

moval,0h

movcx,47

movdi,0

again:

moval,[di+2]

cmpal,61h

jnznext

moval,[di+3]

cmpal,73h

jnznext

moval,[di+4]

cmpal,6dh

jnznext

jmpyes

next:

adddi,1

loopagain

movdx,offsetstring1

movah,09h

int21h

jmpendcode

yes:

movdx,offsetstring

movah,09h

int21h

endcode:

movax,4c00h

int21h

codeends

endstart

 

四.实验结果(包括必要的截图)

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

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

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

0030地址为平均值的商0032地址为最大值0034地址为最小值

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

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

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

五.实验体会

通过此次试验,了解了符号扩展指令的使用。

第二程序中,以及在输出时,输入的字符串末尾要注意加结束标志’$’,还有在输出字符串前要先输出个回车换行,否则回车后看不到输出结果。

 

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

一.实验目的

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

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

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

二.实验内容

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

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

地址表和转移表。

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

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

3.实践CAsm的转换过程。

三.实验过程和程序

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

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

地址表和转移表。

;blhaveone1cout<

datasegment

addresdwfun8,fun7,fun6,fun5,fun4,fun3,fun2,fun1

string8db'The8Bitis1$'

string7db'The7Bitis1$'

string6db'The6Bitis1$'

string5db'The5Bitis1$'

string4db'The4Bitis1$'

string3db'The3Bitis1$'

string2db'The2Bitis1$'

string1db'The1Bitis1$'

dataends

assumeds:

data,cs:

code

codesegment

start:

movax,data

movds,ax

movbl,10h

movax,0000h

movcx,8

math:

shlbl,1

jcright

jmpnext

right:

movdl,02h

muldl

movbp,ax

jmpaddres[bp]

next:

incax

loopmath

fun8:

movdx,offsetstring8

jmpcout

fun7:

movdx,offsetstring7

jmpcout

fun6:

movdx,offsetstring6

jmpcout

fun5:

movdx,offsetstring5

jmpcout

fun4:

movdx,offsetstring4

jmpcout

fun3:

movdx,offsetstring3

jmpcout

fun2:

movdx,offsetstring2

jmpcout

fun1:

movdx,offsetstring1

jmpcout

cout:

movah,09h

int21h

movah,4ch

int21h

codeend

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

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

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

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