《汇编语言》指导书_第1页
《汇编语言》指导书_第2页
《汇编语言》指导书_第3页
《汇编语言》指导书_第4页
《汇编语言》指导书_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——《汇编语言》指导书《汇编语言程序设计》

试验指导书

试验一汇编语言上机过程和Debug常用调试命令

一.试验目的:

学习程序设计的基本方法和技能,熟练把握用汇编语言设计、编写、调试和运行程序的方法。

二.试验题目:

熟悉与试验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的

使用方法。在调试过程中,学习及把握debug程序的各种操作命令。

三.问题描述:

试编写一程序:比较两个字符串string1和string2所含的字符是否一致,若一致

则显示‘match’;否则,显示‘nomatch’。

四.方法说明:

a)使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。b)用汇编程序masm(或asm)对源文件汇编产生目标文件obj

如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。c)用连接程序link产生执行文件EXE.d)执行程序,可直接从DOS执行程序。e)使用debug程序调试程序的方法。五.试验步骤:

1.调用字处理程序EDIT建立以sample.asm文件datareasegment

string1db‘movethecursorbackward.’string2db‘movethecursorbackward.’mess1db‘Match..’,13,10,’$’mess2db‘Nomatch!..’,13,10,’$’datareaends

prognamsegmentmainprocfar

assumecs:prognam,ds:datarea,es:datarea

start:

pushdssubax,axpushax

movax,datareamovds,axmoves,axleasi,string1leadi,string2cld

movcx,25repzcmpsb

jzmatchleadx,mess2jmpshortdisp

match:

leadx,mess1disp:

movah,09int21hretmainendpprognamends

endstart

2.对源文件汇编产生目标文件objD:\\masm文件名。Asm

3.用连接程序link产生执行文件exeD:\\link文件名。Obj4.执行程序D:\\文件名

5.使用debug程序调试程序的方法。d>debug文件名.exe_

1.用G命令运行程序2.用U命令显示程序3.学会设置断点。

4.学会查看数据段的内容状况

5.用E命令修改数据区的字符串。6.用A命令把数据区的内容恢复原状7.T命令逐条跟踪程序的执行

8.学会使用F命令、R命令、Q命令等等

试验二循环程序设计1

循环结构是控制重复执行某一程序段的基本程序结构.在汇编语言程序设计中,循环程序的地位也是极为重要,从本质上来看,循环程序结构是分支程序结构的一种手特别形式,也是使用条件转移指令来控制执行循环的.

一.试验目的:

学会用循环结构进行程序编程。

二.试验题目:

设计一个按表格形式显示ASC||码为10H—100H的所有字符的程序。

三.试验要求:

按15行*16列的表格形式显示ASC||码为10H100H的所有字符,即以行为主

的顺序及ASC||码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相

邻两个字符之间用空白符(ASC||为0)隔开。

四.方法说明:

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

movah,02h

movdl,输出字符的ASC||码int21h

此题中可把dl初始化为10H,然后不断使其加1(用INC指令)以取得下一个字符的ASC||码。(2)显示空白符时,用其ASC||码0置入dl寄放器,每行终止时,用显示回车(ASC||为0dh)和换行符(ASC||为oah)来终止本行并开始下一行。

(3)由于逐个显示相继的ASC||字符时,需要保存并不断修改dl寄放器的内容,而显示空白、回车、换行符时也需要使用dl寄放器,为此可使用堆栈来保存相继的ASC||字符。具体用法是:在显示空白或回车,换行符前用指令

pushdx把dl的内容保存到堆栈中去。在显示空白或回车,换行符后用指令

popdx恢复dl寄放器的原始内容。

五.选作题目:

(1)设有50个从1开始连续的数,编程序统计它们的偶数和,最终将结果存放在

名字为sum的字存储单中。

(2)将以buf1为起始地址的字节存储区中的内容传送到以buf2为起始地址的字节

存储区中

试验三循环程序设计2

一.试验目的:

学会用循环程序设计进行程序编程。

二.试验题目:

设计查找匹配字符串SEARCH的程序。

三.问题要求:

程序接收用户键入的一个关键字以及一个句子。假使句子中不包含关键字则显

示’nomatch’;假使句子中包含关键字则显示‘match’,且把该字在句子中的位置用十六进制数显示出来,要求程序的执行过程如下:enterkeyword:abc

entersentence:wearestudyingabc

