汇编实验报告.docx

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

汇编实验报告.docx

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

汇编实验报告.docx

汇编实验报告

 

科技学院

综合实验报告

(2014--2015年度第一学期)

 

名称:

《汇编语言程序设计》综合实验

题目:

汇编综合实验

院系:

班级:

学号:

学生姓名:

指导教师:

设计周数:

成绩:

日期:

2015年1月4日

《汇编语言程序设计》综合实验

任务书

一、目的与要求

通过本门课程的学习与实践,学生可以加深对汇编语言程序设计课程的理解与掌握,有助于提高学生的汇编语言程序设计能力,同时可以加深对计算机工作原理的理解,有助于促进后续课程的学习。

本课程要求学生针对课本所学知识从调试程序、循环程序设计、分支程序设计、子程序设计、显示器IO程序设计、键盘输入程序设计和中断练习程序等七个实验进行学习和实践,使学生对汇编语言有更深入、细致和全面的了解,并能用所学知识解决实际问题。

要求有设计说明,画出程序流程图,然后根据流程图编写程序,并上机调试写出运行结果。

二、主要内容

1.比较字符串sample(学习)、用表格形式显示字符

比较字符串sample:

比较两个字符串string1和string2所含的字符数是否相同。

若相同则显示‘match’,否则显示‘nomatch’;要求编写程序,并汇编,连接,运行,然后使用Debug调试该程序。

用表格形式显示字符:

按15行*16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。

每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。

2.查找匹配字符串

程序接受用户键入的一个关键字以及一个句子。

如果句子中不含关键字则显示‘nomatch’;如果句子中包含关键字则显示‘match’,且把该字在句子中的位置用十六进制数显示出来。

3.分类统计字符的个数

程序接收用户键入的一行字符(用回车符结束),并按字母,数字及其他字符分类计数,然后将结果存入以letter,digit和other为名的存储单元中。

4.查找电话号码

要求程序建立一个可存50项的电话号码表,每项包括人名及电话号码两部分;程序可接受输入人名及相应的电话号码,并将其保存至电话号码表中;当有新的输入后,程序应按人名对电话号码表重新排序;程序可接受键盘输入人名并查找电话号码,再在屏幕上显示出来。

5.屏幕窗口程序

在屏幕上开出三个窗口,它们的行列坐标如下图所示。

光标首先定位在右窗口最下面一行的行首(15,50),如果从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。

若需要将字符显示于左窗口,则先按下左键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示左窗口的内容。

当一行字符显示满后,窗口自动向上卷动一行,输入字符继续显示于最低一行,窗口最高一行向上卷动后消失。

6.扩充键盘处理功能(选做)

在完成键盘处理基本功能的基础上,增加left_shift和right_shift键的功能。

要求实现左右SHIFT任何一个键处于按下状态时输入字符为键盘的上档字符或大写字母,否则输出数字或小写字母。

三、进度计划

序号

设计内容

完成时间

备注

1

比较字符串sample(学习)

用表格形式显示字符

周一

2

查找匹配字符串

周二

3

分类统计字符的个数

周三

4

查找电话号码

周四

5

屏幕窗口程序(选做)

6

扩充键盘处理功能(选做)

注:

其中第1-4个实验根据进度在1月4日之前验收即可;学有余力的同学可选做第5、6题。

四、设计成果要求

1.以上实验要求首先画出程序流程图,然后根据流程图编写程序并上机调试,教师将验收实验结果。

2.课程设计报告:

完成上机题目后,应认真撰写上机综合实验报告,报告内容包括:

•上机题目及要求;

•设计说明:

完成的功能、整体设计思想及使用的算法;

•设计的程序流程框图和主要数据结构;

•上机题目完成的情况,输入的典型代码数据和运行结果;

•存在的问题及解决方法设想;

•上机实验的心得体会。

五、考核方式

依据进度计划,完成综合实验内容,并向老师讲解所完成任务的功能、思想、使用算法及主要程序流程,老师提出问题,提交综合实验报告。

成绩评定方法:

现场考查+验收+综合实验报告

学生姓名:

指导教师:

2014年12月23日

 

实验一:

用表格形式显示字符

一、综合实验的目的与要求

按15*16列的表格形式显示ASCⅡ码为10H—100H的所有字符,即以行为主的顺序及ASCⅡ码递增的次序依次显示对应的字符。

每16个字符为一行,每行中的相邻两个字符之间用空白符隔开。

二、实验正文

CODESSEGMENT

;**********************************************

mainprocfar

ASSUMECS:

CODES

START:

pushds

subax,ax

pushax

movdi,15

movdl,10h

loo:

movcx,16

next:

movah,02h

int21h

incdl

pushdx

movdl,0

movah,02h

int21h

popdx

loopnext

pushdx

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h

popdx

decdi

jneloo

jeexit

exit:

ret

mainendp

CODESENDS

ENDSTART

 

三、综合实验总结或结论

四、参考文献

