南昌大学微型计算机原理与接口技术实验报告.docx
- 文档编号:7389146
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:18
- 大小:209.36KB
南昌大学微型计算机原理与接口技术实验报告.docx
《南昌大学微型计算机原理与接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《南昌大学微型计算机原理与接口技术实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
南昌大学微型计算机原理与接口技术实验报告
实验报告
实验课程:
微型计算机原理与接口技术
学生姓名:
学号:
专业班级:
自动化081班
2011年6月14日
目录
实验一汇编语言程序设计开发环境
实验二BCD数运算与十进制调整
实验三键盘输入并回显
实验四字符串匹配
实验五子程序设计(计算N!
)
实验六中断程序设计
实验一汇编语言程序设计开发环境
实验目的:
1、熟悉汇编语言设计开发环境
2、巩固对程序基本结构的认识
3、学会使用debug命令查看结果
实验步骤:
1、打开电脑在系统选择界面,选择DOS操作系统
2、通过键盘输入TC,进入TC操作界面。
在TC操作见面,新建文件,将实验程序写入文件中,然后保存为.asm文件。
退出TC操作界面
2、在DOS操作界面,写入masm,和刚才的ASM文件名,产生目标文件
4、调用link文件,链接目标文件,产生可执行文件
5、键入DEBUGEX_MOVS。
debug一短划线来回答。
我们的目的是要察看我们程序的运行结果,因此我们希望启动程序运行后应停在返回DOS以前,为此我们可先用反汇编命令U来确定我们所要的断点地址。
实验内容:
要求:
把40个字母a的字符串从源缓冲区传送到目的缓冲区。
程序如下:
datasegment;definedatasegment
source_bufferdb40dup('a')
dataends
extrasegment;defineextrasegment
dest_bufferdb40dup(?
)
extraends
codesegment;definecodesegment
mainprocfar;mainpartofprogram
assumecs:
code,ds:
data,es:
extra
start:
;startingexecutionaddress
;setupstackforreturn
pushds;saveolddatasegment
subax,ax;putzeroinAX
pushax;saveitonstack
;setDSregistertocurrentdatasegment
movax,data;datasegmentaddr
movds,ax;intoDOSregister
;setESregistertocurrentextrasegment
movax,extra;extrasegmentaddr
moves,ax;intoESregister
;MAINPARTOFPROGRAMGOESHERE
leasi,source_buffer;putoffsetaddrofsource
;bufferinSI
leadi,dest_buffer;putoffsetaddrofdest
;bufferinDI
cld;setDFflagtoforward
movcx,40;putcountinCX
repmovsb;moveentirestring
ret;returntoDOS
mainendp;endofmainpartofprogram
codeends;endofcodesegment
endstart;endassembly
上机调试结果如下:
1、输入指令masmex_movs输出结果如下:
2、用LINK产生exe文件
3、程序的执行,用反汇编命令U来确定所要设定的断点地址
4、用G命令使程序运行,查看运行结果
实验心得:
通过此次实验,了解了汇编语言的上机环境以及上机过程,同时学会了如何通过指令来处理调试程序以及查找、修改程序中的错误,最终得到我们想要的实验结果。
实验二、BCD数运算与十进制调整
实验目的:
1、熟悉BCD码的基本知识
2、熟悉汇编语言BCD码多字节加减法基本指令的使用方法;
3、掌握BCD码调整指令的使用方法。
实验原理:
BCD码也叫8421码就是将十进制的数以8421的形式展开成二进制。
BCD码的运算规则:
BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。
这样,当将BCD码传送给运算器进行运算时,其结果需要修正。
修正的规则是:
当两个BCD码相加,如果和等于或小于1001(即十进制数9),不需要修正;如果相加之和在1010到1111(即十六进制数0AH~0FH)之间,则需加6进行修正;如果相加时,本位产生了进位,也需加6进行修正。
这样做的原因是,机器按二进制相加,所以4位二进制数相加时,是按“逢十六进一”的原则进行运算的,而实质上是2个十进制数相加,应该按“逢十进一”的原则相加,16与10相差6,所以当和超过9或有进位时,都要加6进行修正。
实验内容:
4位BCD码相加,实验程序如下:
STACKSEGMENTSTACK
DB100DUP(?
)
STACKENDS
DATASEGMENT
X1DB4DUP(?
)
X2DB4DUP(?
)
X3DB5DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
MAINPROC
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETX1
MOVCX,4
NEXT1:
CALLINPUT
ANDAL,0FH
MOV[BX],AL
INCBX
LOOPNEXT1
MOVAH,2
MOVDL,'+'
INT21H
MOVBX,OFFSETX2
MOVCX,4
NEXT2:
CALLINPUT
ANDAL,0FH
MOV[BX],AL
INCBX
LOOPNEXT2
MOVAH,2
MOVDL,'='
INT21H
MOVSI,OFFSETX1+3
MOVDI,OFFSETX2+3
MOVBX,OFFSETX3+4
MOVCX,4
ORCX,CX
NEXT3:
MOVAL,[SI]
ADCAL,[DI]
AAA
MOV[BX],AL
DECSI
DECDI
DECBX
LOOPNEXT3
MOVAL,0
ADCAL,AL
MOV[BX],AL
MOVCX,5
NEXT4:
MOVDL,[BX]
ADDDL,30H
MOVAH,2
INT21H
INCBX
LOOPNEXT4
MOVAH,4CH
INT21H
MAINENDP
INPUTPROC
AGAIN:
MOVAH,8
INT21H
CMPAL,'0'
JBAGAIN
CMPAL,'9'
JAAGAIN
MOVAH,2
MOVDL,AL
INT21H
RET
INPUTENDP
CODEENDS
ENDMAIN
调试结果如下:
1235和5689是从键盘中输入的4位非压缩的BCD码,06294为调整后的相加结果。
实验心得:
加深了自己对BCD码得认识,对其运算法则有了更深刻的了解。
巩固了自己的基础理论知识,通过实验,我对汇编语言编程也有了一定的了解,不像以前那样生疏。
实验三、键盘输入与回显
实验目的:
1、熟悉DOS功能的9号功能,从键盘输入并在显示器上显示字符串
2、熟悉DOS功能调用指令INT21H
实验原理:
1、单字符输入
功能号1、7和8都可以接收键盘输入的单字符串,输入字符以ASCII码形式存放在累加器AL中。
其中7号和8号功能无回显。
2、字符串输入
输入字符串可以通过调用DOS功能的0AH号功能实现。
3、单字符显示
在显示器上显示的内容都是字符形式,如果是数字,则一定是其对应的ASCII码。
要将一个字符串送到显示器显示,可调用DOS功能的2、6、9号功能实现。
其中2、6用于显示单个字符,功能9显示一个字符串。
4、字符串显示
要在显示器上显示字符串,可调用DOS功能的9号功能,该功能要求被显示的字符串必须以“$”字符作为结束符,否则会引起屏幕混乱。
5、返回DOS
用4CH号功能返回DOS的程序段:
MOVAH,4CH
INT21H
实验内容:
从键盘读入一串字符,在字符串尾插入一个“$”,并显示该字符。
实验程序如下:
DATASEGMENT
JICUNDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,1
INT21H
MOVJICUN,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果如下:
实验心得:
在字符串显示的功能调用中,要求被显示的字符串必须以“$”字符结尾,在调试中忽略了这个问题,造成了屏幕混乱。
实验四、字符串匹配
实验目的:
1.掌握变量的基本使用方法。
2.掌握字符串的输入输出方法的使用。
3.掌握数据段的定义方式。
实验内容:
编程接收用户从键盘键入的一个关键字以及一个句子,如果句子中不包含关键字则显示‘Nomatch!
’,如果句子中含有关键字则显示‘Match!
’,并把该字在句子中的位置用十六进制数显示出来。
实验程序如下:
DATASEGMENT
STR1DB'NHALLO$'
NEQU$-STR1
MESSDB'NOMATCH!
$'
DATAENDS
DATA1SEGMENT
STR2DB'HELLOA$'
MEQU$-STR2
DATA1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA1
START:
MOVAX,DATA
MOVDS,AX
MOVAX,DATA1
MOVES,AX
MOVAL,N
CMPAL,M
JNZEXIT
LEASI,STR1
LEADI,STR2
MOVCL,N
MOVCH,0
CLD
REPECMPSB
JNZEXIT
LEADX,STR1
JMPL1
EXIT:
LEADX,MESS
L1:
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果如下:
实验心得:
本实验中在进行字符串比较时从字符串长度和个对应的字符两方面来比较。
先判断字符串的长度,长度不相同,则字符串不匹配;若长度相同,再逐个比较相对应的字符,只有两字符串完全相等时,才输出字符串信息,否则显示“NOMATCH!
”
实验五、子程序设计(计算N!
)
实验目的:
1、通过调用求N!
的子程序求一个数的阶乘
2、掌握子程序的设计方法,调用方法,返回方法
3、学会一种算法:
递归调用
实验内容:
堆栈保护及递归算法,用递归算法计算3!
,实验程序如下:
DATASEGMENT
NDW3
RESULTDW?
DATAENDS
STACKSEGSEGMENT
DW128DUP(0)
TOSLABELWORD
STACKSEGENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,SS:
STACKSEG
START:
MOVAX,STACKSEG
MOVSS,AX
MOVSP,OFFSETTOS
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVBX,N
PUSHBX
CALLFACT
POPRESULT
RET
MAINENDP
FACTPROCNEAR
PUSHAX
PUSHBP
MOVAX,[BP+6]
CMPAX,0
JNZFACT1
INCAX
JMPEXIT
FACT1:
DECAX
PUSHAX
CALLFACT
POPAX
MOVDX,[BP+6]
MULDX
EXIT:
MOV[BP+6],AX
POPBP
POPAX
RET
FACTENDP
CODEENDS
ENDSTART
程序运行结果如下:
程序中要计算的是3!
,在数据段查看的结果如下图:
查看堆栈段:
实验心得:
这个程序,输入只能是3以下而且输出也是ASCⅡ,所以在算完之后要在屏幕上显示,还要转换成ASCⅡ,否则就是乱码
实验六、中断程序设计
实验目的:
1、熟悉中断的相关知识;
2、熟悉中断向量的功能调用;
3、掌握中断处理程序的设计方法。
实验内容:
编写一个程序实现每10S响铃一次,并在屏幕上显示“Thebellisringing!
”
实验程序如下:
DSEGSEGMENT
COUNTDW1
MESSDB‘THEBELLISRINGING!
’,0DH,0AH,’$’
DSEGENDS
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:
CSEG,DS:
DSEG
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
MOVAL,1CH
MOVAH,35H
INT21H
PUSHES
PUSHBX
PUSHDS
MOVDX,OFFSETRING
MOVAX,SEGRING
MOVDS,AX
MOVAX,251CH
INT21H
POPDS
INAL,21H
ANDAL,11111110B
OUT21H,AL
STI
MOVDI,2000
DELAY1:
MOVSI,3000
DELAY2:
DECSI
JNZDELAY2
DECDI
JNZDELAY1
POPDX
POPDS
MOVAL,1CH
MOVAH,25H
INT21H
RET
MAINENDP
RINGPROCFAR
PUSHDS
PUSHAX
PUSHCX
PUSHDX
MOVAX,DSEG
MOVDS,AX
STI
DECCOUNT
JNZEXIT
MOVDX,OFFSETMESS
MOVAH,09H
INT21H
MOVDL,07H
MOVAH,02H
INT21H
MOVCOUNT,182
EXIT:
CLI
POPDX
POPCX
POPAX
POPDS
IRET
RINGENDP
CSEGENDS
ENDSTART
程序运行结果如下:
实验心得:
本实验做的是中断程序设计,通过此次实验,对中断服务子程序的设计有了更深的了解。
这是我们做的最后一个实验,通过这几次实验,我的运用汇编语言编程的能力有了很大的提高,获益颇丰。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 微型计算机 原理 接口 技术 实验 报告