资源描述:
《KeilC的使用与汇编语言上机操作.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《微机实验》报告实验名称KeilC的使用与汇编语言上机操作指导教师专业班级姓名学号序号无联系方式一、任务要求1.掌握KeilC环境的使用1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2.编写两个十六位数的加法程序。有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。二、设计思路1.字节拆分、合并程序:利用汇编语言中的XCHD和SWAP两个
2、语句来实现将八位二进制数拆分为两个四位二进制数并分别存储于不同的存储空间的功能,BCD码与30H相或(加上30H)得到ASCII码。将两个ASCII码和0FH相与(高四位清零)得到BCD码,利用SWAP语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。2.数据块填充程序:将R0用作计数器,DPTR用作片外数据指针,A作为原始数据来源,依顺序在片外的存储单元内容填充数据。利用循环语句来减少程序长度,并控制填充单元个数为片外100H个。(通过R0的进位控制)3.两个十六位数加法程序:把第一个十六位无符号数的地八位和
3、高八位分别存于20H和21H中,把第二个十六位无符号数的地八位和高八位分别存于30H和31H中,对20H和30H中的两个低八位进行ADD加法操作,结果存于R4中;然后对21H和31H中的两个高八位进行ADDC带进位的加法操作,结果存于R3中.然后讲累加器A清零,并和#00H进行ADDC带进位的加法操作,结果产生进位数并存于R2中,程序结束。三、资源分配1.字节拆分、合并程序:片内30H单位存放原BCD码,31H和32H存放拆分后的两个ASCII码,33H存放合并后的BCD码。2.数据块填充程序:R0作为计数器,DPTR作为
4、数据指针,片外空间从7000H开始填充。3.两个十六位数加法程序:20H,21H:第一个数的低八位和高八位30H,31H:第二个数的低八位和高八位R4:加法结果的低八位R3:加法结果的高八位R2:加法结果的进位四、流程图2.数据块填充程序1.字节拆分,合并程序3.两个16位数加法程序五、源代码(含文件头说明、资源使用说明、语句行注释)1.字节拆分、合并程序Filename:e421.asmDescription:1字节BCD码转换为2字节ASCII2字节ASCII码转化为1字节BCD码Sourceused:30H:BCDd
5、ata31H,32H:ASCIIdata31H,32H->33HORG0000HLJMPMAINORG0100HMAIN:MOVSP,#40H;赋堆栈指针MOV30H,#49H;30H单元赋值MOVR0,#32H;R0指针赋值MOV@R0,#0;32H单元清零MOVA,30HXCHDA,@R0;拆分字节ORL32H,#30H;转换为ASCIISWAPAORLA,#30H;转换为ASCIIMOV31H,A;结果存于31H单元MOVA,31H;从31H单元取值ANLA,#0FH;转换为BCDSWAPAMOV33H,A;结果存于
6、33H单元MOVA,32H;从32H单元取值ANLA,#0FH;转换为BCDORL33H,A;合并字节HERE:SJMPHERE;踏步END2.数据块填充程序:将片外RAM7000H-70FFH单元按一定规律填充Filename:fill.asmDate:2011.8.20Designedby:CDHSourceused:R0:计数器DPTR:片外数据指针ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#40HFILL:CLRA;A寄存器清零MOVR0,#00H;设循环计数器MOVDPTR,#7000
7、H;设数据指针FILL1:MOVX@DPTR,A;传送到片外RAMINCA;A内容加1INCDPTR;修改数据指针INCR0;修改循环计数器CJNER0,#00H,FILL1;判断是否结束HERE:SJMPHERE;原地踏步END3.两个十六位数加法程序:Filename:test1,asmDate:2012.9.26DesignedbylixueningSourceused:ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#40H;赋堆栈指针MOV20H,#0F1HMOV21H,#92H;赋值第一个
8、无符号十六位数MOV30H,#0D9HMOV31H,#E0H;赋值第二个无符号十六位数MOVA,20HADDA,30H;低八位相加MOVR4,A;结果存放于R4中MOVA,21HADDCA,31H;高八位相加(带进位)MOVR3,A;结果存放于R3中CLRA;累加器A清零ADDCA,#00H;A与#00