汇编语言实验教案Word格式文档下载.docx

上传人:b****6 文档编号:8462269 上传时间:2023-05-11 格式:DOCX 页数:20 大小:21.63KB
下载 相关 举报
汇编语言实验教案Word格式文档下载.docx_第1页
第1页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第2页
第2页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第3页
第3页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第4页
第4页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第5页
第5页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第6页
第6页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第7页
第7页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第8页
第8页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第9页
第9页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第10页
第10页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第11页
第11页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第12页
第12页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第13页
第13页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第14页
第14页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第15页
第15页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第16页
第16页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第17页
第17页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第18页
第18页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第19页
第19页 / 共20页
汇编语言实验教案Word格式文档下载.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编语言实验教案Word格式文档下载.docx

《汇编语言实验教案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编语言实验教案Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。

汇编语言实验教案Word格式文档下载.docx

start:

pushds

subax,ax

pushax

movax,datarea

movds,ax

moves,ax

leasi,string1

leadi,string2

cld

movcx,25

repzcmpsb

jzmatch

leadx,mess2

jmpshortdisp

match:

leadx,mess1

disp:

movah,09

int21h

ret

mainendp

prognamends

endstart

2.对源文件汇编产生目标文件obj

D:

\masm文件名。

3.用连接程序link产生执行文件exe

\link文件名。

Obj

4.执行程序

\文件名

5.使用debug程序调试程序的方法。

d>

debug文件名.exe

_

1.用G命令运行程序

2.用U命令显示程序

3.学会设置断点。

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

5.用E命令修改数据区的字符串。

6.用A命令把数据区的内容恢复原状

7.T命令逐条跟踪程序的执行。

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

六、选作题目:

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

七、重点和难点:

(1)用汇编语言设计、编写、调试和运行程序的方法,熟练掌握与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。

(2)程序的理解,系统功能的调用。

八、注意事项:

i.编辑源程序时,扩展名(asm)一定要写上。

ii.汇编源程序时,源程序一定要是汇编程序,用连接程序link连接的是目标程序(obj),连接成功后,产生可执行文件。

iii.学会找数据段地址。

iv.如果用U命令时,代码段地址不断增加,如要从头显示,可用U00(00为偏移地址)。

v.E2929为偏移地址

vi.F29l9‘forward.’2029为偏移地址.L为要修改的长度。

20是空格的asc||码。

实验二循环程序设计1

一.实验目的:

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

二.实验题目:

用表格形式显示ASC||字符SMASC||

三.实验要求:

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

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

四.方法说明:

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

movah,02h

movdl,0ah

int21h

本题中可把dl初始化为10H,然后不断使其加1(用INC指令)以取得下一个字符的ASC||码。

(2)显示空白符时,用其ASC||码0置入dl寄存器,每行结束时,用显示回车(ASC||为0dh)和换行符(ASC||为oah)来结束本行并开始下一行。

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

具体用法是:

在显示空白或回车,换行符前用指令

pushdx把dl的内容保存到堆栈中去。

在显示空白或回车,换行符后用指令

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

五.选作题目:

设有50个从1开始连续的数,编程序统计它们的偶数和,最后将结果放在名字为sum的字存储单中。

六、重点和难点:

1.程序编程用到双重循环,显示一行字符是内循环;

最后结果显示15行,显示15行用到外循环。

2.显示回车(asc||为0dh)和换行符(asc||为0ah),最好先回车(asc||为0dh)再换行符(asc||为0ah)不然在显示第二个字符串时可能会把第一个字符串覆盖。

七.程序清单:

codesegment

assumecs:

code

start:

pushds;

压栈

subax,ax;

清零

pushax

movbl,00h;

空白符

movcx,100

movdl,10h;

初始输出10h

movah,02h

int21h;

显示输出第一个

incbl;

空白

incdl;

设置下一个元素

pushdx;

推入堆栈

movdl,20h

显示输出

popdx

cmpbl,10h;

比较确定是否已经输出15行元素

jeline;

若还未完成输出,则跳转至line,继续进行下一行元素的输出

loopdisp

jmpshortexit

line:

pushdx

movdl,0dh;

回车

movdl,0ah;

换行

jmpshortdisp

exit:

ret

codeends

八.注意:

1.系统功能的调用

2.空白符的显示,每行结束时,显示回车(ASC||为0dh)和换行符(ASC||为oah)来结束本行并开始下一行。

实验三循环程序设计2

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

查找匹配字符串SEARCH

三.问题要求:

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

如果句子中不包含关键字则显示’nomatch’;

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

enterkeyword:

abc

entersentence:

wearestudyingabc

matchatlocation:

11Hofthesentence

entersentence:

xyz,ok?

nomatch

^c

四.方法说明:

程序可由三部分组成:

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

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

1.关键字和一个句子中相应字段的比较可使用串比较指令,为此必须定义附加段,但附加段和数据段可以定义为同一段,以便于串指令的使用,这样,相应的寄存器内容也有了确定的含义,如下:

SI寄存器为关键字的指针

DI寄存器为句子中正相比较的字段的指针

CX寄存器存放关键字的字母个数(长度)

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

循环次数为:

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

(3)输出信息:

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

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

00010001

00000001

五.选作题目:

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

六.重点和难点:

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

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

(3)该关键字在句子中的位置用十六进制数显示出来

七.程序清单:

