#第3章MCS51系列单片机的指令系统和汇编语言程序.docx

上传人:b****2 文档编号:16851809 上传时间:2023-07-19 格式:DOCX 页数:28 大小:30KB
下载 相关 举报
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第1页
第1页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第2页
第2页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第3页
第3页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第4页
第4页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第5页
第5页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第6页
第6页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第7页
第7页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第8页
第8页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第9页
第9页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第10页
第10页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第11页
第11页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第12页
第12页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第13页
第13页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第14页
第14页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第15页
第15页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第16页
第16页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第17页
第17页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第18页
第18页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第19页
第19页 / 共28页
#第3章MCS51系列单片机的指令系统和汇编语言程序.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

#第3章MCS51系列单片机的指令系统和汇编语言程序.docx

《#第3章MCS51系列单片机的指令系统和汇编语言程序.docx》由会员分享,可在线阅读,更多相关《#第3章MCS51系列单片机的指令系统和汇编语言程序.docx(28页珍藏版)》请在冰点文库上搜索。

#第3章MCS51系列单片机的指令系统和汇编语言程序.docx

#第3章MCS51系列单片机的指令系统和汇编语言程序

第3章MCS一51系列单片机的指令系统

和汇编语言程序

3·1汇编指令

3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。

3·1·2请总结:

(1)汇编语言程序的优缺点和适用场合。

(2)学习微机原理课程时,为什么一定要学汇编语言程序?

3·1·3MCS一51系列单片机的寻址方式有哪儿种?

请列表分析各种寻址方式的访问对象和

寻址范围。

3·1·4要访问片内RAM,可有哪几种寻址方式?

3·1·5要访问片外RAM,有哪几种寻址方式?

3·1·6要访问ROM,又有哪几种寻址方式?

3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。

3·1·8试分别针对51子系列和52子系列,说明MOVA,direct指令和MOVA,@Rj

指令的访问范围。

3·1·9传送类指令中哪几个小类是访问RAM的?

哪几个小类是访问ROM的?

为什么访问

ROM的指令那么少?

CPU访问ROM多不多?

什么时候需要访问ROM?

3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。

3·1·11请选用指令,分别达到下列操作:

(1)将累加器内容送工作寄存器R6.

(2)将累加器内容送片内RAM的7BH单元。

(3)将累加器内容送片外RAM的7BH单元。

(4)将累加器内容送片外RAM的007BH单元。

(5)将ROM007BH单元内容送累加器。

3·1·12区分下列指令的不同功能:

(l)MOVA,#24H和MOVA.24H

(2)MOVA,R0和MOVA,@R0

(3)MOVA,@R0和MOVXA,@R0

3·1·13设片内RAM30H单元的内容为40H;

片内RAM40H单元的内容为l0H;

片内RAMl0H单元的内容为00H;

(Pl)=0CAH。

请写出下列各指令的机器码和执行下列指令后的结果(指各有关寄存器、RAM单元和端口的

内容)。

MOVR0,#30H

MOVA,@R0

MOVRI,A

MOVB,@Rl

MOV@R0,Pl

MOVP3,Pl

MOVl0H,#20H

MOV30H,l0H

3·1.14已知:

(A)=35H,(R0)=6FH,(Pl)=FCH,(SP)=C0H,试分别写出下列指令的机器码及执行各条指令的结果:

(l)MOVR6,A

(2)MOV@R0,A

(3)MOVA,廿90H

(4)MOVA,90H

(5)MOV80H,廿81H

(6)MOVX@R0,A

(7)PUSHA

(8)SWAPA

(g)XCHA,R0

3·1.15已知:

(A)=02H,(Rl)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(FFEH)=llH,ROM(FFEH)=64H,试分别写出下列指令的机器码及执行各条指令的结果。

(l)MOVA,@Rl

(2)MOVX@DPTR,A

(3)MOVCA,@A+DPTR

(4)XCHDA,@Rl

3·1.16已知:

(A)=78H,(Rl)=78H,(B)=04H,C=l,片内RAM(78H)=DDH,片内RAM(80H)=6CH,试分别写出下列指令的机器码及执行各条指令的结果(如涉及标志位,也要写出)。

(l)ADDA,@Rl

(2)ADDCA,78H

(3)SUBBA,#77H

(4)INCRl

(5)DEC78H

(6)MULAB

(7)DIVAB

