汇编实验报告.docx

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

汇编实验报告.docx

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

汇编实验报告.docx

汇编实验报告

南华大学

计算机科学与技术学院

实验报告

(2012~2013学年度第二学期)

课程名称

汇编语言与接口技术

实验名称

汇编实验

 

姓名

Xx

学号

Xx

专业

软件工程

班级

11软卓01班

地点

八教

教师

Xx

实验一用表格形式显示字符 

1、 题目

用表格形式显示ASCII字符 

2、 实验要求

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

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

 

3、 提示:

⑴ 显示每个字符可使用功能号为2的显示输出功能调用               

MOV AH,2               

MOV DL,10H;字符从10H开始,每显示一个DL+1产生下一个字符              

INT  21H 

⑵ 显示空白符时DL=00H; 

⑶ 每行显示结束时需要显示回车(ASCII码为0DH)和换行(ASCII码为0AH),本行显示结束后可另起一行显示。

4、源代码

2.1.asm

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

;此处输入代码段代码

MOVDL,10H

MOVCX,15

C1:

PUSHCX

MOVCX,16

C2:

MOVAH,02H

INT21H

INCDL

PUSHDX

MOVDL,20H

MOVAH,02H

INT21H

POPDX

LOOPC2

PUSHDX

MOVDL,0DH

MOVAH,02H

INT21H

MOVDX,0AH

MOVAH,02D

INT21H

POPDX

POPCX

LOOPC1

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

5、实验结果

6、实验总结

这是从接触到汇编到自己开始写的第一个汇编程序,开始时不知如何下手,参考了别人的程序后,自己重新整理思路,才写出了这个程序,是一个开始。

实验二查找匹配字符串 

1、题目

查找匹配字符串SEARCH

2、实验要求

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

”;如果句子中包含关键字则显示“Match”,且把该字在句子中的位置用十六进制数显示出来。

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

 

Enter keyword:

abc 

Enter sentence:

We are studying abc. 

Match at location:

11H of the sentence. Enter keyword:

xyz 

Enter sentense:

We are studying abc No match!

 Enter keyword:

^C  

3、提示:

程序可由三部分组成:

 

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

可用DOS功能调用0AH,使用方法如下:

 

① 字符缓冲区定义格式如下:

  

 maxlen db 32   actlen db ?

 

  string db 32 dup(?

) 

缓冲区的第一个字节定义字符的最大个数;第二个字节为实际输入的字符个数,该数据由OAH功能根据用户实际输入自动计算并填入。

在这两个字节后,存放输入的字符串,字符串以回车(0DH)结束,但回车符不作实际输入字符的个数。

 

② 输入字符串程序段如下:

   

LEA DX,MAXLEN 

MOV AH,0AH   

INT 21H 

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

4、源代码

2.2.asm

DATASEGMENT

mess1db'Enterkeyword:

','$'

mess2db'EnterSentence:

','$'

mess3db'Nomatch!

',13,10,'$'

mess4db'Matchatlocation:

','$'

mess5db'Hofthesentence.',13,10,'$'

changedb13,10,'$'

sen1labelbyte

max1db14

act1db?

