单片机第三章作业正确答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章作业
1、什么是指令系统、机器语言和汇编语言?
答:指令系统:指令系统是机器提供给用户编写程序的一组指令集,指令系统描述了单片机所有运算和控制的逻辑功能,不同的机器指令系统是不同的。
机器语言:机器语言是计算机执行命令时直接读取的代表一定功能的二进制码。是由汇编语言经过编译后形成的具有特定规范的二进制数字序列。
汇编语言:采用助记符形式编写的程序,汇编语言一般来说面对的对象是用户,是容易读容易记的,是单片机支持的能完成指定功能的指令系列,构成汇编语言程序的是汇编语句。
2、在单片机应用中广泛使用何种语言?它们能直接执行吗?为什么?
答:在单片机应用中广泛使用的是汇编语言。它们不能直接执行,得先转换成机器语言,再执行。
原因:汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种助记符形式的设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。用汇编语言编写的程序,要由一种程序将汇编语言翻译成机器语言,机器才能执行,汇编语言把汇编程序翻译成机器语言的过程称为汇编。这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
5、说明十进制调整的原因和方法。
答:为了方便十进制数的计算,指令系统中提供了一组专门用于十进制数的调整指令。通常表示十进制数使用的BCD码有两种格式即组合的BCD码(Packed BCD Format)和非组合的BCD码(Unpacked BCD Format),也可以称作压缩BCD码和非压缩BCD码。
组合的BCD码用4位二进制数表示一个十进制数位,整个十进制数形式为一个顺序的以4位为一组的数串。而非组合BCD码则以8位为一组表示一个十进制数位,8位中的低4位表示BCD码,高4位没有意义。
在进行BCD码的加减法运算时,如果有进位,会影响PSW的Cy和AC位,根据这两个标志位的情况,调整加减运算的结果,使之变成正确的BCD码结果,调整的具体做法是:
Cy AC 结果+
0 0 00000000
0 1 00000110
1 0 01100000
1 1 01100110
如果没有进位,而相加的结果超过9,则在各位上也要加上相应的06H
8、试分析执行以下程序段后各寄存器的值。
MOV SP,#3AH
MOV A,#20H
MOV B,#90H
PUSH A
PUSH B
POP A
POP B
答: (1) MOV SP,#3AH (SP)=3AH
(2) MOV A,#20H (A)=20H
(3) MOV B,#90H (B)=90H
(4) PUSH A (3BH)=20H,(SP)=3BH
(5) PUSH B (3CH)=90H,(SP)=3CH
(6) POP A (A)=90H,(SP)=3BH
(7) P0P B (B)=20H,(SP)=3AH
9、已知(A)=7AH,(R0)=30H,(30H)=A5H,(PSW)=80H,请填写各条指令的执行结果。
(1) XCH A,RO (2)XCH A,30H
(3) XCH A,@RO (4) SWAP A
(5) ADD A,RO (6) ADD A,30H
(7) ADD A,#30H (8) SUBB A,#30H
答:(1) XCH A,R0 (A)=30H,(R0)=7AH
(2)XCH A,30H (A)=A5H,(30H)=7AH
(3) XCH A,@R0 (A)=A5H,((R0))=7AH
(4) SWAP A (A)=A7H
(5) ADD A,R0 (A)=AAH
(6) ADD A,30H (A)= 1FH------Cy=1
(7) ADD A,#30H (A)=AAH
(8) SUBB A,#30H (A)=4AH
11、已知(A)=83H,(R0)=17H,(17H)=34H,请写出执行完下列程序段后A的内容。
ANL A,#17H
ORL 17H,A
XRL A,@R0
CPL A
答:(1)、 ANL A,#17H ; (A)=03H
(2)、 ORL 17H,A ; (17H)=37H
(3) XRL A,@R0; (A)=37H
(4)、 CPL A; (A)=C8H
12、阅读些列程序说明其功能
MOV R0,#dam
MOV A,@R0
RL A
MOV R1,A
RL A
RL A
ADD A,R1
MOV R0,A
程序的功能:限定地址dam中的数据小于十进制的25,则程序的功能是将该地址中的数据乘以10,并送回该地址。
13、已知两个十进制数分别在内部RAM的40H单元和50H单元开始存放(低位在前),其字节长度存放在内部RAM的30H单元中。编程实现两个十进制数求和,并把结果存放在40H 开始的单元中。
答:(1)设两个十进制数均为压缩BCD码的形式。存储时为每字节:高位BCD低位BCD.
ORG 2000H
START:MOV R0,#40H
MOV R1,#50H
MOV R2,30H
CLR C
MING:MOV A,@R0
ADDC A,@R1
DAA
MOV @R0,A
INC R0
INC R1
DJNZ R2,MING
MOV 20H,C
SJMP $
END
执行结果,压缩BCD码格式,C为最高位1或者0,其余顺序从40H开始的数据存放:(40H):十位个位,(41H):千位百位,……
(2)设十进制数为非压缩BCD码,则其码制为[0000(四位BCD)]
ORG 2000H
START:MOV R0,#40H
MOV R1,#50H
MOV R2,30H
CLR C
MING:MOV A,@R1
ANL A,#0FH
MOV @R1,A
MOV A,@R0
ANL A,#0FH
ADDC A,@R1
DAA
JB PSW6,INCS0;如果相加D3向D4有进位则说明有溢出
CLR C
SJMP MING1
INCS0:SETB C
MING1:ANL A,#0FH
MOV @R0,A
INC R0
INC R1
DINZ R2,MING
SJMP $
END
程序执行的结果:非压缩BCD码格式,C为最高位,(40H):个位;(41H):十位,……