华中科技大学 单片微型计算机第四章习题答案.docx
- 文档编号:9538583
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:14
- 大小:19.57KB
华中科技大学 单片微型计算机第四章习题答案.docx
《华中科技大学 单片微型计算机第四章习题答案.docx》由会员分享,可在线阅读,更多相关《华中科技大学 单片微型计算机第四章习题答案.docx(14页珍藏版)》请在冰豆网上搜索。
华中科技大学单片微型计算机第四章习题答案
第四章习题答案
4.4ORG0000H
LJMPMAIN
ORG0040H
MAIN:
MOVDPTR,#2000H;置地址指针初值
MOVR2,#100;数据单元长度
CLRA
LOOP:
MOVX@DPTR,A
INCDPTR;
DJNZR2,LOOP;修改地址指针
END
4.5ORG0000H
LJMPMAIN
ORG0040H
MAIN:
MOVR0,#40H;置片内地址指针初值
MOVDPTR,#2100H;置片外地址指针初值
MOVR2,#21H;置数据长度
LOOP:
MOVA,@R0
MOVX@DPTR,A
INCR0;修改地址指针
INCDPTR
DJNZR2,LOOP
END
4.8完成(a+b)2的计算
ORG0000H
LJMPMAIN
ORG0040H
MAIN:
MOVDPTR,#3000H
MOVXA,@DPTR;取数a
MOVR2,A;暂存a
INCDPTR
MOVXA,@DPTR;取数b
ADDA,R2;a+b
MOVB,A
MULAB;(a+b)2->A
;分支,方法一:
CJNEA,#0AH,L1
SJMPL3
L1:
JCL2
SUBBA,#0AH
SJMPL3
L2:
ADDA,#0AH
L3:
MOVDPTR,#3002H
MOVX@DPTR,A
SJMP$
;分支,方法二:
MOVR7,A
CLRC
SUBBA,#10
JNZL1
MOVA,R7;A=10,恢复A中的值
SJMPDONE
L1:
JNCDONE
ADDA,#20;A<10,由于此前A中减去了10,所以此处加上20
DONE:
MOVDPTR,#3002H;A>10
MOVX@DPTR,A
SJMP$
4.9方法一:
;说明:
每一轮循环的大数存入累加器A中
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#1000H;置地址指针初值
MOVR2,#100;数据长度初值
MOVR4,#0;暂存结果单元清零
LOOP:
MOVXA,@DPTR;取数
MOVR3,A;暂存
MOVA,R4;
CLRC;比较
SUBBA,R3
JNCNEXT
MOVA,R3;大数存入累加器A
SJMPNEXT1
NEXT:
ADDA,R3;恢复累加器A中的值
NEXT1:
INCDPTR;修改地址指针
MOVR4,A
DJNZR2,LOOP
MOVDPTR,#1100H
MOVX@DPTR,A;存结果
SJMP$
方法二:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#1000H;置地址指针初值
MOVR2,#99;数据长度初值
MOVXA,@DPTR;取数
MOVR3,A;暂存
LOOP:
INCDPTR
MOVXA,@DPTR
CLRC;比较
SUBBA,R3
JNCNEXT
MOVA,R3;大数存入累加器A
SJMPNEXT1
NEXT:
ADDA,R3;恢复累加器A中的值
NEXT1:
DJNZR2,LOOP
MOVDPTR,#1100H
MOVX@DPTR,A;存结果
SJMP$
方法三:
大数存入R3
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#1000H;置地址指针初值
MOVR2,#100;数据长度初值
MOVR3,#0;暂存结果单元清零
LOOP:
MOVXA,@DPTR;取数
CLRC;比较
SUBBA,R3
JCNEXT
MOVR3,A;大数存入累加器A
NEXT:
INCDPTR;修改地址指针
DJNZR2,LOOP
MOVA,R3
MOVDPTR,#1100H
MOVX@DPTR,A;存结果
SJMP$
4.10判断带符号数为正数或负数的指令组合有:
(1)JNZ+JBACC.7
(2)CJNEA,#7FH,L1+JC(JNC)(3)CJNEA,#0,L1+JBACC.7
错误的指令组合有:
(1)CJNEA,#0,L1+JC(JNC)
(2)SUBBA,#0+JC(JNC)
方法一:
;说明:
one-存放大于零的数的个数;two-存放等于零的
;数的个数;three-存放小于零的数的个数
ONEEQU30H
TWOEQU31H
THREEEQU32H
ORG0000H
LJMPSTART
ORG0040H
START:
MOVONE,#0
MOVTWO,#0
MOVTHREE,#0
MOVDPTR,#2100H
MOVR5,#100
LOOP:
MOVXA,@DPTR
JNZL1
INCTWO;零的个数加1
SJMPDONE
L1:
JBAcc.7,L2;若用JC指令,则错误
INCONE;正数的个数加1
SJMPDONE
L2:
INCTHREE;负数的个数加1
DONE:
INCDPTR;修改地址指针
DJNZR5,LOOP
SJMP$
END
方法二:
;说明:
one-存放大于零的数的个数;two-存放等于零的
;数的个数;three-存放小于零的数的个数
ONEEQU30H
TWOEQU31H
THREEEQU32H
ORG0000H
LJMPSTART
START:
MOVONE,#0
MOVTWO,#0
MOVTHREE,#0
MOVDPTR,#2100H
MOVR5,#100
LOOP:
MOVXA,@DPTR
CJNEA,#80H,L1
L2:
INCTHREE;负数的个数加1
SJMPDONE
L1:
JNCL2
JZL3
INCONE;正数的个数加1
SJMPDONE
L3:
INCTWO;零的个数加1
DONE:
INCDPTR;修改地址指针
DJNZR5,LOOP
SJMP$
方法三:
;说明:
one-存放大于零的数的个数;two-存放等于零的
;数的个数;three-存放小于零的数的个数
ONEEQU30H
TWOEQU31H
THREEEQU32H
ORG0000H
LJMPSTART
START:
MOVONE,#0
MOVTWO,#0
MOVTHREE,#0
MOVDPTR,#2100H
MOVR5,#100
LOOP:
MOVXA,@DPTR
JZL1
ANLA,#80H
JZL2
INCTHREE;负数的个数加1
SJMPDONE
L1:
INCTWO;零的个数加1
SJMPDONE
L2:
INCONE;正数的个数加1
DONE:
INCDPTR;修改地址指针
DJNZR5,LOOP
SJMP$
END
4.12;负数求补,需保持符号位不变,方法有:
XRLA,#7FH
INCA
CPLA
ADDA,#81H
CPLA
ADDA,#1
SETBACC.7
ORG0000H
LJMPMAIN
ORG0040H
MAIN:
MOVR1,#30H;首地址
MOVR7,#100;数据长度
LP1:
MOVA,@R1
JNBACC.7,LP2
XRLA,#7FH;负数求补
INCA
LP2:
MOV@R1,A
INCR1;修改地址指针
DJNZR7,LP1
END
4-15方法一:
;说明:
压缩BCD码转换为ASCII码
;入口参数-压缩BCD码在A中,出口参数-高4为BCD码转化后的ASCII码在R6中,低4位BCD码转换后的ASCII码在R5中
;数据逆序存放,即低字节存入低地址,高字节存入高地址
ORG0000H
LJMPMAIN
ORG0040H
BCDASC:
PUSHR7
MOVR7,A
ANLA,#0FH;低4位转换
ADDA,#30H
MOVR5,A
MOVA,R7
ANLA,#0F0H;高4位转换
SWAPA
ADDA,#30H
MOVR6,A
POPR7
RET
MAIN:
MOVR4,#5
MOVDPTR,#2000H;源地址
MOVR3,#05H;目的首地址低8位
LOOP:
MOVXA,@DPTR
PUSHDPL;源地址保护
LCALLBCDASC
MOVDPL,R3
MOVA,R5
MOVX@DPTR,A
INCDPL
MOVA,R6
MOVX@DPTR,A
MOVR3,DPL
POPDPL
INCDPTR
INCR3
DJNZR4,LOOP
SJMP$
END
方法二:
ORG0000H
LJMPMAIN
ORG0040H
MAIN:
MOVDPTR,#2000H
MOVR7,#5;数据长度
MOVR6,#05H;目标地址低8位
MOVR5,#00H;源地址低8位
LOOP:
MOVDPL,R5
INCR5
MOVXA,@DPTR;取数
MOVR4,A;数据送入R4保护
MOVDPL,R6
INCR6
LCALLBCDASC;低4位转换成ASCII码
MOVA,R4
SWAPA
MOVDPL,R6
INCR6
LCALLBCDASC;高4位转换成ASCII码
DJNZR7,LOOP
SJMP$
BCDASC:
ANLA,#0FH;屏蔽高4位,保留低4位
ADDA,#30H
MOVX@DPTR,A;存数据
RET
END
4.17参照教材P103例4.2.23
ORG1000H
SUBMB:
CLRC
LOOP:
MOVA,@R0;取被减数
SUBBA,@R1;相减
MOV@R0,A;存结果
INCR0;修改地址指针
INCR1
DJNZR2,LOOP
JNCDONE
SETBF0;若有借位,置位标志位
DONE:
RET
4.26两个两位BCD码
ORG1000H
BCDBIN:
MOVR0,#20H;BCD码首地址
MOVR1,#30H;二进制数首地址
MOVR3,#02H;数据长度
LOOP:
MOVA,@R0;取BCD码
ANLA,#0F0H;取高4位,屏蔽低4位
SWAPA
MOVB,#10
MULAB;高4位×10
MOVR2,A
MOVA,@R0
ANLA,#0FH;取低4位,屏蔽高4位
ADDA,R2;高4位×10+低4位
MOV@R1,A
INCR1;修改地址指针
INCR0
DJNZR3,LOOP
RET
;两位BCD码转换为二进制数子程序,R1为二进制数地址指针,R0为BCD码地址指针
BCDBIN:
MOV@R1,#0
MOVA,@R0
XCHDA,@R1
SWAPA
MOVB,#10
MULAB
ADDA,@R1
MOV@R1,A
RET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 单片微型计算机第四章习题答案 单片 微型计算机 第四 习题 答案