(8)ANL78H,#78H

(9)ORLA,#0FH

(10)XRL80H,A

3·1·17已知:

C=0,累加器和Rl内容分别为无符号数甲和乙,间:

执行指令ADDCA,

Rl后,进位位、符号位和溢出位将各为何值?

累加器的内容为何,该如何读取?

(1)甲为02H,乙为FFH

(2)甲为02H,乙为F0H

3·1·18已知:

C=0,累加器和Rl内容分别为补码表示的带符号数甲和乙,间:

执行指令

ADDCA,Rl后,进位位、符号位和溢出位将各为何值?

累加器的内容为何,该如何读取?

(1)甲为78H,乙为05H

(2)甲为88H,乙为FBH

(3)甲为78H,乙为69H

(4)甲为88H,乙为97H

(5)甲为7FH,乙为FEH

(6)甲为7FH,乙为80H

3·1·19已知:

C=0,累加器和Rl内容分别为无符号数甲和乙,间:

执行指令STTBBA,Rl

后,进位位、符号位和溢出位将各为何值?

累加器的内容为何,该如何读取?

(1)甲为02H,乙为FFH

(2)甲为FFH,乙为02H

3·1·20已知:

C=0,累加器和Rl内容分别为补码表示的带符号数甲和乙,问:

执行指令

SUBBA,R1后,进位位、符号位和溢出位将各为何值?

累加器的内容为何,该如何读取?

(1)甲为02H,乙为0lH

(2)甲为0lH,乙为02H

(3)甲为FFH,乙为FFH

(4)甲为FEH,乙为FFH

(5)甲为04H,乙为FFH

(6)甲为FFH,乙为04H

(7)甲为7FH,乙为ClH

(8)甲为ClH,乙为7FH

3·1·21请对下列各组数分别计算"和"、"或"、"异或"的结果:

(1)10011010和00001111

(2)11010011和01011010

(3)11001100和00110011

(4)10101010和11111111

3·1·22为达到下列要求,请说明应采用何种逻辑操作、采用什么操作数。

要求不得改变各未涉及位的内容。

(1)使累加器的最低位置"1"

(2)清除累加器的高4位

(3)使A.2和A.3置"1"

(4)清除A·.3、A.4、A.5、A.6

3·1·93请总结运用"和"、"或"、"异或"指令对字节内容进行修改的各种办法。

3·1·94写出下列各条指令的机器码,并逐条写出依次执行每一条后的结果和PSw的内容:

(l)CLRA

(2)MOVA,#9BH

(3)MOvB,#0AFH

(4)ADDA,B

3,1·95请详细说明RET和RETI这两条指令的区别。

3·1·96已知:

(A)=0,(Rl)=40H.片内RAM(30H)=0lH,FIRST=2000H,SECOND

=2050H,试分别写出下列指令的机器码及执行各条指令的结果:

(l))FIRST:

AIMPSECOND

(2)FIRST:

LIMPSECOND

(3)FIRST.SIMPSECOND

(4)FIRST.JZSECOND

C5)FIRST:

CINEA,30H,SECOND

(6)FIRST:

LCALLSECOND

(7)SECOND:

DJNZRl,FIRST

3·1·97已知:

P1.7=1,A.0=0,C=l,FIRST=l000H,SECOND=l020H,试分别写出

下列指令的机器码及执行各条指令的结果:

(l)MOV26H,C

(2)CPLA.0

(3)CLRPl.7

(4)ORLC,/P1.7

(5)FIRST:

lCSECOND

(6)FIRST:

JNBA.0,SECOND

(7)SECOND:

JBCPl.7,FIRST

3·1·28要选用工作寄存器3组,请采用三种不同的指令实现之。

3·1·29列举三种能使累加器A内容清零的指令,并比较其优、缺点。

3·1·3016位地址共涉及两个字节,请统计在哪些场合按照"先低后高"规则处理,哪些场合却按照"先高后低"规则。

3·1·31分组讨论:

(1)算术操作类指令对标志位的影响。

(2)逻辑操作类指令对字节内容的修改。

(3)程序转移类指令长转移、绝对转移、短转移、绝对转移和相对转移、无条件转移和

条件转移的区分;绝对转移指令机器码和转移范围的确定;相对转移指令相对偏移量的计算;

散转指令的查表转移;调用和返主指令的堆栈操作;比较转移指令的格式和功用。