datasegment

str1db80,?

80dup(?

str2db80,?

hlo1db13,10,'

enterketword:

$'

hlo2db13,10,'

entersentence:

mes1db13,10,'

matchatlocation:

mes2db13,10,'

nomatch!

mes3db'

hofthesentence,$'

tabdb'

0123456789abcdef'

dataends

progsegment

prog,ds:

data,es:

data

movax,0

movax,data

movds,ax

moves,ax

next:

leadx,hlo1

movah,9

leadx,str1

movah,10;

803abc===========

leadx,hlo2

leadx,str2

806weare

moval,str2+1

subal,str1+1

incal

movbl,al

movbh,1

leasi,str2+2

movdx,si

cld

movah,1

find:

movsi,dx

leadi,str1+2

movcl,str1+1

repzcmpsb

jzmath

incdx

incbh

decbl

jnzfind

nmth:

leadx,mes2

jmpnext

ret

math:

leadx,mes1

moval,bh

andal,0f0h

movcl,4

shral,cl

movah,0

movsi,ax

movdl,tab[si]

movah,2

moval,bh

andal,0fh

leadx,mes3

progends

1.功能调用0AH的使用。

(句子长度--关键字长度)+1

3.在“找到”时BX寄存器的内容为匹配字符串的首地址,将此值减到句子的首地址,再将差值加1即是所要的匹配字符串在句子中的位置,

实验四分支程序设计

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

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

分类统计字符个数

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

四.方法说明:

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

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

五.选作题目:

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

1.正数的个数

2.负数的个数

3.0的个数

(1)按字母、数字及其它字符分类计数

(2)将结果存入以letter、digit和other为名的存储单元中

letterdb0

digitdb0

otherdb0

code,ds:

movletter,0

movdigit,0

movother,0

input:

movah,01h

cmpal,0dh

jzexit

cmpal,'

a'

jbok

z'

jaoth

dkh:

incletter

jmpinput

ok:

cmpal,'

A'

jbhello

Z'

jbdkh

hello:

0'

jboth

9'

incdigit

oth:

incother

exit:

movah,4ch

mainendp

codeends

1.程序如采用0AH功能调用把键入字符直接送到缓冲区中,应逐个取出分类计数

2.如采用01H功能调用,在接收字符后先分类计数然后再存入缓冲区中

3.如程序没有输出,需进入debug运行并查看计数结果

实验五子程序设计

子程序(过程)是程序设计中常用的方法.子程序结构是模块化程序设计的重要工具。

设计子程序主要考虑参数传递的方法,参数传递是主程序和子程序之间的接口。

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

查找电话号码phone

三.实验要求:

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

ii.程序可接收输入人名及相应的电话号码,并把它们加入电话号码表中;

iii.凡有新的输入后,程序应按人名对电话号码表重新排序;

iv.程序可接收需要查找电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上以如下格式显示出来。

nametel

********

四.实验提示:

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

.显示提示符‘inputname:

’;

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

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

.显示提示符‘inputatelephonenumber:

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

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

.显示提示符‘DOyouwantatelephonenumber?

(y/n)’;

.回答N则退出程序;

.回答Y则再显示提示符‘name?

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

.调用子程序name_search在电话号码表中查找所要的电话号码;

.调用子程序printline按要求格式显示人名及电话号码;

.重复查号提示符直至用户不再要求查号为止。

五.选作题目:

编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字的grade数组中,其中grade+i保存学号为i+1的学生的成绩.然后根据grade中的学生成绩,把学生名次填入50字的rank数组中,其中rank+I的内容是学号为I+1学生的名次,再按学号顺序把名次从终端上显示出来.

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

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

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

(4)程序可接收需要查找电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上显示出来。

bufnamedb40,?

38dup(0),13,10,'

buftabdb20,?

20dup(0)

hello1db13,10,'

pleaseinputname:

hello2db13,10,'

pleaseinputatlephonenumber:

hello3db13,10,'

[(i..inputdata)\\(f..findtel.)\\(e..exit)]'

'

hellddb13,10,'

nametelphone'

13,10,'

tboverdb13,10,'

tablealreadyover'

tbtopdb?

tbnumdb?

tabledb50dup(20dup(0),8dup(0))

pushds

movtbtop,0

begin:

leadx,hello3

movah,09h

movah,01h

i'

jnzdisp

input:

moval,tbtop

cmpal,50

jnctabov

callinname

callintele

callstore

jmpshortbegin

disp:

f'

jnznext

callfind

e'

tabov:

leadx,tbover

innameprocnear

leadx,hello1

leadx,bufname

movah,10

innameendp

inteleprocnear

leadx,hello2

leadx,buftab

inteleendp

storeprocnear

pushcx

pushsi

pushdi

movah,tbtop

moval,28

mulah

leadi,table

adddi,ax

leasi,bufname+2

movcl,bufname+1

movch,0

repmovsb

popdi

adddi,20

leasi,buftab+2

movcl,buftab+1

inctbtop

popsi

popcx

storeendp

findprocnear

pushbx

movtbnum,al

leasi,table

movbx,si

finds:

leadi,bufname+2

movsi,bx

jzfinde

addbx,28

jmpfinds

finde:

leadx,helld

movcx,28

leadx,bufname+2

findx:

po

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

当前位置:首页 > 人文社科 > 广告传媒

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

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