1,作者:

沈美明温东婵

2书名:

《IBM-PC汇编语言程序设计》

3出版单位:

清华大学出版社

4版本:

第二版

5出版日期:

2001年

附录(设计流程图、程序、表格、数据等)

(1)显示每个字符可使用功能号为02的显示输出功能调用:

Movah,02h

Movdl,输出字符的ASCⅡ码

Int21h

将dl初始化为10H,然后使用其加1以取得下一个字符的ASCⅡ码。

(2)显示空白符是,用其ASCⅡ码置0入dl寄存器。

每行结束时,用回车和换行来结束本行并开始下一行。

(3)由于逐个显示相继的ASCⅡ码字符是,需要不断修改dl寄存器的内容,而显示空白、回车、换行也需要使用dl寄存器,为此可使用堆栈保存dx。

实验二:

查找匹配字符串

一、综合实验的目的与要求

程序接受用户键入的一个关键字以及一个句子,如果句子中不包含关键字则显示“Nomatch!

”;如果句子中包含关键字则显示“match!

”,且把该字在句子中的位置用十六进制数显示出来。

要求程序的执行过程如下:

Enterkeyword:

abc

Entersentence:

wearestudyingabc

Matchatlocation:

11Hofthesentence

Entersentence:

xyz

Nomatch!

Entersentence:

 

二、实验正文

DATASSEGMENTpara'data'

mess1db'match!

',13,10,'$'

mess2db'nomatch!

',13,10,'$'

mess3db'enterkeyword:

','$'

mess4db'entersentence:

','$'

mess5db'matchatlocation:

','$'

mess6db'Hofthesentence','$'

stoknimlabelbyte

maxdb10

actdb?