(4)位操作类指令中直接寻址位的表示方式。

3·1·39请统计MCS一51系列单片机有哪些指令可用于数据输入和输出?

3·1·33请统计MCS一51系列单步机有哪些指令可用于修改并行I/O口端口寄存器的内

容?

3·1·34综述MCS一51系列单片机指令系统的特点、所长和所短。

已学Z80的学生,试比较两种指令系统的优、缺点。

3·1·35请按MCS一51系列单片机指令的大类,分别统计其单字节、双字节、三字节指令数和单周期、双周期、四周期指令数。

3·1·36试按图3-1所示的格式,整理出MCS一51系列单片机各种指令的速查表(由机器码的第一字节查指令,或倒查)。

3·1.37请解释下列名词:

机器码助记符操作码操作数源程序

目标程序汇编指令汇编程序汇编语言

汇编语言程序汇编机器汇编人工汇编

3·1.38经过汇编后,下列各条语句的标号将是什

么数值?

ORG2000H

TABLE:

DSl0

WORD:

DSl5,20,25,30

FANG:

EQUl000H

BEGIN:

MOVA,R0

3·1·39下列程序段经汇编后,从2000H开始的各

有关存储单元的内容将是什么?

ORG2000H

TAB:

DS5

DB10H,10

DW2100H

ORG2050H

DWTAB

DB"WORK"

3·1·40下列程序段经汇编后,从1000H开始的各有关存储单元的内容将是什么?

ORGl000H

TABl:

EQU1234H

TAB2:

EQU3000H

DB"START"

DWTABl,TAB2

3·2汇编语言程序

3·2·1综述汇编语言程序的书写格式。

3·2·2要将片内RAM0FH单元的内容传送去专用寄存器B,对OFH单元的寻址可有三种

办法:

(l)R寻址

(2)R间址(3)direct寻址

请分别编出相应程序,比较其字节数、机器周期数和优缺点。

3·2·3设(R0)=7EH,(DPTR)=l0FEH

片内RAM7E单元的内容为0FFH

7F单元的内容为38H

试为下列程序的每条指令注释其执行结果。

INC@R0

INCR0

INC@R0

INCDPTR

INCDPTR

TNCDPTR

3·2·4试编程:

引用"和"运算,判断某8位二进制数是奇数还是偶数。

3·2·5试编程:

引用"或"运算,使任意8位二进制数

的符号位必为"1"。

3·2·6请思考:

引用"异或"运算,怎样可使一带符号

数的符号位改变、数据位不变;怎样可使该数必然变

"0"

3·2·7要选择工作寄存器组,可有几种编程办法?

3·2·8某压力测试的线性处理程序如下,如A/D转换器

的输出为02H,问执行程序后(A)=?

MOVP1,#0FFH

MOVA,P1

MOVCA,@A+PC

TAB:

DB00H

DB00H

DB01H

DB02H

;

DBFEH

END

3·2·9设ROM、片内RAM、RAM各有关单元的内容示如下图,问执行下列程序段后(A)=?

0000AJMP030H

ORG0030H

0030MOVR0,#32H

MOVA,@R0

MOVR1,A

MOVXA,@R1

MOVCA,@A+DPTR

3·2·10若在片内RAM30H单元中有2位压缩的BCD码95H,间执行下列程序后,片内

RAM30H单元的内容是什么?

31H、32H的内容又是什么?

并写出BCD码十进制调整的过程。

MOVR0,#30H

MOVA,@R0

ANLA,#0FH

MOVR3,A

MOVA,@R0

SWAPA

ANLA,#0FH

ADDA,R3

DAA

MOV@R0,A

MOVR3,A

INCR0

ANLA,#0FH

MOV@R0,A

INCR0

MOVA,R3

ANLA,#0F0H

SWAPA

MOV@R0,A

RET

3·2·11有程序如下:

CLRC

CLRRS1

CLRRS0

MOVA,#38H

MOVR0,A

MOV29H,R0

SETBRS0

MOVRl,A

MOV26H,A

MOV28H,C

请:

(1)区分哪些是位操作指令?

哪些是字节操作指令?

(2)写出程序执行后,片内RAM有关单元的内容。

(3)译成机器码。

(4)按汇编语言程序的标准格式书写,要求有各条指令的存放地址和必要的注释。

(5)如fOSC=l2MHz,计算这段程序的执行时间。

3·2·12试编程:

将两个4位二进制数并存于一个字节。

3·2·13试编程:

将存于片内RAM40H、41H单元中的16位数求补,结果放回原单元(低

字节放40H单元)。

3·2·14试编程:

有两双字节压缩的BCD码数相加,设该两待加数分别按先低后高原则存放在30H、31H和40H、41H单元,和要求放回30H、31H单元。

3·2·15试编程:

将累加器A内容低4位送片外RAM7AH单元,高4位送片外RAM7BH

单元,7AH、7BH单元的高4位均清零。

3·2·16试编程:

将片内RAM50H、51H单元两个无符号数中较小的数存于60H单元。

3·2·17试编程:

将片内RAM60H~69H单元中的l0个数相加,和的低8位存入7EH,高8位存入7FH。

3·2·18试编程:

统计从片内RAM60H单元起所存60个数中"0"的个数,并存入工作寄

存器R7。

3·2·19试编程:

将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H单

元起的内存区间去。

3·2·20试编程:

将ROM中以TAB为初址的32个单元的内容依次传送到片外RAM以

00H为初址的区域去(规定用查表指令)。

3·2·21试编写一段子程序,将片外RAM20H单元中压缩的BCD码转换成共阴的七段笔划信息码,存于片内RAM20H、21H单元,以待显示(七段笔划信息码的最高位为0)。

3·2·22请编一将A中内容乘10的程序,要求:

(1)不可用MUL指令

1)乘积≤2552)乘积﹥255

(2)可用MUL指令

1)乘积≤2552)乘积>255

规定乘积放在片内RAM的30H单元或30H、0lH单元。

3·2·23教材例3·4是按总和仍为两位BCD码、无溢出进行编程的;如有溢出,请重编程序。

3·2·24设教材例3·6程序中的多字节数为010000H,试剖析程序执行的经过和结果。

3·2·25教材例3·7如不是两个数、而是n个数,请重编程序。

(如有二数相等,不必建起标志位)。

3·2·26CJNE指令执行何种操作?

上述例3·7示出的程序为什么不用这一指令?

如改用这一指令,程序将作何种改动?

并请将重编后的汇编语言源程序译成机器码。

3·2·27设晶振为12MHz,请详细剖析(包括计算)下列程序段的性质和用途:

0B07963DELAY:

MOVRl,#63H

0B200DLl:

NOP

0B300NOP

0B4D9FCDJNZRl,DLl

0B622RET

3·2·28请编写一个能延时1.5ms的子程序,要列出计算。

Tcy=1us。

3·2·29请编写两段子程序,分别用指令延时法和定时器定时l0ms,设晶振为12MHz。

3·2·30设晶振为12MHz,请编写二段子程序,分别用指令延时法和定时器实现30ms延时。

3·2·30设晶振为12MHz,请编写二段子程序,分别用指令延时法和定时器实现30ms延时。

3·2·31某单片机系统:

fOSC=l2MHz,定/计0用于20ms定时,定/计

1用于100次计数,定/计0和定/计1均要求重复工作。

问:

(1)外部计数脉冲应从何引脚输入?

(2)试编能达到上述要求的程序。

3·2·32请回答:

教材例3·19为什么按"TH0、TL0、TH0"的次序读,

却不按"TL0、TH0、TL0"的次序读。

3·2·33阅读下列程序,

(1)说明该程序的功能。

(2)填出所缺的机器码。

(3)试修改程序,使片内RAM的内容达到右下图所示的结果。

7A__MOVR2,#0AH

____MOVR0,#50H

E4CLRA

E6LOOP:

MOV@R0,A

08INCR0

DA__DJNZR2,LOOP

DONE:

3·2·34阅读下列程序,并要求:

(1)说明程序的功能。

(2)写出涉及的寄存器及片内RAM单元的最后结果。

MOVR0,#40H

MOVA,@R0

INCR0

ADDA,@R0

INCR0

MOV@R0,A

CLRA

ADDCA,#0

INCR0

MOV@R0,A

3·2·35同上题要求,程序如下

MOVA,61H

MOVB,#02H

MULAB

ADDA,62H

MOV63H,A

CLRA

ADDCA,B

MOV64H,A

3·2·36同上题要求,程序如下

CLRC

MOVA,R3

RRCA

MOVR3,A

MOVA,R4

RRCA

MOVR4,A

3·2·37同上题要求,程序如下:

