第四章汇编语言程序设计docxWord格式.docx

上传人:b****4 文档编号:8258625 上传时间:2023-05-10 格式:DOCX 页数:24 大小:48.87KB
下载 相关 举报
第四章汇编语言程序设计docxWord格式.docx_第1页
第1页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第2页
第2页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第3页
第3页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第4页
第4页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第5页
第5页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第6页
第6页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第7页
第7页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第8页
第8页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第9页
第9页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第10页
第10页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第11页
第11页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第12页
第12页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第13页
第13页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第14页
第14页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第15页
第15页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第16页
第16页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第17页
第17页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第18页
第18页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第19页
第19页 / 共24页
第四章汇编语言程序设计docxWord格式.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第四章汇编语言程序设计docxWord格式.docx

《第四章汇编语言程序设计docxWord格式.docx》由会员分享,可在线阅读,更多相关《第四章汇编语言程序设计docxWord格式.docx(24页珍藏版)》请在冰点文库上搜索。

第四章汇编语言程序设计docxWord格式.docx

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:

MOVDPTR,#3000H

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:

MOVXA,@DPTR

CJNEA,B,L1

JCNOMOVE

MOV30H,A

CLRC

MOVA,DPL

SUBBA,#01H

MOVDPL,A

MOVA,30H

MOVX@DPTR,A

MOVA,B

NOMOVE:

DJNZR3,CMP2;

50个数重复一遍?

DJNZR2,CMP1;

排序结束?

LJMP$

12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出ASCII码为A,将其地址送到20A0H和20A1H单元中。

MOVDPTR,#2000H

MOVR2,#100

GO_ON:

CJNEA,#41H,IFEND

MOVA,DPH

MOVB,DPL

MOVDPTR,#20A0H

SJMPOVER

IFEND:

INCDPTR

DJNZR2,GO_ON

OVER:

SJMPOVER

13、设在200H~204H单元中,存放5个压缩BCD码,编程将他们转换成ASCII码,存放到以205H单元为首地址的存储区。

MOVR2,#05H

MOVR3,#02H

MOVR4,#00H

MOVR5,#02H

MOVR6,#05H

CHLP:

MOVDPH,R3

MOVDPL,R4

ANLA,#0FH

ORLA,#30H

MOVA,B

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

MOVDPH,R3

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

MOVR1,A

MOVA,32H

ADDA,R1

MOV33H,A

SJMP$

求平方子程序如下(采用查平方表的方法)

SQR:

INCA

MOVCA,@A+PC

RET

TABLE:

DB0,1,4,9,16

DB25,36,49,64,81

END

22、如何实现将内存单元40H~60H的数逐个对应传到片外2540H~2560H单元中?

MOVR0,#40H

MOVDPTR,#2540H

MOVA,@R0

INCR0

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

END

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2