matchatlocation:11Hofthesentenceentersentence:xyz,ok?nomatch

entersentence:^c

四.方法说明:

程序可由三部分组成:

(1)输入关键字和一个句子,分别存入相应的缓冲区中,可用功能调用0AH。(2)在句子中查找关键字。

1.关键字和一个句子中相应字段的比较可使用串比较指令,为此必需定义附加

段,但附加段和数据段可以定义为同一段,以便于串指令的使用,这样,相应的寄放器内容也有了确定的含义,如下:

SI寄放器为关键字的指针

DI寄放器为句子中正相比较的字段的指针CX寄放器存放关键字的字母个数(长度)

2.整个句子和关键字的比较过程可以用一个循环结构来完成。循环次数为:

(句子长度--关键字长度)+1在计算循环次数时,如遇到句子长度小于关键字长度的状况则应转向显示“nomatch〞,循环中还需要用到BX寄放器,它用来保存句子中当前正在比较字段的首地址。

(3)输出信息:

用功能调用09h分“找到〞或“找不到〞两种状况分别显示不同的信息。在“找

到〞时,还要求显示出匹配字符串在句子中的位置,在“找到〞时BX寄放器的内容为匹配字符串的首地址,将此值减到句子的首地址,再将差值加1即是所要的匹配字符串在句子中的位置,可将位置转换为十六进制数从屏幕上显示出来。五.选作题目:

已知在数据区中DATA1和DATA2开始分别存放N个字节数据,请编写一个程序检查两数据块中的数据是否一致,若完全一致,则将标志单元EAG置FFH,否则置0.

试验四分支程序设计

在实际应用的程序中,寻常遇到根据某一条件是否成立来进行规律判断,以便确定程序的下一步执行,这就形成了分支结构程序,在汇编语言程序设计中,分支结构程序设计是一种很重要的程序设计方法.

一.试验目的:

学会用分支程序设计进行程序编程。

二.试验题目:

设计一个程序能分类统计字符个数

三.试验要求:

程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符终止),

并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。

四.方法说明:

程序可采用0AH功能调用把键入字符直接送到缓冲区中,然后再逐个取出分类计数,也可采用01H功能调用在接收字符后先分类计数然后再存入缓冲区中。

程序需进入debug运行并查看计数结果。

五.选作题目:

(1)设有10个学生的成绩分别为68、63、100、98、88、75、82、80、77和56分。试编制程序分别统计低于60分、60—69分、70—79分、8089分、9099分及100分的人数,并存放到s5、s6、s7、s8、s9及s10单元中。

(2)设在变量ADRR为起始地址的字节存储单元中存放有若干个字符,编写程序分别

统计

1.数字字符的个数.2.大写字符的个数.3.小写字符的个数.4.其它字符的个数.

(3)设在变量ADR为起始地址的字节存储单元中存放一组有符号数据,编写程序分别统计

1.正数的个数2.负数的个数3.0的个数

试验五子程序设计

子程序(过程)是程序设计中常用的方法.子程序结构是模块化程序设计的重要工具。设计子程序主要考虑参数传递的方法,参数传递是主程序和子程序之间的接口。

一.试验目的:

学会用子程序设计进行程序编程。

二.试验题目:

设计一个能查找电话号码phone的程序。

三.试验要求:

要求程序建立一个可存放50项的电话号码表,每项包括人名(20个字符)及电

话号码(8个字符)两部分;ii.程序可接收输入人名及相应的电话号码,并把它们参与电话号码表中;iii.凡有新的输入后,程序应按人名对电话号码表重新排序;iv.程序可接收需要查找电话号码的人名,并从电话号码表中查出其电话号码,

再在屏幕上以如下格式显示出来。nametel********i.

四.试验提醒:

程序采用子程序结构,主程序的主要部分如下:

.显示提醒符‘inputname:’;

.调用子程序input_name接收人名;

.调用子程序stor_name把人名存入电话号码表tel_tab中;

.显示提醒符‘inputatelephonenumber:’;

.调用子程序inphone接收电话号码,并把它存入电话号码表tel_tab中;

.如输入已终止则调用name_sort子程序对电话号码表按人名排序;

.显示提醒符‘DOyouwantatelephonenumber?(y/n)’;.回复N则退出程序;

.回复Y则再显示提醒符‘name?’;.调用子程序input_name接收人名;

.调用子程序n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论