stokn1db14dup(?

sen2labelbyte

max2db100

act2db?

stokn2db100dup(?

DATAENDS

CODESEGMENT

mainprocfar

assumecs:

code,ds:

data,es:

data

START:

movax,data

movds,ax

moves,ax

leadx,mess1

movah,09h

int21h

leadx,sen1

movah,0ah

int21h

leadx,change

movah,09h

int21h

subcx,cx

a10:

leadx,mess2

movah,09h

int21h

leadx,sen2

movah,0ah

int21h

leadx,change

movah,09h

int21h

cmpact2,0

jeexit

movbx,0

a20:

movcl,[act1]

leasi,stokn1

leaax,stokn2

addal,bl

movdi,ax

cld

repcmpsb

jza30

incbl

cmpbl,act2

jea40

jmpa20

a30:

leadx,mess4

movah,09h

int21h

movah,02h

addbl,1

movcl,4

moval,bl

rolal,cl

movcl,2

jmpa50

a1:

leadx,mess5

movah,09h

int21h

jmpa10

a40:

leadx,mess3

movah,09h

int21h

jmpa10

a50:

deccl

andal,0fh

cmpal,10

jnba60

addal,'0'

a2:

movdl,al

movah,02h

int21h

cmpcl,0

jea1

moval,bl

jmpa50

a60:

subal,10

addal,'a'

jmpa2

exit:

ret

mainendp

CODEENDS

ENDSTART

5、实验结果

6、实验总结

这个实验比较难,查了好多东西,差不多懂了个大概,至少能把这个程序读懂,能够单独编写出来,自己的汇编水平真是提高了不少!

实验三统计学生成绩result 

1、题目

统计学生成绩result。

2、实验要求

设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。

试编制程序分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并分别存放到s5、s6、s7、s8、s9及s10单元中。

3、源代码

2.3.asm

DATASSEGMENT

;此处输入数据段代码

GRADEDW56,69,84,83,73,88,99,63,100,80

S5DB0

S6DB0

S7DB0

S8DB0

S9DB0

S10DB0

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATAS

MOVDS,AX

MOVS5,0

MOVS6,0

MOVS7,0

MOVS8,0

MOVS9,0

MOVS10,0

MOVCX,10

MOVBX,OFFSETGRADE

COMPARE:

MOVAX,[BX]

CMPAX,60

JLFIVE

CMPAX,70

JLSIX

CMPAX,80

JLSEVEN

CMPAX,90

JLEIGHT

CMPAX,100

JNENINE

INCS10

JMPSHORTCHANGE_ADDR

NINE:

INCS9

JMPSHORTCHANGE_ADDR

EIGHT:

INCS8

JMPSHORTCHANGE_ADDR

SEVEN:

INCS7

JMPSHORTCHANGE_ADDR

SIX:

INCS6

JMPSHORTCHANGE_ADDR

FIVE:

INCS5

JMPSHORTCHANGE_ADDR

CHANGE_ADDR:

ADDBX,2

LOOPCOMPARE

SUBAX,AX;输出S5<60

ADDAL,S5

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVDL,0

MOVAH,02H

INT21H

SUBAX,AX;输出S6<70

ADDAL,S6

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVDL,0

MOVAH,02H

INT21H

SUBAX,AX;输出S7<80

ADDAL,S7

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVDL,0

MOVAH,02H

INT21H

SUBAX,AX;输出S8<90

ADDAL,S8

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVDL,0

MOVAH,02H

INT21H

SUBAX,AX;输出S9<100

ADDAL,S9

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVDL,0

MOVAH,02H

INT21H

SUBAX,AX;输出S10=100

ADDAL,S10

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

MOVDX,0AH

MOVAH,02D

INT21H

MOVAH,4CH

INT21H

RET

CODESENDS

ENDSTART

4、实验结果

5、实验总结

这是一个比较简单的实验,通过简单的语句就可以实现题目所需的功能。

实验四十六进制转二进制

1、题目

十六进制转换为二进制。

2、实验要求

试编写一汇编程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。

3、源代码

5.9.asm

DATASSEGMENT

;此处输入数据段代码

SENDB'Enternum:

','$'

RESULTDB'Theresult:

','$'

NEXTLINEDB13,10,'$'

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

;此处输入代码段代码

LEADX,SEN

MOVAH,09H

INT21H

MOVBX,0

MOVCH,4

MOVCL,4

GETIN:

SHLBX,CL

MOVAH,1

INT21H

CMPAL,30H

JBGETIN

CMPAL,39H

JAJUDGEAF

ANDAL,0FH

JMPBINARY

JUDGEAF:

ANDAL,11011111B

CMPAL,41H

JBGETIN

CMPAL,46H

JAGETIN

ANDAL,0FH

ADDAL,9

BINARY:

ORBL,AL

DECCH

JNZGETIN

LEADX,NEXTLINE

MOVAH,09H

INT21H

LEADX,RESULT

MOVAH,09H

INT21H

DISPN:

MOVCX,16

DISP:

MOVDL,0

ROLBX,1

RCLDL,1

ORDL,30H

MOVAH,2

INT21H

LOOPDISP

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

4、实验结果

5、实验总结

这个实验是老师在实验课堂上布置的,记得当初在做实验时,自己没能在规定的时间内做完,这个实验是在课后自己慢慢弄出来的,实验虽然简单,但好多逻辑问题必须得想清楚才能继续做下去。

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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