stokndb10dup(?

sentencelabelbyte

madb100

acdb?

stodb100dup(?

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

;*****************************************

CODESSEGMENTpara'code'

ASSUMECS:

CODES,DS:

DATAS,es:

datas

mainprocfar

START:

pushds

subax,ax

pushax

MOVAX,DATAS

MOVDS,AX

moves,ax

;*****************输入关键字和一个句子***********

k:

leadx,mess3

movah,09

int21h;显示字符串‘enterword’

leadx,stoknim

movah,0ah

int21h;输入关键字到缓冲区Word

pushdx

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h;回车换行

popdx

d:

leadx,mess4

movah,09

int21h;显示字符串‘entersentence’

leadx,sentence

movah,0ah

int21h;输入句子到缓冲区sentence

pushdx

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h;回车换行

popdx

;****************比较查找信息********************

leasi,stoknim;si指向关键字

leadi,sentence;di指向句子

movax,0

movbl,1;初始化bx

movcl,0;初始化外循环计数单元

moval,act

movah,ac

subah,al

addah,1

movcl,ah;cl中循环次数

cmpcl,0

jenomatch

a:

pushcx

movcl,al

repnzcmpsb

jzmatch

subdi,1

subsi,2

addbl,1

popcx

deccl

cmpcl,0

jnea

jenomatch

;***************输出信息*************************

match:

leadx,mess1

movah,09h

int21h;显示match

pushdx

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h;回车换行

popdx

leadx,mess5

movah,09h

int21h;显示matchatlocation

moval,bl

andal,0fh

addal,30h

cmpal,3ah

jlp

addal,7h

p:

movdl,al

movah,02h

int21h

leadx,mess6

movah,09h

int21h

pushdx

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h;回车换行

popdx

jmpwer

nomatch:

leadx,mess2

movah,09h

int21h;显示nomatch

pushdx

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h;回车换行

popdx

wer:

jmpd

mainendp

CODESENDS

ENDSTART

三、综合实验总结或结论

四、参考文献

1,作者:

沈美明温东婵

2书名:

《IBM-PC汇编语言程序设计》

3出版单位:

清华大学出版社

4版本:

第二版

5出版日期:

2001年

附录(设计流程图、程序、表格、数据等)

程序由三部分组成:

(1)输入关键字和一个句子,分别存入相应的缓冲区中。

(2)在句子中查找关键字

(3)输出信息。

用功能调用09h分‘找到’和‘未找到两种情况分别显示不同的信息。

在“找到”时,显示关键字在字符串中位置。

实验三:

分类统计字符个数

一、综合实验的目的与要求

程序接受用户键入一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字、其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。

 

二、实验正文

datareasegment

toudb'enterword',13,10,'$'

letterdb'letter:

','$'

numberdb'number:

','$'

otherdb'other:

','$'

datareaends

;***************************************************

codessegment

mainprocfar

assumecs:

codes,ds:

datarea

start:

pushds

subax,ax

pushax

movax,datarea

movds,ax

movbx,0

movcx,0

movdi,0

leadx,tou

movah,09h

int21h

input:

movah,1

int21h

cmpal,0dh

jedisp

cmpal,30h

jaen1

o:

incdi

jmpshortinput

n1:

cmpal,39h

jan2

inccx

jmpshortinput

n2:

cmpal,41h

jaen3

jmpo

n3:

cmpal,5ah

jan4

incbx

jmpshortinput

n4:

cmpal,61h

jaen5

jmpshorto

n5:

cmpal,7ah

jashorto

incbx

jmpshortinput

disp:

pushax

movdl,0dh

movah,09h

int21h

movdl,0ah

movah,09h

int21h

popax

leadx,letter

pushax

movah,09h

int21h

popax

callbinihex

pushax

movdl,0dh

movah,09h

int21h

movdl,0ah

movah,09h

int21h

popax

leadx,number

pushax

movah,09h

int21h

popax

movbx,cx

callbinihex

pushax

movdl,0dh

movah,09h

int21h

movdl,0ah

movah,09h

int21h

popax

leadx,other

movah,09h

int21h

movbx,di

callbinihex

pushax

movdl,0dh

movah,09h

int21h

movdl,0ah

movah,09h

int21h

popax

ret

mainendp

;******************************

binihexprocnear

pushcx

pushax

pushdx

movch,4

rotate:

movcl,4

rolbx,cl

movdl,bl

anddl,0fh

adddl,30h

cmpdl,3ah

jlprintin

adddl,07h

printin:

movah,02h

int21h

decch

jnzrotate

popdx

popax

popcx

ret

binihexendp

codesends

endstart

三、综合实验总结或结论

四、参考文献

1,作者:

沈美明温东婵

2书名:

《IBM-PC汇编语言程序设计》

3出版单位:

清华大学出版社

4版本:

第二版

5出版日期:

2001年

附录(设计流程图、程序、表格、数据等)

(1)程序可采用01H功能调用把键入字符先分类计数再存入缓冲区中。

(2)程序进入debug运行并查看计数结

实验四:

查找电话号码

一、综合实验的目的与要求

(1)要求程序建立一个可存放50项的电话号码表,每项包括人名及电话号码两部分;

(2)程序可接受输入人名及相应的电话号码,并把它们加入电话号码表中;

(3)凡有新的输入后,程序可按人名对电话号码表重新排序;

(4)程序可接受需要查询电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上以如下格式显示出来。

Nametel

××××××××

 

二、实验正文

datasegsegment

nameparlabelbyte

maxnlendb21

actnlendb?

_namedb21dup(?

phoneparlabelbyte

maxplendb9

actplendb?

phonedb9dup(?

crlfdb13,10,'$'

endaddrdw?

mess1db'entername:

','$'

mess2db'enteratelephonenumber:

','$'

mess3db'Doyouwantatelephonenumber?

(Y/N)','$'

mess4db'name?

','$'

mess5db'name',16dup(''),'tel',0dh,0ah,'$'

mess6db'Notinthetable.',0dh,0ah,'$'

mess7db'Invalidinput!

',0dh,0ah,'$'

countdb0

tel_tabdb50dup(20dup(''),8dup(''))

tempdb20dup(''),8dup(''),0dh,0ah,'$'

swappeddb0

datasegends

;**********************************************************************

codesegsegment

mainprocfar

assumecs:

codeseg,ds:

dataseg,es:

dataseg

start:

pushds

subax,ax

pushax

movax,dataseg

movds,ax

moves,ax;

cld

leadi,tel_tab;di中存放表首地址

inputloop:

movah,09h

leadx,mess1

int21h

callinput_name

cmpactnlen,0;没有输入人名时

jza1;直接跳到提示是否查找的地方

cmpcount,50;输入上限

jea1

callstor_name;保存人名到tel_tab

movah,09h

leadx,mess2

int21h

callinput_stor_phone;输入并保存电话号码

jmpinputloop

a1:

cmpcount,1

jbesearchloop;如果没有输入或者输入一个

callname_sort;排序

calldisp_all;显示所有

searchloop:

leadx,mess3

movah,09h

int21h

movah,01h

int21h

cmpal,'N'

jeexit

cmpal,'n'

jeexit

cmpal,'Y'

jeshowname

cmpal,'y'

jeshowname

movah,09

leadx,crlf

int21h

leadx,mess7;非法输入

movah,09h

int21h

jmpsearchloop

showname:

movah,09

leadx,crlf

int21h

leadx,mess4;当输入Y时,显示'name?

'

movah,09

int21h

callinput_name;输入要查找的人名

callname_search;查找

callprintline

jmpsearchloop

exit:

ret

mainendp

;******************************************************

input_nameprocnear

movah,0ah

leadx,namepar

int21h;输入名字

movdl,0ah

movah,02h

int21h;换行

movbh,0;bx高位置0

movbl,actnlen;bx低位置输入名字个数

movcx,21

subcx,bx;计算剩下的长度

i1:

mov_name[bx],20h

incbx

loopi1;把bx之后剩下的填充空格

ret

input_nameendp

;*********************************************************

stor_nameprocnear

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

当前位置:首页 > 考试认证 > 公务员考试

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

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