单片机实验14.docx
- 文档编号:11969411
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:18
- 大小:18.22KB
单片机实验14.docx
《单片机实验14.docx》由会员分享,可在线阅读,更多相关《单片机实验14.docx(18页珍藏版)》请在冰豆网上搜索。
单片机实验14
第四章实验内容
实验一数码转换程序
一.单字节十六进制到BCD码的转换
1.实验目的:
熟悉8051汇编语言的编制、调试。
2.编制说明:
将十六进制数除以一百得百位BCD码,余数除以十得十位BCD码,再得余数为个位BCD码。
3.操作说明:
将原文件在编辑器中进行编辑,编辑后回到主介面,成立工程文件,将原文件插入工程文件中,编译连接生成可执行文件。
假设编译连接成功,打开寄放器窗口,在R2中输入八位无符号十六进制数,单步或设断点运行程序,并检查运行结果。
(运行结果在R六、R5中寄存)
4.程序清单:
NAMEBCD1
CSEGAT0000H
LJMPBCD1
CSEGAT4100H
BCD1:
MOVA,R2
MOVB,#64H
DIVAB
MOVR6,A
MOVA,#0AH
XCHA,B
DIVAB
SWAPA
ADDA,B
MOVR5,A
NOP
END
5.实验步骤
①编辑源程序、成立工程文件、编译连接生成可执行程序
②在R2中输入八位无符号十六进制整数
③单步执行程序,记录每条指令执行后有关寄放器和PSW中内容
④给R2中输入五组不同参数,改用设断点持续执行程序,自行设计表格记录程序执行后A、B、PSW、R5和R6中内容
二.双字节十六进制到BCD码的转换
1.编制说明:
因为:
(a15a14...a1a0)2=(...(0*2+a15)*2+a14...)+a0
因此,将十六进制数从最高位逐次左移入BCD码寄放器的最低位,而且每次都实现(...)*2+ai的运算,共循环十六次,由R7操纵。
2.操作说明:
操作说明同上。
入口:
R3、R2(为十六位无符号十六进制整数)。
出口:
R6(万位)、R5(千位、百位)、R4(十位、个位)寄存五位BCD码。
3.程序清单
NAMEBCD2
CSEGAT0000H
LJMPBCD2
CSEGAT4100H
BCD2:
CLRA
MOVR4,A
MOVR5,A
MOVR6,A
MOVR7,#10H
LPO:
CLRC
MOVA,R2
RLCA
MOVR2,A
MOVA,R3
RLCA
MOVR3,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R6
ADDCA,R6
DAA
MOVR6,A
DJNZR7,LPO
NOP
END
4.实验步骤
①编辑源程序、成立工程文件、编译连接生成可执行程序
②在R3、R2中输入双字节无符号十六进制整数
③单步执行程序,每次在DAA指令前,检查和记录A内容和PSW中标志位(要紧为Cy和AC标志)的状态;在DAA指令后仍检查和记录A内容和标志位的状态。
从而深切了解DAA指令是依照什么调整和如何调整的,如此单步执行循环七次,然后持续执行。
④给R3、R2中输入五组不同参数,改用设断点持续执行程序,自行设计表格记录程序执行后R六、R5和R4中内容
DAA指令只对什么寄放器起作用?
DAA指令安排在程序何处,才能取得正确结果?
三.双字节BCD码到十六进制的转换
1.编制说明:
因为:
(d3d2d1d0)BCD=(d3*10+d2)*100+(d1*10+d0)
因此,di+1*10+di的运算可由子程序BCD2B完成。
2.操作说明:
操作说明同一。
入口:
将BCD装入R5(千位、百位)、R4(十位、个位)。
出口:
R五、R4(为四位无符号十六进制整数)。
3.程序清单
NAMEBCD3
CSEGAT0000H
LJMPBCD3
CSEGAT4100H
BCD3:
MOVA,R5
MOVR2,A
ACALLBCD2B
MOVB,#64H
MULAB
MOVR6,A
XCHA,B
MOVR5,A
MOVA,R4
MOVR2,A
ACALLBCD2B
ADDA,R6
MOVR4,A
MOVA,R5
ADDCA,#00H
MOVR5,A
NOP
RET
BCD2B:
MOVA,R2
ANLA,#0F0H
SWAPA
MOVB,#0AH
MULAB
MOVR3,A
MOVA,R2
ANLA,#0FH
ADDA,R3
MOVR2,A
RET
END
4.实验步骤
①编辑源程序、成立工程文件、编译连接生成可执行程序
②在R五、R4中输入BCD码
③断点设在第一个ACALLBCD2B,检查和记录在ACALLBCD2B指令执行前后,堆栈指针SP、堆栈中内容及程序计数器PC中内容。
④断点设在第二个ACALLBCD2B,检查和记录在ACALLBCD2B指令执行前后,堆栈指针SP、堆栈中内容及程序计数器PC中内容。
⑤给R五、R4中输入五组不同参数,改用设断点持续执行程序,自行设计表格记录程序执行后R5和R4中内容
5.试探题
SP表示什么,有几位,作用是什么?
本实验系统复位后SP中内容是什么?
实验二双字节有符号数加、减法
一、双字节无符号数加法程序
1.实验目的:
进一步熟悉MCS-51的指令系统,把握汇编语言的程序设计方式。
2.编制说明:
补码表示的数能够直接相加,因此双字节无符号数加、减程序也适用于补码的加、减法。
3.操作说明:
入口:
将(R二、R3)和(R六、R7)别离装入双字节无符号数,然后相加。
出口:
相加结果送入R4、R5。
4.程序清单:
NAMENADD
CSEGAT0000H
LJMPNADD
CSEGAT4100H
NADD:
MOVA,R3
ADDA,R7
MOVR5,A
MOVA,R2
ADDCA,R6
MOVR4,A
NOP
RET
END
5.实验步骤
①编辑源程序、成立工程文件、编译连接生成可执行程序
②在(R二、R3)和(R六、R7)中装入双字节无符号数
③单步执行程序,记录每条指令执行后有关寄放器和PSW中内容
④给(R二、R3)和(R六、R7)中输入五组不同参数,改用设断点持续执行程序,自行设计表格记录程序执行后A、PSW、R4和R5中内容
6.试探题
ADD、ADDC指令有什么异同?
是不是能将这两条指令的位置互换?
二、双字节无符号数减法程序
1.操作说明:
入口:
将(R二、R3)和(R六、R7)别离装入双字节无符号数,然后相减。
出口:
相加结果送入R4、R5。
2.程序清单:
NAMENSUB1
CSEGAT0000H
LJMPNSUB1
CSEGAT4200H
NSUB1:
MOVA,R3
CLRC
SUBBA,R7
MOVR5,A
MOVA,R2
SUBBA,R6
MOVR4,A
NOP
RET
END
3.实验步骤
同双字节无符号数加法程序
4.试探题
什么缘故第一条SUBB指令前加CLRC指令?
而第二条SUBB指令前不加CLRC指令?
三、双字节原码有符号数加、减程序
1.编制说明:
关于原码表示的数,不能直接执行加、减运算,必需先按操作数的符号决定运算种类,然后再对数值部份执行操作。
2.操作说明:
入口:
将(R二、R3)和(R六、R7)别离装入双字节原码表示的数,最高位为符号位,然后求(R二、R3)±(R六、R7),其中DADD为原码加方式程序入口,NAS为原码减方式程序入口。
出口:
相加减的结果送入R4、R5,Cy=1发生溢出,Cy=0为正常。
3.程序清单:
NAMENAS
CSEGAT0000H
LJMPNAS
CSEGAT4300H
NAS:
MOVA,R6
CPL
MOVR6,A
DADD:
MOVA,R2
MOVC,
MOVF0,C
XRLA,R6
MOVC,
MOVA,R2
CLR
MOVR2,A
MOVA,R6
CLR
MOVR6,A
JCDAB2
ACALLNADD
MOVA,R4
JB,DABE
DAB1:
MOVC,F0
MOV,C
MOVR4,A
NOP
RET
DABE:
SETBC
RET
DAB2:
ACALLNSUB1
MOVA,R4
JNB,DAB1
ACALLCMPT
CPLF0
SJMPDAB1
CSEGAT4400H
CMPT:
MOVA,R5
CPLA
ADDA,#1
MOVR5,A
MOVA,R4
CPLA
ADDCA,#0
MOVR4,A
RET
END
4.实验步骤
①编辑源程序、成立工程文件、编译连接生成可执行程序
应注意双字节原码有符号数加、减程序中挪用了三个程序:
NADD无符号数加法程序、NSUB1无符号数减法程序、CMPT带符号数求补程序。
由源程序生成可执行程序由两种方式:
一种方式:
第一将NADD、NSUB一、CMPT别离进行编辑、编译连接生成三个可执行程序;然后将原码有符号数加、减程序中ACALLNADD,ACALLNSUB1,ACALLCMPT三条指令中的符号地址NADD、NSUB一、CMPT用相应程序的直接地址代替即NADD用4100H、NSUB1用4200H、CMPT用4400H代替;最后将原码有符号数加、减程序进行编辑、编译连接生成可执行程序。
另一种方式:
将NADD程序、NSUB1程序、CMPT程序和原码有符号数加、减程序在一个源程序进行编辑、编译连接生成一个可执行程序,现在原码有符号数加、减程序中ACALLNADD,ACALLNSUB1,ACALLCMPT三条指令如程序给出,不用改变。
注意:
在执行减法运算时,原码有符号数加、减程序如程序清单所给,在执行加法运算时,将程序清单中LJMPNAS指令更正为LJMPDADD。
②在(R二、R3)和(R六、R7)中装入双字节无符号数
③在执行加法运算时,断点设在两条RET指令处,全速断点运行程序,记录程序执行后R4、R5中内容;在执行减法运算时,断点设在第一条RET指令处,全速断点运行程序,记录程序执行后R4、R5中内容。
注:
给(R二、R3)和(R六、R7)中输入五组不同参数,全速断点运行程序,自行设计表格记录程序执行后R4和R5中内容。
5.试探题:
①在程序中,哪些指令是位操作指令?
请总结位操作指令的功能?
②试画出此程序框图。
实验三双字节有符号数乘法
一、双字节无符号数乘法程序
1.实验目的:
进一步熟悉在多字节情形下,如何运用乘、除法指令。
2.编制说明:
MCS-51乘法指令实现两个八位无符号数直接相乘,因此双字节相乘需分解为四次单字节相乘,才可利用乘法指令。
3.操作说明:
入口:
将(R五、R4)装入双字节无符号数作为被乘数,
将(R3、R2)装入双字节无符号数作为乘数。
出口:
乘积送入以R1(积的低位字节地址指针)为地址指针的四个单元中。
4.程序清单:
NAMEDUMUL
CSEGAT0000H
LJMPSTART
CSEGAT4130H
START:
MOVA,R1
MOVR6,A
MOVR7,#04
CLEAR:
MOV@R1,#00H
INCR1
DJNZR7,CLEAR
MOVA,R6
MOVR1,A
MM:
MOVA,R2
MOVB,R4
MULAB
ACALLADDM
DECR1
MOVA,R2
MOVB,R5
MULAB
ACALLADDM
MOVA,R3
MOVB,R4
MULAB
ACALLADDM
MOVA,R3
MOVB,R5
MULAB
ACALLADDM
MOVA,R6
MOVR1,A
NOP
RET
ADDM:
ADDA,@R1
MOV@R1,A
MOVA,B
INCR1
ADDCA,@R1
MOV@R1,A
INCR1
MOVA,@R1
ADDCA,#00H
MOV@R1,A
DECR1
RET
END
二、双字节原码有符号数乘法程序
1.编制说明:
对原码表示的带符号的二进制数乘法,只需在乘法之前,先按正正得正,负负得正,正负得负的原那么,得出积的符号,然后清零符号位,执行无符号乘法,最后送积的符号。
2.操作说明:
操作说明同双字节无符号数乘法程序。
入口:
将(R五、R4)装入双字节原码有符号数作为被乘数,
将(R3、R2)装入双字节原码有符号数作为乘数。
出口:
乘积送入R4、R五、R六、R7,操作数的符号位在最高位。
3.程序清单:
NAMEIMUL
CSEGAT0000H
LJMPIMUL
CSEGAT4100H
IMUL:
MOVA,R5
XRLA,R3
MOVC,
MOVF0,C
MOVA,R5
CLR
MOVR5,A
MOVA,R3
CLR
MOVR3,A
ACALL4130H
MOVA,@R1
MOVR7,A
INCR1
MOVA,@R1
MOVR6,A
INCR1
MOVA,@R1
MOVR5,A
INCR1
MOVA,@R1
MOVR4,A
MOVC,F0
MOV,C
MOVR4,A
RET
END
三、第3章课后作业编程
四、第四章课后作业4-1和4-2编程
实验四双字节有符号数除法
一、无符号二进制除法程序
1.编制说明:
MCS-51的除法指令只实现两个八位无符号数直接相除,因此采纳移位除方式。
先把被除数高位和除数进行比较,若是被除数高位大于除数,那么商1,并从被除数减去除数,形成一个部份余数;若是被除数高位小于除数,那么商0,不执行减法。
接着把部份余数左移一名,并与除数再次比较,如此循环直至被除数的所有位都处置完为止。
一样情形下,若是除数和商都为双字节,那么被除数为四个字节,若是被除数的高两个字节大于或等于除数,那么商不能用双字节表示,即商至少为三字节。
因此在除法之前先查验是不是发生溢出,若是溢出那么置溢出标志不执行除法。
2.操作说明:
操作说明同双字节无符号数乘法程序。
入口:
将R二、R3、R4、R5装入四字节无符号数作为被除数,
将R六、R7装入两字节无符号数作为除数。
出口:
结果商送R4、R5,余数送R二、R3。
3.程序清单:
NAMENDIV1
CSEGAT0000H
LJMPNDIV1
CSETAT4100H
NDIV1:
MOVA,R3
CLRC
SUBBA,R7
MOVA,R2
SUBBA,R6
JNCNDVE1
MOVB,#16
NDVL1:
CLRC
MOVA,R5
RLCA
MOVR5,A
MOVA,R4
RLCA
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
XCHA,R2
RLCA
XCHA,R2
MOVF0,C
CLRC
SUBBA,R7
MOVR1,A
MOVA,R2
SUBBA,R6
JBF0,NDVM1
JCNDVD1
NDVM1:
MOVR2,A
MOVA,R1
MOVR3,A
INCR5
NDVD1:
DJNZB,NDVL1
CLRF0
LOOP:
NOP
RET
NDVE1:
SETBOF
JMPLOOP
END
二、第四章课后作业4-3、4-7和4-17编程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 14
![提示](https://static.bdocx.com/images/bang_tan.gif)