版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容示意图00H69H99H68H88H67H77H66H66H65H55H64H44H63H33R62H22H61H11H60HOFFH00HOFOHODEHOBCH9AH78H56H34I12H内容39H38H37H36H35H34H33H32H31H30H地址1、编程实现将内部RAM30H开始的10个单元内容和60H开始的10
个单元内容对应一一互相交换,单元内容自定,交换前内部RAM地址内容地址OFFH69H00H68HOFOH67HODEH66HOBCH65H9AB64H78H63H56H62H34H61H12H60HI00H39H99H38H88H37H77H36H66H35H55H34H44H33H33H32H22H31H11H30H交换后内部RAM示意图内容地址1、程序功能----数据交换2、
程序结构----循环结构环3、
数据存放位置----均在内部RAM4、
传送方式-----顺序传送XCH/
MOVDJNZ
控
制
循R0,R1寻址指针同时INC解题思路:ORG
0000HMOVR0,#30HMOV
R1,#60HMOV
R7,#10LOOP:MOVA,ROXCH
A,R1MOV
RO,AINC
ROINC
R1DJNZ
R7,LOOP开始设置源指针R0设置目的指针R1
设置计数器R7取源数据→AA←→
目的单元A→
源数据单元修改源指针R0修改目的指针R1过数器R7-1-0结束SJMPENDN$解题思路:1、程序功能----无符号数比较
2、程序结构--分支程序3、数据存放位置—-内部RAM2、编程比较内部RAM中X单元和Y单元存放的两个无符号数,找出其
中的较大数,放入Z单元中.二数相减,判断借位标志.
条件判断指令JC/JNC伪指令定义X、Y、ZX
EQU
20HY
EQU
30HZ
EQU
40HORG
0000HMOV
A,XCLR
CSUBB
A,YJNC
L1开始X
-Y有借位吗?MOVSJMPL1:MOVEN:SJMPENDNX→ZYY>ZZ,YENZ,X$结束3、
编程比较内部RAM中X单元和Y单元存放的两个有符号数,
找出其中的较大数,放入Z单元中。解题思路:1、
基本思路同上一题2、重点是判断有符号数的方法利用溢出标志0V的状态来判断两个有符号数的大小.若X-Y为正数,则
OV=0时
X>Y;OV=1
时X<Y.若X
-Y为负数,则
OV=0
时
X<Y;OV=1
时
X>Y.Z
<XN旗工请转A-X骄Z
<
人N2田要单NZ←A人乙田要单单弱X
EQU
20HY
EQU
30HZ
EQU
40HORG
0000HMOV
A,XCLR
CSUBB
A,YACC.7,NGPSW.2
LTGT:MOV
Z,XSJMP
ENNG:
PSW.2,GTLT:MOVZ,YEN:SJMP$ENDOFH36HOFH46HOAH35HOAH45H90H34H90H44H78H33H78H43H56H32H56H42H34H31H34H41H12H30H12H40H07H2FHXXH3FH内容地址内容地址4、
编程实现数据传送:假定数据串存放在内部RAM从30H
开始的连
续单元中,数据串长度存放在2FH单元,传送的目的区起址是内部RAM从40H开始的连续单元.<具体数据可以自己设定>1、程序功能----数据传送2、
程序结构----循环结构环3、
数据存放位置-----均在内部RAM4、
传送方式----顺序传送MOVDJNZ
控
制
循R0,R1寻址指针同时INC解题思路:ORG
0000HMOVR0,#2FHMOVR1,#40H
MOV
A,R0MOV
R7,AINC
ROLOOP:MOV
A,ROMOV
R1,AINC
ROINC
R1DJNZ
R7,LOOPSJMP
$END开始设置源指针R0设置目的指针R1
设置计数器R7取源数据→AA→
目的单元修改源指针R0修改目的指针R1过数器R7-1-0结束N12H46H34H45H56H44H78H43H90H42HOAH41HOFH40HXXH3FH5、
编程实现数据传送:假定数据串存放在内部RAM从30H开始的连
续单元中,数据串长度存放在2FH单元,传送的目的区起址是内部RAM从40H开始的连续单元.<数据按反向顺序传送>OFHOAH90H78H56H34H12H07H内容36H35H34H33H32H31H30H2FH地址内容
地址解题思路:1、
程序功能----数据传送2、
程序结构----循环结构3、
数据存放位置----均在内部RAM4、传送方式----反向传送DEC反向传送的关键是要设置好指针的初始化值,数据
区的开始地址容易找到,一般程序中都表示出来了,但数据
区的结束地址比较难找,它和数据的长度有关.MOVDJNZ
控
制
循
环R0,R1寻址指
针
一INC、一开始设置源指针R0设置目的指针R1设置计数器R7取源数据→AA→
目的单元修改源指针R0修改目的指针R1过数器R7-1-0结束DEC
R1INC
ROLOOP:MOVA,ROMOVR1,AINC
R0DEC
R1DJNZR7,LOOP0000HRO,#2FHR1,#40HA,R0R7,AA,R1R1,AORGMOVMOVMOVMOVADDMOVSJMPENDN$1、程序功能----数据传送2、
程序结构----循环结构环3、
数据存放位置-----均在外部RAM4、
传送方式----顺序传送需要2个16位指针6、
编程实现数据传送:假定数据串存放在外部RAM
0001H
开
始的单元中,其中数据串的长度存放在0000H
单元,传送的目的区起址
是
外
部RAM1000H
单
元
.解题思路:MOVXDJNZ
控
制
循DPTR寻址指针同时INC开始设置源指针DPTR设置目的地址R2,RS
设置计数器R7取源数据
→A保存DPTR值
设置目的指针A→
目的单元修改目的指针
保存目的地址恢复源指针修改源指针DPTR过数器R7-1
-0结束NORG
0000HMOV
DPTR,#000OHMOV
R2,#10HMOV
R3,#0OHMOVX
A,DPTR
MOVR7,AINC
DPTRLOOP:MOVXA,DPTRPUSH
DPHPUSHDPLMOV
DPH,R2MOVDPL,R3MOVX
DPTR,AMOVRO,#0000H
MOV
R1,#1000H可以这样使用吗?INC
DPTRMOVR2,DPHMOV
R3,DPLPOP
DPLPOPDPHINC
DPTRDJNZ
R7,LOOPSJMP
$END7、
编程实现数据传送:假定数据串存放在外部RAM
0000H开始的
单元中,传送的目的区起址是外部RAM
1000H单元.需传送的数据串
个数事先并不知道,但数据串有一个结尾标志0DH.解题思路:1、
程序功能----数据传送2、
程序结构----循环结构环3、
数
据
存
放
位置----均在外部RAM4、
传送方式----
顺序传送MOVXCJNE
控
制
循DPTR寻
址指针同时INC需
要
2
个
1
6
位
指
针开始设置源指针DPTR设置目的地址R2,R3
设置计数器R7取源数据→A=0DH
?N保存DPTR
值
设置目的指针A→
目的单元修改目的指针保存目的地址结束恢复源指针修改源指针DPTRORG0000HMOVDPTR,#00O1HMOVR2,#10HMOV
R3,#00HLOOP:MOVX
A,DPTRCJNE
A,#ODH,NEXTSJMPOVERNEXT:PUSH
DPHPUSH
DPLMOVMOVMOVXINCMOVMOVPOPPOPINCSJMPOVER:SJMPENDDPH,R2DPL,R3DPTR,ADPTRR2,DPHR3,DPLDPLDPHDPTRLOOP$8、
设有两串多字节二进制数,分别存放在内部RAM从30H和40H开始
的连续单元中〔低位在前高位在后,现要将这两串数据相加,结果存
放在从30H开始的连续单元中,数据串的长度在RO中
.(要保存最高
位进位数据例如:
BA9876543210H+665544332211HR0
=06H内容
地址66H45H55H44H44H43H33H42H22H41H11H40HOBAH98H76H54H32H10H内容35H34H33H32H31H30H地址相加
前RAM
内
容01H36H20H35HOEDH34HOBAH33H87H32H54H31H21H30H66H45H55H44H44H43H33H42H22H41H11H40HBA9876543210H+
665544332211H内容
地址相加
后RAM
内
容120EDBA875421H内容地址ORG
0000HMOV
R7,R0MOVR0,#30HMOVR1,#40HCLR
CRADD:
MOVA,ROADDC
A,R1MOV
R0,AINC
R0INC
R1DJNZ
R7,RADDCLRAADDC
A,#0MOV
R0,ASJMP$END保存高位进位位的
方法还有其他什么方法吗?位
判
断
法JC
NEXTMOV
RO,#00HCLR
ARLC
AMOV
R0,ASJMP
$SJMPOVERNEXT:MOVR0,#01H移
位
法OVER:
SJMP$9、设有两串多字节BCD码(即十进制数数,分别存放在内部RAM从30H和外部RAM4000H开始的连续单元中,现要将这两串数据相加,结
果存放在从外部RAM4000H
开始的连续单元中,数据串的长度在R1中
.〔忽略最高位进位数据例如:332836543210H+665544332211H66H4005H55H4004H44H4003H33H4002H22H4001H11H4000H33H28H36H54H32H10H内容35H34H3332H31H30H地址内容
地址前RAM内
容十十十十
十相
加R1=06H99H4005H83H4004H80H4003H87H4002H54H4001H21H4000H+35H34H33H32H31H30H地址332836543210H665544332211H998380875421H内容
地址内
容33H28H36H54H32H10H内容相
加
后RAM开始设置源指针R0设置目的指针DPTR
设置计数器R7取源数据→A加上目的单元加数DA
A
调整A→
日的数据单元修改源指针N1
数
器R7-1-02结束修改目的指R针0DPTRORG
0000HMOVR7,R1MOV
R0,#30HMOV
DPTR,#4000HCLR
CRADD:MOVX
A,DPTRADDC
A,RODA
AMOVXDPTR,AINCR0INCDPTRDJNZ
R7,RADDSJMP
$ENDRAlDD:MOV
A,
ROADDC
A,DPTRDA
AMOVXDPTR,A可以这样替换吗
?答案:不能原因:ADDC
A,
DPTR指令非法1、
程序功能----数据转换2、
程序结构----循环结构环3、
数据存放位置----一个内部一个外部
址4、
传送方式----顺序传送的指针+210、
在
内
部RAM
从20H
开始的连续单元中存放着4字节的BCD码,现要
求将每一个BCD码(一字节存放两个BCD码转变成对应的ASCII
码,并
存放在外部RAM从3000H开始的连续单元中。ANL
/
ORLDJNZ
控
制
循R0,DPTR
寻源指针+1,目解题思路:38H3007H37H3006H35H3005H36H3004H33H3003H34H3002H31H3001H32H3000H地址
内容23H78H22H56H21H34H20H12H内
部RAM外
部RAM内容地址开始设置源指针R0设置目的指针DPTR设置计数器R7取源数据
→A保存A
中数据到R2求低4位数据的ACSⅡ
码A
→送目的单元恢复R2
中数据到A求高4位数据的ACSⅡ
码修改目的指针DPTRA→送目的单元修改源指针R0修改目的指针DPTR过敏器R7-1=0结束NORGAJMPORGSTA:
MOVMOVMOVLOOP:MOV0000HSTA0030HDPTR,#3000HR0,#20HR7,#4A,ROMOVR2,AANL
A,#OFHORLA
,#30HMOVXDPTR,AORL
A,#30HINCDPTRMOVXDPTR,AINC
R0INCDPTRDJNZR7,LOOPSJMP$AA,#OFHMOV
A,R2SWAPANLEND63H37HOBH36H00H35H5AH3484EH33H38H32H22H31HOCH30H11、
编程将内部RAM
从40H
开始的连续单元中存放着8个单字
节的压缩BCD码,转变成单字节的二进制数,并存放在内部RAM
从30H
开始的连续单元中.47H46H45H44H43H42H41H40H地址99H11H00H90H78H56H34H
12H
内容内容
地址内
部
RAM内
部
RAM解题思路:1、程序功能----数据转换
ANL/ORL2、
程
序
结
构
-
-
-
-
循
环
结
构
DJNZ
控
制
循环3、
数据存放位置----均在内部RAM
R0,R1寻址4、传2位BCD数转换为二进制数的方INC/DEC
法BCD
数高4
位
数据(
十
位
)
X10十
BCD
数低4位数据
(个位)普通二进制数据开始设置源指针R0设置目的指针R1
设置计数器R7取源数据→A保存A
中数据到R2
取高4位数据→AA.
K
10
→A保存A
中数据到B恢复R2中数据到A修改源指针R0修改目的指针R1过敏器R7-1=0
2取低4位教据→AA+B>A沙目
的单元结束NMOV
A,R2ANL
A,#OFHADD
A,BMOV
R1,AINC
R0INCR1DJNZ
R7,LOPSJMP$ENDORGMOVMOVMOVLOP:MOVMOVANLSWAPMOVMULMOV000OHR0,#40HR1,#30HR7,#8A,ROR2,AA,#OFOHAB,#10ABB,A3007H37H3006H35H3005H30H3004H39H3003B38H3002H36H3001H34H3000H31H12、
将外部RAM从地址3000H开始连续8个单元的ASCII码分别
转换成BCD码,并组成压缩BCD码存放在内部RAM从地址30H开
始的连续4个单元中。57H33H90H32H68H31H14H30H内容
地址外
部RAM内
部
RAM内容地址解题思路:1、
程序功能----数据转换2、
程序结构----循环结构3、
数据存放位置----一个内部一个外部4、
传
送
方
式
-
-
-
-
顺
序
传
送指针+12个ASCII码合成1个压缩BCD
码18HASCII
-30H
=
非
压
缩BCD
码高位非压缩BCD
码高低4位互换ANL
/
ORLDJNZ
控制循
环R0,DPTR
寻
址
源指针+2,目的31H,38H01H,08H10H取源数据→AA-30H
>AA
中高低4位互换
保存A
中数据到R2源指针+1取源数据
→AA-30H
→A开始设置源指针DPTR
设置目的指针R0
设置计数器R7修改源指针DPTR
修改目的指针R0过敏器R7-1=0
2A+
R2
→AA→
目的单元结束N000OHR0,#30HDPTR,#3000HR7,#4A,DPTRA,#0FHAR2,ADPTRA,DPTRA,#OFHORGMOVMOVMOVLOP:MOVXANLSWAPMOVINCMOVXANLADD
A,R2MOV
R0,AINC
R0INC
DPTRDJNZ
R7,LOPSJMP
$END3007H55H3006H02H3005H53H3004H01H3003H20H3002H01H3001H26H3000H00H13、
编程将内部RAM从地址30H开始连续4个单元的单字节二进制
数分别转换成2字节的压缩BCD码(即00H~FFH转换为0000H~
0255H,存放在外部RAM从地址3000H开始的连续8个单元中,OFFH33H99H32H78H31H1AH30H内容
地址内容地址BCD码是每4位二进制数表示一位十进制数.本例所要
求转换的最大BCD码为255,需要12位二进制数,超过了一个
字节<8位>,因此我们把高4位存放在30H的低4位,高4位清
零;低8位存放在31H中.转换的方法是将A中二进制数除以100、10,所得商即
为百、十位数,余数为个位数.0000001030H0101010131H设置源指针R0设置目的指针DPTR
设置计数器R7取源数据→AA除以100A>
目的单元目的指针+1B
中余数再除以10修改源指针R0修改目的指针DPTR过敏器R7-1=0
2A中商低4位互换A+B>AA
少
且
的
单
元开始结束NORG
0000H
INCROMOV
R0,#30H
INCDPTRMOV
DPTR,#3000H
DJNZ
R7,LOOPMOV
R7,#4
SJMP
$LOOP:MOV
A,RO
ENDMOV
B,#100DIVAB
;除法指令,A/B→商在A中,余数在B中MOVX
DPTR,A;把商<百位数>存在目的单元中INC
DPTRMOV
A.#10XCH
A,B
;余数交换到A中,B=10DIVAB
;A/B→
商<十位>在A
中,余数<个位>在B
中SWAP
;十位数移到高半字节ADD
A,B
;十位数和个位数组合在一起MOVX
DPTR,A14、
问题如下:在外部RAM有一串二进制数,现要对该数串进行处理
,如何进行处理由累加器A的内容决定,具体如下:<A>=00:将该数据区清零;<A>=01:找出最大值,存放在内部RAM30H单元;
数,若转有
码1"
0,否则清零.
<A>=04:将该串数据从小到大排序。请编写实现上述功能的主程序,具体功能用调用子程序实现.子
程序具体内容不用编写,只要用一条RET指令返回即可.解题思路:F;置BC字OAAH二进制::0302AA1、
程序功能----散转程序A+DPTR2、
程序结构--多重分支JMPJMPA0:
LCALLQLSJMP$Al:LCALLMAXSJMP
$A2:
LCALLBCDSJMP
$A3:
LCALLCZSJMP
$A4:
LCALLPXSJMP
4QL:RET0000HSTART0030HB,AA,BDPTR,#TABA+DPTRA0A1A2A3A4ORGLJMPORGMOVRLA
ADD
MOVJMPLJMPLJMPLJMPLJMPLJMPSTART:TAB:解题思路:1、程序功能-----数据查找2、
程序结构----循环结构环3、
数据存放位置----内部RAM15、
编程查找内部RAM
的32H~41H单元中是否有
OAAH这个
数据,若有这一数据,则将将50H单元置为
OFFH,否则清50H单元
为
0
.CJNE
比较指DJNZ
控
制
循R0寻址开始设置源指针R0
设置计数器R7取源数据→A是0AAH
?N源数据指针+1数器R7-1-0#00H→50H结束#0FF→50HNMOV50H,#OFFHSJMP
OVERNEXT:INC
R0DJNZR7,LOOPMOV
50H,#00HOVER:SJMP
$END答案:不能原因:这是一条位操作指令ORGMOVMOVLOOP:MOVCLR50H可以用这条指令代替吗?0000HR0,#32HR7,#16A,R0CJNEA,#OAAH,NEXT16、
已知单片机晶振为12MHz,
请设计一个延时1s的子程序.解题思路:1、
程
序
功
能
-
-
延
时
软件延时2、
程序结构---多重循环结构
DJNZ
控
制
循环3、
时钟周期、机器周期和指令周期时钟周期T时钟是计算机基本时间单位,同晶振频率有关.题目给定fosc=12MHz,那么T时钟=1/fosc=1/12MDELAY:MOV
R0,#100;延时1s的循环次数DEL2:MOVR1,#10;延时10ms
的循环次数DEL1:MOVR2,#250;
延
时
1ms
的
循
环
次
数DELO:NOPNOPDJNZ
R2,DELODJNZ
R1,DEL1DJNZRO,DEL2RET;1μs;
1μs;2
μs程序说明本例中,第二层循环和外循环都采用了简化计算方法,编程
关键是延时1ms
的内循环程序如何编制.首先确定循环程序段
的内容如下:内循环次数设为count,计算方法如下式:〔一次循环时间×count=1ms从而得到count=
1ms/<1μs+1μs+2
μs>=250NOPNOPDJNZ;1;1μs;2R2,DELOμsμs17、编程查找20H~4FH
单元中出现00H的次数,并将查找结果
存
入
50
H
单元
.解题思路:1、
程序功能-----数据查找统计令2、程序结构-----循环结构环3、
数据存放位置
-
-
-
-
内部RAM4、
使
用
寄
存
器
计
数CJNE
比较指DJNZ
控
制
循R0
寻址R2查找数据一般用CJNE
指令,但本例中查找的数据开始设置源指针R⁰初始化计数器
设置计数器R7取源数据
→A是
0
0H
?V计数器+1源数据指针+1过数器R7-1-0计数值
→
50H结束JNZINCNEXT:INCDJNZMOVSJMPENDNEXTR2R0R7,LOOP50H,R2$0000HRO,#20HR2,#00HR7,#48ORGMOVMOVMOVLOOP:MOV
A,RONN18、
内部
RAM的30H
开始的区域中存放着10个单字节十进制
数,求其累加和,并将结果存入40H
和41H
单元.88H
99H
37H
21H80H79H
58H
26H
34H+11H533H39H38H37H36H35H34H33H32H31H30H地址88H99H37H21H80H79H58H26H34H11H内容ORGMOVMOVMOV
MOVCLRLOOP:MOVADDCDAMOVCLR
ADDCDAMOVDJNZSJMPEND开始设置源指针R0初始化结果单元
设置计数器R7取源数据→A加结果低字节加结果高字节源数据指针+1数器R7-1-0结束0000HRO,#30H40H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳理工大学《车辆人机工程学》2021-2022学年第一学期期末试卷
- 国家著作权软件著作权转让合同
- 2024-2025学年新教材高中历史第5课古代非洲与美洲课时素养评价含解析新人教版必修中外历史纲要下
- 高中历史第六单元资本主义运行机制的调节第19课当代资本主义的新变化史料解读素材北师大版必修2
- 大班音乐《粗心的小画家》课件
- 2024房屋维修工程施工合同
- 2024装修合同签署小常识分享
- 2024办公设备采购合同范本
- 2024【服务协议模板】代驾服务协议合同范本
- 2024装修合同制定的注意事项
- 2024年4月江苏省事业单位公开招聘考试真题与答案
- (高清版)DB42T 2179-2024 装配式建筑评价标准
- 《喜看稻菽千重浪》《心有一团火温暖众人心》《“探界者”钟扬》 统编版高中语文必修上册
- 12D401-3 爆炸危险环境电气线路和电气设备安装
- 2024广西继续教育公需科目(高质量共建“一带一路”)
- 广西2024年广西交通职业技术学院招聘笔试历年典型考题及考点附答案解析
- YYT 0654-2017 全自动生化分析仪
- 中央2024年中国农业科学院农田灌溉研究所招聘应届生等27人笔试历年典型考题及考点附答案解析
- 《西游记》情节梳理及专项训练(21-40回)解析版
- DL-T5161.8-2018电气装置安装工程质量检验及评定规程第8部分:盘、柜及二次回路接线施工质量检验
- 2024年05月泰山职业技术学院引进博士研究生20人笔试历年高频考点(难、易错点)附带答案详解
评论
0/150
提交评论