南邮微机原理实验报告资料.docx
《南邮微机原理实验报告资料.docx》由会员分享,可在线阅读,更多相关《南邮微机原理实验报告资料.docx(15页珍藏版)》请在冰豆网上搜索。
南邮微机原理实验报告资料
《微型计算机原理与接口技术》
上机实验
学院:
电子科学与工程
专业:
电磁场与无线技术
姓名:
陈秀慧
课程号:
B0300062S
学号:
B14020604
任课老师:
欧晓鸥
2016年3月21日
一、实验目的
熟悉第四章汇编语言程序设计中简化段定义格式,汇编语言循环结构的实现,DOS功能的调用等功能,以及算术运算程序设计中字符串处理程序设计中内容的显示,十六进制ASCII码与各数值的转化,比较搜索等命令。
二、实验任务
1.在微型计算机上用汇编语言编程完成实验内容所规定的实验;
2.记录源代码和程序调试过程;
3.完成实验报告。
三、主要仪器设备
硬件:
微型计算机
软件:
未来汇编
四、实验内容
上机题1.显示5行HELLO
源程序:
.486
DATASEGMENTUSE16
MESGDB'HELLO'
DB0,0,0
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,5
LL1:
MOVMESG+5,0DH
MOVMESG+6,0AH
MOVMESG+7,'$'
CALLDISP
MOVMESG+5,0
MOVMESG+6,0
MOVMESG+7,0
LOOPLL1
MOVAH,4CH
INT21H
DISPPROC
MOVAH,9
MOVDX,OFFSETMESG
INT21H
RET
DISPENDP
CODEENDS
ENDBEG
运行结果:
上机题2.询问用户姓名并等待输入,用户输入姓名后按回车键程序再把输入的姓名复制显示在屏幕上
源程序:
.586
DATASEGMENTUSE16
MESGDB'Whatisyourname?
$'
MESG2DB'?
(Y/N)$'
BUFDB30
DB?
DB30DUP(?
)
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
AGAIN:
MOVAH,9
MOVDX,OFFSETMESG
INT21H
MOVAH,0AH
MOVDX,OFFSETBUF
INT21H
MOVAH,2
MOVDL,0AH
INT21H
MOVBL,BUF+1
MOVBH,0
MOVSI,OFFSETBUF+2
MOVBYTEPTR[BX+SI],'$'
MOVAH,2
MOVDL,0AH
INT21H
MOVAH,9
MOVDX,OFFSETBUF+2
INT21H
MOVAH,9
MOVDX,OFFSETMESG2
INT21H
MOVAH,1
INT21H
CMPAL,'Y'
JNEAGAIN
MOVAH,4CH
INT21H
CODEENDS
ENDBEG
运行结果:
上机题3.从键盘输入的一位十六进制ASCII码→二进制数显示
源程序:
DATASEGMENTUSE16
MESGDB'PleaseEnter!
',0DH,0AH,'$'
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
MOVAH,9
MOVDX,OFFSETMESG
INT21H
MOVAH,1
INT21H
CMPAL,3AH
JCNEXT1
SUBAL,7H
NEXT1:
SUBAL,30H
MOVBL,AL
MOVAH,2
MOVDL,'='
INT21H
CALLDISP
MOVAH,2
MOVDL,'B'
INT21H
EXIT:
MOVAH,4CH
INT21H
DISPPROC
MOVCX,8
LAST:
MOVDL,'0'
RCLBL,1
JNCNEXT2
MOVDL,'1'
NEXT2:
MOVAH,2
INT21H
LOOPLAST
RET
DISPENDP
CODEENDS
ENDBEG
运行结果:
上机题4.字符串比较
比较从键盘输入的字符串STR1,和数据段中定义的字符串STR2是否相等。
若相等,则置FLAG单元为‘Y’,不相等则置为‘N’。
源程序:
.586
DATASEGMENTUSE16
STR1DB30,?
30DUP(?
)
FLAGDB'N'
DATAENDS
EXTRASEGMENTUSE16
STR2DB'WELCOME'
COUNTEQU$-STR2
EXTRAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA,ES:
EXTRA
BEG:
MOVAX,DATA
MOVDS,AX
MOVAX,EXTRA
MOVES,AX
MOVCX,COUNT
MOVAH,0AH
MOVDX,OFFSETSTR1
INT21H
MOVCL,STR1+1
MOVCH,0
CMPCX,COUNT
JNZEXIT
MOVSI,OFFSETSTR1+2
MOVDI,OFFSETSTR2
CLD
LOAD:
REPECMPSB
JNZEXIT
MOVFLAG,'Y'
EXIT:
MOVAH,2
MOVDL,0AH
INT21H
MOVAH,09H
MOVDX,OFFSETFLAG
MOVAH,4CH
INT21H
CODEENDS
ENDBEG
运行结果:
上机题5.数据查找
设从BUF单元开始,存有一字符串,找出其中ASCII码最小和最大的字符,并送屏幕显示。
源程序:
.586
DATASEGMENTUSE16
BUFDB'DLSIEFLIEFAWOKFADL'
COUNTEQU$-BUF
MAXDB'MAX=',?
0DH,0AH
DB'$'
MINDB'MIN=',?
DB'$'
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
MOVAL,BUF
MOVMAX+4,AL
MOVMIN+4,AL
MOVBX,OFFSETBUF+1
MOVCX,COUNT-1
LAST:
MOVAL,[BX]
CMPAL,MAX+4
JNALESS
MOVMAX+4,AL
LESS:
CMPAL,MIN+4
JNCNEXT
MOVMIN+4,AL
NEXT:
INCBX
LOOPLAST
MOVAH,9
MOVDX,OFFSETMAX
INT21H
MOVAH,9
MOVDX,OFFSETMIN
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDBEG
运行结果:
上机题6.字符串中关键字符的搜索
假设从STRING单元开始有一字符串,从键盘输入一个关键字符,查找字符串中是否存在输入的关键字符,将搜索到的关键字符的个数存放在内存NUM单元,并将每一个搜索到的关键字符在字符串中的位置信息存放到POINTER开始的内存单元。
源程序:
.586
DISPMACROVAR
MOVAH,9
MOVDX,OFFSETVAR
INT21H
ENDM
DATASEGMENTUSE16
STRINGDB'BASICFORTRAN_77C++FOXPROJAVA'
LENSEQU$-STRING
POINTERDWLENSDUP(0)
FLAGDB0
MESGYDB0DH,0AH,'------Found!
$'
MESGNDB0DH,0AH,'------NotFound!
$'
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAH,1
INT21H
MOVBX,OFFSETPOINTER
MOVDI,OFFSETSTRING
MOVCX,LENS
CLD
AGA:
REPNESCASB
JNZNEXT
MOVFLAG,1
MOVSI,DI
DECSI
MOV[BX],SI
ADDBX,2
JMPAGA
NEXT:
CMPFLAG,1
JZFOUND
NOFOUND:
DISPMESGN
JMPEXIT
FOUND:
DISPMESGY
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDBEG
CODEENDS
ENDBEG
运行结果:
五、实验思考题
字符串比较中显示比较的结果:
FLAGDB'N'
EXIT:
MOVAH,2
MOVDL,0AH
INT21H
MOVAH,09H
MOVDX,OFFSETFLAG
但是发现键入字符串中会多出‘Y’或者‘N’输入正确出Y错误为N,后来发现是FLAG的显示结果与键入字符串连在了一起不方便观察故加入换行符$修改为:
FLAGDB'N$'
显示结果:
六、实验小结
通过该上机实验,掌握了汇编语言程序设计的基本过程及其各阶段的基本任务,了解其生成过程及其相关的技术对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。
通过把书上例题的程序段在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对那些本来很陌生的言语有了更深的理解,知道和理解了题干要求的指标在计算机中是怎样执行的,对这门课程在实践中的应用有深刻的理解。
七、教师评阅
日期: