第四章汇编语言程序设计Word格式.docx
- 文档编号:19236887
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:30.56KB
第四章汇编语言程序设计Word格式.docx
《第四章汇编语言程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《第四章汇编语言程序设计Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
MOVA,22H
ADDA,32H
MOV42H,A
MOVA,23H
ADDCA,33H
MOV43H,A
4、略
5、编程计算片内RAM区50H~59H单元中数的平均值,结果存放在5AH中。
MOVR0,#8
MOVR1,#50H
MOVA,#00H
ADDA,@R1
DJNZR0,L1
MOVB,#8
DIVAB
MOV5AH,A
6、编写计算下式的程序。
设乘积和平方结果均小于255。
a、b值分别存在片外3001H和3002H单元中,结果存于片外3000H单元中。
(1)
MOVDPTR,#3001H
MOVXA,@DPTR
MOV30H,A;
a暂存30H单元
INCDPL
CJNEA,30H,L1;
是否a=b
MOVA,#25
SJMPSAVE
JNCL2
MOVB,30H
MULAB
L2:
MOVB,A
MOVA,30H
SAVE:
MOVX@DPRT,A
(2)
ADDA,30H
MULAB;
(a+b)2
CJNEA,#10,L1
JCL2
SUBBA,#10
ADDA,#10
MOVC@DPTR,A
7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中,试编程求其对应项之和,结果存放到以220H为首地址的存储区中。
MOVDPH,#02H
MOVR1,#15
MOVR2,#00H;
数组1首地址低位
MOVR3,#10H;
数组2首地址低位
MOVR4,#20H;
和首地址低位
MOVDPL,R2
MOVR1,A
MOVDPL,R3
ADDA,R1
MOVDPL,R4
MOVX@DTPR,A
INCR2
INCR3
INCR4
DJNZR1,L1
SJMP$
8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正数、负数和零的个数。
MOV30H,#00H;
正数计数器
MOV31H,#00H;
负数计数器
MOV32H,#00H;
零计数器
MOVDPTR,#2000H
MOVR1,#100
L4:
CJNEA,#0,L1
INC32H
SJMPL2
JCL3
INC30H
L3:
INC31H
DJNZR1,L4
9、将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片内RAM30H~60H中,并将原数据块区域全部清零。
MOVR0,#30H
MOVR2,#31H
MOVDPTR,#1000H
LP:
MOVXA,@DPTR
MOV@R0,A
ANDA,#00H
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR2,LP
10、试编写一子程序,是R1、R0指向的两个片外RAM连续单元中的高4位二进制数,合并成一个字节,装入累加器A中。
已知R0指向低地址,并要求该单元高四位放在A中高四位。
MOVXA,@R1
ANLA,#0F0H
SWAPA
MOVR2,A
MOVXA,@R0
ORLA,R2
11、试编程把以2040H为首地址的连续50个单元的无符号数按降序排列,存放到以3000H为首地址的存储区中。
MOVR2,#50
MOVR3,#20H
MOVR4,#40H;
源地址
MOVR5,#30H
MOVR6,#00H;
目的地址
SEND:
MOVDPH,R3;
SEND将2040H数据块移入3000H存储区
MOVR3,DPH
MOVR4,DPL
MOVDPH,R5
MOVDPL,R6
MOVR5,DPH
MOVR6,DPL
DJNZR2,SEND
MOVR2,#49;
重复次数
CMP1:
MOVR3,#49;
比较次数
CMP2:
CJNEA,B,L1
JCNOMOVE
MOVA,DPL
SUBBA,#01H
MOVDPL,A
MOVA,B
NOMOVE:
DJNZR3,CMP2;
50个数重复一遍?
DJNZR2,CMP1;
排序结束?
LJMP$
12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出ASCII码为A,将其地址送到20A0H和20A1H单元中。
MOVR2,#100
GO_ON:
CJNEA,#41H,IFEND
MOVA,DPH
MOVB,DPL
MOVDPTR,#20A0H
SJMPOVER
IFEND:
DJNZR2,GO_ON
OVER:
13、设在200H~204H单元中,存放5个压缩BCD码,编程将他们转换成ASCII码,存放到以205H单元为首地址的存储区。
MOVR2,#05H
MOVR3,#02H
MOVR4,#00H
MOVR5,#02H
MOVR6,#05H
CHLP:
MOVDPH,R3
ANLA,#0FH
ORLA,#30H
DJNZR2,CHLP
14、有一无符号数据块长度在30H单元中,其首地址为31H单元,求出数据块中最大值,并存入40H中。
MOVR0,#31H
MOVR1,30H
MOV40H,#00H
LOOP:
MOVA,@R0
CJNEA,40H,L1
SJMPAGAIN
MOV40H,A
AGAIN:
INCR0
DJNZR1,LOOP
15、略
16、在以2000H为首地址的存储区内,存放20个用ASCII码表示的0~9之间的数,试编程,将它们转换成BCD码,并以压缩BCD码的形式存在3000H~3009H单元中。
MOVR2,#10
MOVR6,#00H
ORLA,B
DJNZR2,LP
17、试编程实现下列逻辑表达式功能。
设P1.7~P1.0为8个变量的输入端,而其中P1.7又作为变量的输出端。
;
输入端定义
X0EQUP1.0
X1EQUP1.1
X2EQUP1.2
X3EQUP1.3
X4EQUP1.4
X5EQUP1.5
X6EQUP1.6
X7EQUP1.7
MOVC,X0
ANLC,X1
ANLC,/X2
ORLC,X3
MOV00H,C
MOVC,X4
ANLC,X5
ANLC,X6
ORLC,/X7
ORLC,00H
MOVP1.7,C
CPLC
MOVC,X2
ANLC,X3
ANLC,X4
MOV01H,C
MOVC,X5
ANLC,X7
ORLC,O1H
18、略
19、略
20、试编写延时1s、1min、1h子程序。
单片机时钟fosc=12MHz,计算为近似值
1s延时子程序
DLY_1S:
MOVR0,#10
MOVR1,#200
MOVR2,#250
DJNZR1,L2
DJNZR0,L3
RET
延时1min
DLY_1M:
MOVR3,#60
LCALLDLY_1S
DJNZR3,L4
延时1h
DLY_1H:
MOVR4,#60
L5:
LCALLDLY_1M
DJNZR4,L5
21、用程序实现c=a2+b2。
设a、b均小于10,a存在31H单元中,b存在32H单元中,c存33H单元。
ORG1000H
SR:
MOVA,31H
ACALLSQR
MOVA,32H
MOV33H,A
求平方子程序如下(采用查平方表的方法)
SQR:
INCA
MOVCA,@A+PC
TABLE:
DB0,1,4,9,16
DB25,36,49,64,81
END
22、如何实现将内存单元40H~60H的数逐个对应传到片外2540H~2560H单元中?
MOVR0,#40H
MOVDPTR,#2540H
23、参考21题
24、参考21题
25、参考实验程序
26、参考实验程序
第五章定时/计数器
1、89S51单片机内部有几个定时/计数器,他们有哪些专用寄存器组成?
89S51单片机内部有两个16位定时/计数器,为定时器0(T0)和定时器1(T1)。
在定时器/计数器的16位的计数器是由两个8位的专用寄存器TH0、TL0,TH1、TL1组成。
2、89S51单片机的定时/计数器有哪几种工作方式,各有什么特点?
定时器/计数器有四种工作方式:
方式0,方式1,方式2,方式3。
其中,方式3只适用于T0。
以T0为例:
①方式0,16位寄存器只用了13位,TL0的高三位未用。
由TH0的8位和TL0的低5位组成一个13位计数器;
②方式1,和方式0的工作相同,唯一的差别是TH0和TL0组成一个16位计数器;
③方式2,把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器。
TH0由软件预置值。
当TL0产生溢出时,一方面使溢出标志TF0置1,同时把TH0中的8位数据重新装入TL0中;
④方式3,将使TL0和TH0成为两个相互独立的8位计数器,TL0利用T0本身的一些控制,它的操作及方式0和方式1类似。
而TH0被规定为只用作定时器功能,对机器周期计数,并借用了T1的控制位TR1和TF1。
在这种情况下TH0控制了T1的中断。
这时T1还可以设置为方式0~2,用于任何不需要中断控制的场合,或者用作串行口的波特率发生器。
3、定时/计数器用作定时方式时,其定时时间及哪些因素有关?
作为计数时,对外界计数频率有何限制?
定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。
定时时间及时钟频率和定时初值有关。
定时/计数器作计数时,由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
4、当定时器T0用作方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭?
定时器T0用作方式3时,由于TR1位已被T0占用,此时通过控制位C/T切换其定时或计数器工作方式。
当设置好工作方式时,定时器T1自动开始运行,若要停止,只需送入一个置定时器T1为方式3的方式字。
5、已知89S51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲。
矩形波高电平宽度50µ
s,低电平宽度350µ
s。
ORG1000H
MOVTMOD,#02H;
设置工作方式
MOVTH0,#09CH;
设置定时器初值
MOVTL0,#09CH
SETBTR0;
启动定时器
LOOP:
SETBP1.2;
P1.0输出高电平
MOVR0,#07H
DEL:
JBCTF0,REP;
定时是否到?
AJMPDEL
REP:
P1.0输出低电平
DJNZR0,DEL
AJMPLOOP
6、在89S51单片机中,已知时钟频率为12MHz,请编程使P1.0和P1.1分别输出周期为2ms和500μs的方波。
选择方式2,用定时器T1
MOVTMOD,#20H
MOVTH1,#06H
MOVTL1,#06H
SETBTR1
MOVR2,#04H
JNBTF1,$
CLRTF1,
CPLP1.1
DJNZR2,L2
CPLP1.0
LJMPL1
7、设系统时钟为24MHz,试用定时器T0做外部计数器,编程实现每计到1000个脉冲,是T1开始2ms定时,定时时间到后,T0又开始计数,循环往复。
MOVTMOD,#15H;
T1定时方式1,T0计数方式1
MOVTH0,#0FCH
MOVTL0,#18H
SETBTR0
JNBTF0,$
CLRTR0
CLRTF0
MOVTH1,#H
MOVTL1,#H
CLRTR1
CLRTF1
8、略
第六章80C51的串行接口
1、什么是串行异步通信?
他有哪些特点?
有哪几种帧格式?
串行通信即所传输数据的各位按顺序一位一位的发送或接收。
串行通信分为同步和异步两种方式。
在异步通信中数据或字符是一帧一帧地传送的。
帧定义为一个字符的完整的通信格式,通常也称为帧格式。
它的主要特点:
由于异步通信每传送一帧有固定的格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单;
此外它还能利用校验位检测错误。
帧格式的一般形式是先用一个起始位“0”表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符结束。
2、某异步通信接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。
设每个字符由1个起始位、8个数据位、1个可编程位和1个结束位组成,其传送波特率为:
11b×
3600/60s=660bps
3、80C51单片机的串行口由哪些基本功能部件组成?
答:
80C51单片机的串行口基本功能部件主要有:
两个数据缓冲寄存器SBUF,一个串行口控制寄存器SCON,一个输入移位寄存器。
4、80C51单片机的串行口有几种工作方式?
几种帧格式?
如何设置不同方式的波特率?
80C51单片机的串行口有四种工作方式,由串行口控制寄存器中的SM0、SM1控制。
80C51单片机的串行通信有8位、10位、11位三种帧格式。
波特率设置:
4种工作方式波特率的计算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,均由定时器T1的溢出率控制。
具体计算如下:
方式0:
波特率固定为时钟频率的1/12,不受SMOD的影响。
(SMOD为波特率倍增位)
方式1的波特率=2SMOD/32×
定时器T1的溢出率
方式2的波特率=2SMOD/64×
fosc
方式3的波特率=2SMOD/32×
定时器T1的溢出率
5、为什么定时器T1用作串行口波特率发生器时,常采用工作方式2?
在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。
串口有四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,有定时器T1的溢出率控制。
定时器T1用作串行口波特率发生器时,因为工作方式2是自动重装载方式,因而定时器T1作波特率发生器常采用工作方式2.
6、已知定时器T1设置成方式2,用作波特率发生器,系统时钟频率为24MHz,求可能产生的最高和最低的波特率是多少?
最高波特率:
TH1=0FFH,TL1=0FFH
波特率最高=2/32×
24M/(12×
(256-255))bps=0.125Mbps
最低波特率:
TH1=00H,TL1=00H
波特率最低=1/32×
(256-0))bps=244bps
7、略(参见教材相关例题)
8、利用AT89S51串行口控制8个发光二极管工作,要求发光二极管每隔1S交替的亮灭,画出电路并编写程序。
电路如下图所示
实验程序如下:
CLRP1.0;
清输出
SETBP1.0;
允许串行移位
MOVSCON,#00H
MOVA,#55H;
显示初值
MOVSBUF,A
JNBTI,$
CLRTI
RRA
LJMPAGAIN
MOVR1,#20
MOVR2,#200
MOVR3,#250
DJNZR3,L1
DJNZR1,L3
9、串行口异步通信时,ASCII码“3”的字符格式(10位)如何?
串行口异步通信时,10位的数据帧结构为:
一个起始位(0),8个数据位(先低位后高位),一个停止位
(1)。
故ASCII码“3”的字符格式为:
0110011001B。
10、若选用定时器T1作波特率发生器,设fosc=6MHz,计数初值为0FDH,SMOD=1,求波特率是多少?
若选用定时器T1作波特率发生器,波特率由下式确定:
波特率=(定时器T1溢出率)/n
公式中:
①n为32或16,取决于特殊功能寄存器PCON中的SMOD位的状态。
若SMOD=0,则n=32。
若SMOD=1,则n=16。
②定时器T1溢出率=定时器T1的溢出次数/秒。
由题可知:
fosc=6MHz,计数初值为0FDH,SMOD=1,故
第七章中断系统
1、什么是中断?
在单片机中中断能实现哪些功能?
中断是通过硬件来改变CPU程序运行方向。
计算机在执行程序过程中,由于CPU以外的原因,有必要尽快终止当前程序的执行,而去执行相应的处理程序,待处理结束后,在回来继续执行被终止的原程序。
这种程序在执行过程中由于外界的原因而被中间打断的情况成为“中断”。
中断能实现的功能:
(1)能实现中断及返回。
(2)能实现优先权的排队。
(3)能实现中断的嵌套。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 汇编语言 程序设计