MOVR0,#31H

MOVA,@R0

SWAPA

DECR0

XCHDA,@R0

MOV40H.A

3·2·38同上题要求,程序如下:

MOVR0,#60H

MOVA,#40H

MOV@R0,A

MOVX@R0,A

3·2·39同上题要求,程序如下:

MOVRl,#30H

MOVXA,@Rl

MOV@Rl,A

TNCRl

MOVXA,@Rl

MOV@Rl,A

3·2.40

同上题要求,程序如下:

ORGl000H

ABS:

MOVR0,#38H

MOVRl,#48H

MOVR2,#06H

LOOP:

MOVA,@R0

JNBA,7,NEXT

CPLA

SETBA.7

INCA

NEXT:

MOV@Rl,A

INCR0

INCRl

DJNZR2,LOOP

DONE:

3·2·41阅读下列程序,写出程序执行后片外RAM8008H和800AH单元以及DPTR、Rl、A的内容。

ORG0100H

START:

MOVDPTR,#BLK1

MOVR2,#4

MOVR1,#30H

MOVR0,#30H

LOP1:

MOVXA,@DPTR

MOV@R1,A

INCDPTR

INCR1

DJNZR2,LOP1

MOVR2,#4

CLRC

LOP2:

MOVXA,@DPTR

ADDCA,@R0

DAA

MOV@R1,A

INCDPTR

INCR0

INCRl

DJNZR2,LOP2

MOVR2,#4

LOPS:

MOVA,@R0

MOVX@DPTR.A

INCR0

INCDPTR

DJNZR2,LOP3

HERE:

SJMPHERE

ORG8000H

BLKl:

DB96H,74H,32H,l6H

BLK2:

DB65H,94H,87H,29H

BLK3:

DS4

END

3·2·42阅读下列程序,写出程序执行后片外RAM7008H、700AH和700FH单元以及DPTR、Rl的内容。

ORG0200H

MOVDPTR,#BLOCK

MOVR0,#30H

MOVRl,#40H

MOVR2,#08H

MOVR3,#00H

MOVR4,#00H

CHODEV:

MOVXA,@DPTR

MOVR5,A

ANLA,#0lA

JNZDD

MOVA,R5

MOV@R0,A

INCR0

INCR3

SJMPNEXT

DD:

MOVA,R5

MOV@Rl,A

INCR1

INCR4

NEXT:

INCDPTR

DJNZR2,CHODEV

MOVR0,#30H

MOVRl,#40H

EVMOV:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR3,EVMOV

ODMOV:

MOVA,@Rl

MOVX@DPTR,A

INCR1

INCDPTR

DJNZR4,ODMOV

HERE:

SJMPHERE

ORG7000H

BLOCKDB69H,47H,32H,61H

DB56H,49H,27H,78H

BUFFERlDS3

BUFFER2DS5

3·2·43阅读下列程序,写出程序执行后片外RAM8003H和8005H单元以及DPTR、R2,R0的内容。

ORG0200H

START:

MOVR0,#30H

MOVRl,#30H

MOVR2,#2

MOVDTPR,#BUFFER

HETOAS:

MOVXA,@DPTR

MOVR3,A

SWAPA

ANLA,#0FH

ADDA,#90H

DAA

ADDCA,#40H

DAA

MOV@Rl,A

INCR1

MOVA,R3

ANLA,#0FH

ADDA,#90H

DAA

ADDCA,#40H

DAA

MOV@Rl,A

INCDPTR

INCR1

DJNZR2,HETOAS

MOVR2,#4

LOOP:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,LOOP

HERE:

SJUMPHERE

ORG8000H

BUFFERDB2AH,49H

BLOCKDS4

END

3·2·44阅读下列程序,写出程序执行后片外RAM2002H和200l3H单元以及DPTR、SP、R3的内容。

注意:

本程序在RESET后执行

ORG0100H

MOVDPTR,#DAT

MOVXA,@DPTR

MOVR0,A

SWAPA

ANLA,#0FH

ACALLBTOA

MOVR4,A

MOVA,R0

ANLA,#0FH

ACALLBTOA

MOVR5,A

INCDPTR

MOVXA,@DPTR

MOVRl,A

SWAPA

ANLA,#0FH

ACALLBTOA

MOVR6,A

MOVA,Rl

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

当前位置:首页 > 临时分类 > 批量上传

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

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