微机原理与接口技术实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV DPTR,#START;起始地址
MOV R0,#0;设置256字节计数值
MOV A,#1H
Loop:
MOVX @DPTR,A
INC DPTR;指向下一个地址
DJNZ R0,Loop;计数值减一
NOP
LJMP $
END
Memory Window
初始:
运行后:
运行结果:外部RAM8000H~80FFH的内容都为1。
MOVX @DPTR,A
INC DPTR;指向下一个地址
DJNZ R0,Loop;计数值减一
NOP
LJMP $
END
Memory Window
初始:
运行程序后:
2、若源块地址和目标块地址有重叠,该如何避免?
将源块地址和目标块地址重叠部分数据压制堆栈中,当要使用重叠部分源数据时,
直接从堆栈中弹出。
5、实验内容
实验2:主要让学生了解数值的BCD码和ASCII码的区别,利用查表方法快速地进行数值转换。进一步掌握数值的各种表达方式。现在我们给出一个BCD数,将其转换成ASCII值。如下:将累加器A的值转换为二个ASCII码,并存入Result开始的二个单元,例如A赋值#1AH。
3、源程序代码
源程序1:
RESULT EQU 30H
INC DPTR
DJNZ R1,LOOP
SJMP $
END
Memory Window
初始:
程序运行后:
程序运行结果正确。
2、两个16位无符号二进制数分别存放在片外RAM首址为2000H和2002H单元内,将它们相加,结果存入片内RAM 30H(低8位)、31H(高8位)。
源程序:
ORG 0000H
MOV DPTR ,#2000H
MOV A,#123
CALL BINTOBCD
LJMP $
END
Memory Window
程序结果:
运行结果:30H~32H的内容分别为01,02,03。
源程序2:
RESULT EQU 30H
ORG 0000H
LJMP START
ASCIITAB:
DB ‘0123456789ABCDEF’;定义数字对应的ASCII表
1、试编程将片内RAM中的数据依次复制到片外RAM。假设源数据区的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。
源程序:
ORG 0000H
MOV R0,#40H
MOV DPTR,#1000H
MOV R1,#10H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
初始:
运行程序后:
2FAFH+067DH=362CH, 36H存于31H(高八位),2CH存于30H(低八位)。
程序运行正确。
实验二 数值转换实验
一、实验目的
1.熟悉KEIL集成调试环境和汇编程序的调试方法。
2.掌握简单的数值转换算法。
3.基本了解数值的各种表达方法。
4.掌握数值的加减法运算。
5.掌握用查表的方法将BCD值转换成ASCII值。
源程序2:
ORG 0000H
MOV DPTR,#3000H
MOV A,#01H
MOV R5,#0
LOOP:
MOVX @DPTR,A
INC DPTR
DJNZ R5,LOOP
MOV R0,#30H
MOV R1,#00H
MOV R2,#40H
MOV R3,#00H
MOV R7,#0
LOOP1:
MOV DPH,R0
MOVX A,@DPTR
MOV R0,A
MOV DPTR,#2002H
MOVX A,@DPTR
ADD A,R0
MOV 30H,A
MOV DPTR,#2001H
MOVX A,@DPTR
MOV R0,A
MOV DPTR,#2003H
MOVX A,@DPTR
ADDC A,R0
MOV 31H,A
END
M来自百度文库mory Window
4、思考题
1、如何将存储器块的内容置成某固定值(例全填充为0FFH)?请用户修改程序,完成此操作。
将源程序1修改为:
ORG 0000H
START EQU 8000H
MOV DPTR,#START;起始地址
MOV R0,#0;设置256字节计数值
MOV A,#0FFH;将累加器赋值为0FFH
Loop:
BCDTOHEX:
MOV DPTR,#ASCIITAB
MOV B,A;暂存A
SWAP A
ANL A,#0FH;取高四位
MOVC A,@A+DPTR;查ASCII表
MOV RESULT,A
MOV A,B;恢复A
ANL A,#0FH;取低四位
块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。例程2给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。移动3000H起始的256个字节到4000H起始的256个字节。
3、源程序代码
源程序1:
ORG 0000H
START EQU 8000H
微机原理与接口技术实验
实验一 存储器块操作实验
一、实验目的
1.熟悉KEIL集成调试环境和汇编程序的调试方法。
2.掌握存储器读写方法;
3.了解内存块的移动方法;
二、实验说明
实验1指定某块存储器的起始地址和长度,要求能将其内容赋值。通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。
二、实验说明
单片机系统内部运算用二进制,而输入输出常用十进制,以符合日常习惯,因此,数制转换是仪表设计中常用的程序之一。
实验1:单片机中的数值有各种表达方式,这是单片机的基础。掌握各种数制之间的转换是一种基本功。我们将给定的一字节二进制数,转换成二十进制(BCD)码。将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。
MOV DPL,R1
MOVX A,@DPTR
MOV DPH,R2
MOV DPL,R3
MOVX @DPTR,A
INC R1
INC R3
DJNZ R7,LOOP1
LJMP $
END
Memory Window
初始:
运行程序后:
运行结果:3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。
ORG 0000H
LJMP START
BINTOBCD:
MOV B,#100
DIV AB
MOV RESULT,A;除以100得百位数
MOV A,B
MOV B,#10
DIV AB
MOV RESULT+1,A;余数除以10得十位数
MOV RESULT+2,B;余数为个位数
RET
START:
MOV SP,#40H
MOV R0,#0;设置256字节计数值
MOV A,#1H
Loop:
MOVX @DPTR,A
INC DPTR;指向下一个地址
DJNZ R0,Loop;计数值减一
NOP
LJMP $
END
Memory Window
初始:
运行后:
运行结果:外部RAM8000H~80FFH的内容都为1。
MOVX @DPTR,A
INC DPTR;指向下一个地址
DJNZ R0,Loop;计数值减一
NOP
LJMP $
END
Memory Window
初始:
运行程序后:
2、若源块地址和目标块地址有重叠,该如何避免?
将源块地址和目标块地址重叠部分数据压制堆栈中,当要使用重叠部分源数据时,
直接从堆栈中弹出。
5、实验内容
实验2:主要让学生了解数值的BCD码和ASCII码的区别,利用查表方法快速地进行数值转换。进一步掌握数值的各种表达方式。现在我们给出一个BCD数,将其转换成ASCII值。如下:将累加器A的值转换为二个ASCII码,并存入Result开始的二个单元,例如A赋值#1AH。
3、源程序代码
源程序1:
RESULT EQU 30H
INC DPTR
DJNZ R1,LOOP
SJMP $
END
Memory Window
初始:
程序运行后:
程序运行结果正确。
2、两个16位无符号二进制数分别存放在片外RAM首址为2000H和2002H单元内,将它们相加,结果存入片内RAM 30H(低8位)、31H(高8位)。
源程序:
ORG 0000H
MOV DPTR ,#2000H
MOV A,#123
CALL BINTOBCD
LJMP $
END
Memory Window
程序结果:
运行结果:30H~32H的内容分别为01,02,03。
源程序2:
RESULT EQU 30H
ORG 0000H
LJMP START
ASCIITAB:
DB ‘0123456789ABCDEF’;定义数字对应的ASCII表
1、试编程将片内RAM中的数据依次复制到片外RAM。假设源数据区的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。
源程序:
ORG 0000H
MOV R0,#40H
MOV DPTR,#1000H
MOV R1,#10H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
初始:
运行程序后:
2FAFH+067DH=362CH, 36H存于31H(高八位),2CH存于30H(低八位)。
程序运行正确。
实验二 数值转换实验
一、实验目的
1.熟悉KEIL集成调试环境和汇编程序的调试方法。
2.掌握简单的数值转换算法。
3.基本了解数值的各种表达方法。
4.掌握数值的加减法运算。
5.掌握用查表的方法将BCD值转换成ASCII值。
源程序2:
ORG 0000H
MOV DPTR,#3000H
MOV A,#01H
MOV R5,#0
LOOP:
MOVX @DPTR,A
INC DPTR
DJNZ R5,LOOP
MOV R0,#30H
MOV R1,#00H
MOV R2,#40H
MOV R3,#00H
MOV R7,#0
LOOP1:
MOV DPH,R0
MOVX A,@DPTR
MOV R0,A
MOV DPTR,#2002H
MOVX A,@DPTR
ADD A,R0
MOV 30H,A
MOV DPTR,#2001H
MOVX A,@DPTR
MOV R0,A
MOV DPTR,#2003H
MOVX A,@DPTR
ADDC A,R0
MOV 31H,A
END
M来自百度文库mory Window
4、思考题
1、如何将存储器块的内容置成某固定值(例全填充为0FFH)?请用户修改程序,完成此操作。
将源程序1修改为:
ORG 0000H
START EQU 8000H
MOV DPTR,#START;起始地址
MOV R0,#0;设置256字节计数值
MOV A,#0FFH;将累加器赋值为0FFH
Loop:
BCDTOHEX:
MOV DPTR,#ASCIITAB
MOV B,A;暂存A
SWAP A
ANL A,#0FH;取高四位
MOVC A,@A+DPTR;查ASCII表
MOV RESULT,A
MOV A,B;恢复A
ANL A,#0FH;取低四位
块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。例程2给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。移动3000H起始的256个字节到4000H起始的256个字节。
3、源程序代码
源程序1:
ORG 0000H
START EQU 8000H
微机原理与接口技术实验
实验一 存储器块操作实验
一、实验目的
1.熟悉KEIL集成调试环境和汇编程序的调试方法。
2.掌握存储器读写方法;
3.了解内存块的移动方法;
二、实验说明
实验1指定某块存储器的起始地址和长度,要求能将其内容赋值。通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。
二、实验说明
单片机系统内部运算用二进制,而输入输出常用十进制,以符合日常习惯,因此,数制转换是仪表设计中常用的程序之一。
实验1:单片机中的数值有各种表达方式,这是单片机的基础。掌握各种数制之间的转换是一种基本功。我们将给定的一字节二进制数,转换成二十进制(BCD)码。将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。
MOV DPL,R1
MOVX A,@DPTR
MOV DPH,R2
MOV DPL,R3
MOVX @DPTR,A
INC R1
INC R3
DJNZ R7,LOOP1
LJMP $
END
Memory Window
初始:
运行程序后:
运行结果:3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。
ORG 0000H
LJMP START
BINTOBCD:
MOV B,#100
DIV AB
MOV RESULT,A;除以100得百位数
MOV A,B
MOV B,#10
DIV AB
MOV RESULT+1,A;余数除以10得十位数
MOV RESULT+2,B;余数为个位数
RET
START:
MOV SP,#40H