最新整理单片机原理与运用第三章答案.docx
- 文档编号:27082463
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:20
- 大小:34.06KB
最新整理单片机原理与运用第三章答案.docx
《最新整理单片机原理与运用第三章答案.docx》由会员分享,可在线阅读,更多相关《最新整理单片机原理与运用第三章答案.docx(20页珍藏版)》请在冰豆网上搜索。
最新整理单片机原理与运用第三章答案
(完整)单片机原理与运用-第三章答案
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)单片机原理与运用-第三章答案)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)单片机原理与运用-第三章答案的全部内容。
第三章单片机的汇编语言与程序设计习题
1.设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0和内部RAM中50H,51H单元的内容为何值?
MOVA,59H
MOVR0,A
MOVA,#00H
MOV@R0,A
MOVA,#25H
MOV51H,A
MOV52H,#70H
解:
MOVA,59H;A=50H
MOVR0,A;RO=50H
MOVA,#00H;A=00H
MOV@R0,A;50H=00H
MOVA,#25H;A=25H
MOV51H,A;51H=25H
MOV52H,#70H;52H=70H
所以:
A=25HR0=50H;50H=00H51H=25H
2.请选用合适的指令对P0口内容做修改(例如使P0。
0~P0。
3不变,P0。
4~P0。
7为0).
解:
MOVA,P0
ANLA,0fh
MovP0,A
3.试问外部数据存储器和程序存储器可以用哪些指令来实现?
举例说明。
解:
访问外部数据存储器指令有:
MOVX@DPTR,AMOVXDPTR,#0100HMOV@DPTR,A
MOVXA,@DPTRMOVXDPTR,#0200HMOVA,@DPTR
MOVXA,@RiMOVXA,@R0
MOVX@Ri,AMOVX@RI,A
访问程序存储器指令有:
MOVXA,@A+PC
MOVXA,@A+DPTR
4.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?
PUSH30H
PUSH31H
POPDPL
POPDPH
MOV30H,#00H
MOV31H,#0FFH
解:
PUSH30H;61H=24H
PUSH31H;62=10HSP=62H
POPDPL;DPL=10H
POPDPH;DPH=24HSP=60H
MOV30H,#00H;30H=00H
MOV31H,#0FFH;31H=0FFH
5.设(A)=40H,(R1)=23H,(40H)=05H。
执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各位何值?
XCHA,R1
XCHDA,@R1
解:
XCHA,R1;A=23HR1=40H
XCHDA,@R1;A=25H40H=03H
6.两个四位BCD码数相加,被加数和加数分别存于50H,51H和52H,53H单元中(次序为千位、百位在低地址中),和数存在54H,55H和56H中(56H用来存放最高位的进位,试编写加法程序)
解:
ORG0000H
LJMPSTART
ORG0100H
START:
MOVA,53H
ADDA,51H
DAA
MOV55H,A
MOVA,52H
ADDCA,50H
DAA
MOV56H,C
SJMP$
END
7。
设(A)=01010101B,(R5)=10101010B,分别写出执行ANLA,R5;ORLA,R5:
XRLA,R5指令后结果。
解:
ANLA,R5;00000000B
ORLA,R5;11111111B
XRLA,R5;11111111
8.设指令SJMPrel=7EH,并假设该指令存放在2114H和2115H单元中.当该指令执行后,程序将跳转到何地址?
解:
2116H+60H=2176H
9。
简述转移指令AJMPaddr11,SJMPrel,LJMPaddr16及JMP@A+DRTR的应用场合。
解:
AJMPaddr11为2K字节范围内的无条件转跳指令,把程序的执行转移到指定的地址。
SJMPrel是无条件转跳指令,执行时在PC加2后,把指令中补码形式的偏移量加到PC上,并计算出转向目标地址.转向的目标地址可以在这条指令前128字节到后127字节之间
LJMPaddr16执行这条指令时把指令的第二字节和第三字节分别装入PC的高位和地位字节中无条件地转向指定地址.转移目标地址可以在64K程序存储器地址空间的任何地方,不影响任何标志。
JMP@A+DRTR指令的功能是把累加器中8位无符号数与数据指针DRTR中的16位数相加,将结果作为下条指令地址送入PC,利用这条指令能实现程序的散转.
10.试分析下列程序段,当程序执行后,位地址00H,01H中的内容将为何值?
P1口的8条I/O线为何状态?
CLRC
MOVA,#66H
JCLOOP1
CPLC
SETB01H
LOOP:
ORLC,ACC.0
JBACC。
2,LOOP2
CLR00H
LOOP2:
MOVP1,A
解:
CLRC;CY=0
MOVA,#66H;A=66H
JCLOOP1
CPLC;CY=1
SETB01H;20H。
1=1
LOOP:
ORLC,ACC.0;CY=1
JBACC。
2,LOOP2;
CLR00H
LOOP2:
MOVP1,A;P1=01100110B
SJMP$
20H.0=020H。
1=1P1=66H
11。
的特查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序点。
MOV78H,80H
MOV78H,#80H
解:
直接寻址单元传送到直接寻址单元的机器码是第二个操作数在前,而立即数传送到直接地址单元是第一个操作数在前,次序正好相反。
12。
手工汇编下列程序段
ORG873BH
AAAEQU851AH
QQQMOVA,35H
CLRC
SUBBA,#0AH
JCQQ16
MOVA,36H
SUBBA,#0AH
JCQQ15
AJMPAAA
QQ15:
MOV35H,#00H
QQ16:
JNB02H,QQ17
MOVR6,39H
DECR6
SJMPQQ18
QQ17:
MOVR6,39H
INC39H
QQ18:
CLR05H
LJMP8500H
END
13。
若有两个无符号数x,y分别存放于内部存储器50H,51H单元中,试编写一个程序实现x*10+y,结果存入52H,53H两个单元中。
解:
ORG0000H
SJMPSTART
ORG0030H
START:
MOVA,50H
MOVB,#10
MULAB;(50H)×10积的高、低字节分别在B、A中ADDA,51H
MOV53H,A;积的低字节加(51H)其和存放在53H中MOVA,#00H
ADDCA,B
MOV52H,A;积的高字节加进位位存放在52H中。
SJMP$
END
14从内部存储器20H单元开始,有30个数据。
试编一个程序,把其中的正数,负数分别送51H和71H开始的存储单元,并分别记下正数负数的个数送50H和70H单元。
解:
ORG0000H
SJMPSTART
ORG0030H
START:
MOV1EH,#51H;正数存放首地址51H存于1EH单元
MOV1FH,#71H;负数存放首地址71H存于1EH单元
MOVR0,#20H;建立取数(源操作数)的地址指针
MOVR2,#30;预置数据长度
MOV50H,#00H;正数个数统计单元清零
MOV70H,#00H;负数个数统计单元清零
LOOP:
MOVA,@R0;取数
JBACC.7,NEG;是负数转NEG处理
POST:
MOVR1,1EH;是正数,将暂存的地址送R1(间址寄存器)
MOV@R1,A;将正数入存
INC50H;正数个数加1
INC1EH;正数暂存地址加1修正
LOOP1:
INCR0;取数地址加1修正
DJNZR2,LOOP;计数长度减1,不等于零,继续循环统计
SJMP$;结束
NEG:
MOVR1,1FH;是负数,将暂存的地址送R1(间址寄存器)
MOV@R1,A;将正数入存
INC70H;负数个数加1
INC1FH;负数暂存地址加1修正
SJMPLOOP1;转取数地址修正
15内部存储单元40H中有一个ASCII码字符,试编一程序,给该数的最高位加上奇检验.
解:
ORG0000H
SJMPSTART
ORG0030H
START:
MOVA,40H;取数给A
CLRACC。
7;A最高位(奇偶校验位)清零
JBP,LOOP;40H中的ASCII码原来就是奇数个1(最高位给零)
SETBACC.7;40H中的ACSII码原来是偶数个1,最高位置1
LOOP:
MOV40H,A;入存
SJMP$;结束
END
16。
编写一段程序,将存放在自DATA单元开始的一个四字节数(高位在前)取补后送回原单元。
解:
若DATA在内部数据存储器中(假如存放在30H起始的4个单元中);采用求反加1的算法;
ORG000H
SJMPSTART
ORG0030H
START:
SETBC;置进位位为1
MOVR2,#04H;预置计数长度
MOVR0,#DATA1+3;取数指针指向低字节的地址
LOOP:
MOVA,@R0;取数
CPLA;求反
ADDCA,#00H;加进位
MOV@R0,A;入存
DECR0;地址指针修正
DJNZR2,LOOP;4字节未处理完,继续循环处理
SJMP$;结束
DATA1EQU30H;
END
17.以BUF1为起始地址的外存储区中,存放有16个单字节无符号二进制数,是编一程序,求其平均值并送BUF2单元.
解:
设R2、R3存放和,将其除以16(R2、R3联合左移4位)即为平均置值(单字节存放)
ORG0000H
SJMPSTART
ORG0030H
START:
MOVR2,#00H;和高字节清零
MOVR3,#00H;和低字节清零
MOVDPTR,#DATA1;建立外部数据存储器的地址指针
MOVR4,#10H;预置计数长度
LOOP:
MOVXA,@DPTR;从外部数据存储器取数
ADDA,R3
MOVR3,A
MOVA,R2;
ADDCA,#00H;
MOVR2,A;累加
INCDPTR;地址指针修正
DJNZR4,LOOP;16字节未累加完,继续循环累加
MOVR4,#04H;R2、R3联合移位4次(除以16)
LOOP1:
CLRC
MOVA,R2
RRCA
MOVR3,A
DJNZR4,LOOP1;平均值存放于R3中
SJMP$;结束
DATA1EQU1000H;
END
18。
在DATA1单元中有一个带符号8位二位进制数x.编一程序,按以下关系计算y值,送DATA2单元.
y=x+5,x〉0
y=x,x=0
y=x-5,x〈0
解:
设DATA1、DATA2为内部数据存储器的二个单元(假设为30H、31H)且y的值单字节不会产生溢除出
ORG000H
SJMPSTART
ORG0030H
START:
MOVA,30H;取数X给A
JZZERO;若X=0,则Y=0,转入存
JBACC.7,NEG;若X<0,则转X—5
POZI:
ADDA,#05H;若X>0,则X=5,入存
SJMPZERO;
NEG:
CLRC;
SUBBA,#05H;
ZERO:
MOV31H,A;结果入存
SJMP$
END
19.设内部RAM中30H和31H单元中有两个带符号数,求出其中的大数存放在32H单元中。
解:
若两数同号,则值大的数大;两数异号,正数值大
ORG000H
SJMPSTART
ORG0030H
START:
MOVA,30H
XRLA,31H;两数异或
JBACC.7,YIHAO;两数异号
TONGHAO:
CLRC;两数同号
MOVA,30H
SUBBA,31H
JCLOOP1-2
LOOP0:
MOVA,30H;同号被减数大,值大
LOOED:
MOV32H,A
SJMP$
LOOP1:
MOVA,31H;异号被减数大,值小
SJMPED;
YIHAO:
MOVA,30H;异号,哪个正,其值大
JNBACC.7,LOOP0
SJMPLOOP1
END
20.利用逻辑控制的方法,设计一个主程序,在第1,3,5,6次调出SB1子程序,第2,4,7,8次调用SB2程序.
解:
ORG000H
SJMPTEST
ORG0030H
TEST:
MOVR2,#08H
MOVA,#10101100B
LOOP:
RLCA
JCLOOP1
LCALLSB1
SJMPRELT
LOOP1:
LCALLSB2
RELT:
DJNZR2,LOOP
SJMP$
PRGO:
RET
PRG1:
RET
END
21。
将DATA单元存放的以ASCII码表示的16进制数转换成十进制数存放于DATA+1单元。
解:
先将DATA的ASCII码转换成十六进制的数,再转换成十进制数。
数字的ASCII码转成十六进制数(即为十进制数)采用减30H
字母的ASCII码转成十六进制数采用减37H,十六进制再转十进制可采用先减0AH,再加10H;这样-37H-0AH+10H=—31H,可采用直接减31H。
数字与字母的ASCII的区别,可采用对D6的检测D6=1为字母的ASCII码,反之为数字的ASCII码。
ORG000H
SJMPTEST
ORG0030H
TEST:
MOVR0,#DATA1
MOVA,@R0;将DATA1的数给A
CLRC;
LOOP:
JBACC。
6,LOOP1;是字母,转LOOP1
SUBBA,#30H;是数字减30H
ED:
MOVDATA+1,A;入存
SJMP$;结束
LOOP1:
SUBBA,#31H;是字母减31H
SJMPED;
DATA1EQU30H
END
22.编一个将十六进制数转换成十进制数的子程序。
解:
一个单字节的十六进制数转成十进制数一般考虑用二字节BCD码来存放。
设转换后的数存放在R3(高)、R4(低)中。
ORG000H
SJMPTEST
ORG0030H
TEST:
MOVDPTR,#TAB;建立表头地址
MOVA,30H
ANLA,#0F0H
SWAPA;高半字节分离
ADDA,0E0H;高半字节数乘2
MOVB,A;暂存
MOVCA,@A+DPTR;
MOVR3,A;取转换后的高半字节存R3
INCDPTR;
MOVA,B;
MOVCA,@A+DPTR;
MOVR4,A;取转换后的低半字节存R4
MOVA,30H;
ANLA,#0FH;
ADDA,R4;
DAA;
MOVR4,A;加原数的低半字节(DAA)
MOVA,R3;
ADDCA,#00H;
DAA;
MOVR3,A;
RET;
TAB:
DB00H,00H,00H,16H,00H,32H,00H,48H,00H,64H
DB00H,80H,00H,96H,01H,12H,01H,28H,01H,44H
DB01H,60H,01H,76H,01H,92H,02H,08H,02H,24H
DB02H,40H,02H,40H,02H,56H
END
23.编一程序,将存储区DATA1单元开始的20个单字节数据依次与DATA2单元为起始地址的20个单字节数据进行交换。
解:
设DATA1、DATA2分别为内部RAM30H和50H单元。
ORG0000H
SJMPSTART
ORG0030H
START:
MOVR0,#30H;建立源地址指针
MOVR1,#50H;建立目标地址指针
MOVR6,#20;置计数长度
LOOP:
MOVA,@R0;取源地址数据
XCHA,@R1
MOV@R0,A;源地址数据与目标地址数据交换
INCR0;源地址指针修正
INCR1;目标地址指针修正
DJNZR6,LOOP;计数长度减1,不等于0继续循环
RET
END
24试编写一程序,将存储区DATA1单元开始的50个单字节逐一移至DATA2单元开始的存储区中.
解:
START:
MOVR0,#DATA1;建立源操作数地址指针
MOVR1,#DATA2;建立目标操作数地址指针
MOVR6,#50;置计数长度
LOOP:
MOVA,@R0
MOV@R0,A
INCR0
INCR1
DJNZR6,LOOP
RET
END
25试编写一采用查表法求1~20的平方数子程序(要求:
x在累加器A中,1≤x≤20,平方数高位存放在R6,低位在R7)
解:
为了方便起见,每一数的平方在表中统一用双字节来存放,这样只要把数乘以2加表头地址,就可以找到平方数的高字节存放的地址,连续取两个字节即可
ORG0000H
SJMPSTART
ORG0030H
START:
MOVDPTR,#TAB;建立源地址指针
DECA
MOVB,A
ADDA,B
MOVB,A
LOOP:
MOVCA,@A+DPTR
MOVR5,A
INCDPTR
MOVA,B
MOVCA,@A+DPTR
MOVR6,A
RET
TAB:
DB00H,00H,00H,01H,00H,04H,00H,09H,00H,16H;平方数用BCD表示(也可用DB00H,25H,00H,36H,00H,49H,00H,64H,00H,81H;十六进制表示)
DB01H,00H,01H,21H,01H,44H,01H,69H,01H,96H
DB02H,25H,02H,56H,02H,89H,03H,24H,03H,61H,04H,00H
END
若平方表从0的平方存放,把程序中红色的DECA指令去掉,若表从1的平方存放,则将DECA指令加上。
26试编写一个三字节无符号数乘法程序.
解:
OGR0000H
MOVR0,#5CH
MUL1:
MOVA,5AH
MOVB58H
MULAB
MOV@R0,A
MOVR3,B
MOVA,5BH
MOVB,5BH
MULAB
ADDA,R3
MOVR3,A
MOVA,B
ADDA,R2
MOVR2,A
MOVR1,#A
JNCLAST
INCR1
LAST:
MOVA,5BH
MOVB,29H
MULAB
ADDA,R2
INCR0
MOV@R0,A
MOVA,B
ADDCA,RI
INCR0
MOV@R0,A
MOVR5,#04H
MOVR1,#10H
LOOP:
MOVA,@R0
MOV@R1,A
INCR0
INCR1
BINBCD:
MOVR1,#48H
MOVR2,#04H
INCR2
CLRA
BB0:
MOV@R1,A
INCR1
DJNZR2,BB0
MOVA,#04H
MOVB,#8
MULAB
MOVR3,A
BB3:
MOVR0,#10H
MOVR2,#04H
CLRC
BB1:
MOVA,@R0
RLCA
MOV@R0,A
INCR0
DJNZR2,BB1
MOVR2,#04H
INCR2
MOVR1,#48H
BB2:
MOVA,@R1
ADDCA,@R1
DAA
MOV@R1,A
INCR1
DJZNR2,BB2
DJZNR3,BB3
SJMP$
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 整理 单片机 原理 运用 第三 答案