习题三答案单片机汇编程序设计基础.doc
- 文档编号:1258170
- 上传时间:2022-10-19
- 格式:DOC
- 页数:6
- 大小:49KB
习题三答案单片机汇编程序设计基础.doc
《习题三答案单片机汇编程序设计基础.doc》由会员分享,可在线阅读,更多相关《习题三答案单片机汇编程序设计基础.doc(6页珍藏版)》请在冰豆网上搜索。
单片机汇编程序设计基础 习题答案
一、填空题
1、给程序做注释使用 ;(或半角分) 号来标识。
2、注释可以写在 一行指令上 ,也可以写在 一个指令 之后。
3、在设计汇编语言源程序时,可以使用顺序结构的程序,也可以使用某些指令构成分支 结构、循环 结构和 子程序调用 结构的程序。
4、寻址方式是指 寻找操作数的方式 。
5、机器语言是 机器码的集合 。
6、MCS-51单片机的指令的一般格式中,包括 标号 、助记符 、 目的操作数 、源操作数 和 注释等部分。
7、MCS-51汇编语言源程序的扩展名为 .asm 。
二、程序设计题
1、求50H与40H单元内容之和,结果存入20H,进位位存入2lH。
解答:
MOV A。
50H
ADD A,40H
MOV 20H.A
CLR A
ADDCA.#00H
MOV 21H,A
SJMP $
2、编程实现双字节加法运算(R1)(R0)+(R7)(R6)一(31H)(30H)。
解答:
MOV A.R0
ADD A,R6
MOV 30H.A
MOV A,R1
ADDC A.R7
MOV 31H,A
SJMP $
3、试编写程序,求出内部RAM20H单元中的数据含“1”的数,并将结果存入21H单元。
解答
MOV 21H,#00H
MOV A,20H
CLR C
MOV R7,#08H
LOOP:
RLC A
JNC NEXT
INC 21H
NEXT:
DJNZ R7,LOOP
SJMP $
4、试编写程序,将内部RAM的20H~2FH共16个连续单元清零。
解答:
MOV R0,#20H
MOV R7,#10H
CLR A
NEXT:
MOV @R0,A
INC R0
DJNZ R7,NEXT
SJMP $
5、编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
解答:
STRAT:
MOV R0,#30H
MOV R7,#0FH
MOV DPTR,#3000H
LOOP:
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,LOOP
RET
6、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256).
解答:
ADDIO:
MOV R0,30H
MOV R7,#9
MOV A,@R0
LOOP:
INC R0
ADD A,@R0
DJNZ R7,LOOP
MOV 30H,A
RET
7、试编写程序,查找在内部RAM的30H~50H单元中出现FFH的次数,并将查找的结果存入51H单元。
解答:
MOV 51H,#00H
MOVR1,#30H
MOVR7,#21H
LOOP:
CJNE @R1,#0FFH,NEXT
INC51H
NEXT:
INC R1
DJNZ R7,LOOP
SJMP $
8、设单片机的fosc=6MHz,编写实现100ms延时的子程序。
解答:
DELAY:
MOV R7,#64H
A0:
MOV R6,#0FAH
DJNZ R6,$
DJNZ R7,A0
RET
9、从内部RAM的30H单元开始存放一组用补码表示的带符号数,其数目以存放在20H单元。
编写程序统计出其中的正数、0和负数的数目,并奖结果分别存入21H、22H、23H单元。
解答:
MOV R0,#30H
MOV 21H,#00H
MOV22H,#00H
MOV23H,#00H
MOV A,@R0
JZ NEXT1
JB ACC.7,NEXT2
INC23H
SJMP NEXT3
NEXT2:
INC 21H
SJMP NEXT3
NEXT1:
INC 22H
NEXT3:
INCR0
DJNZ20H,LOOP
SJMP$
10、在程序存储器中从tab开始的16个单元连续存放0-15的平方值,设计程序,任意给一个数x(0≤x≤15),查表求出z的平方值,并把结果存入y单元。
解答:
设x单元为30H,Y单元为31H。
文件名:
a.asm,查表求x的平方值,X的值在0~15之间。
ORG 3000H
MOV DPTR,#tab
MOV A,X
MOVCA,@A+DPTR
MOV y,A
SJMP $
tab:
DB00H,01H,04H,09H,10H,19H,24H,31H
DB40H,51H,64H,79H,90H,0A9H,0C4H,0E1H
X DATA30H
Y DATA 31H
END
11、从XX单元开始,连续存放10个无符号数,设计程序,从中找出最大值送入yy单元。
解答:
设XX单元为40H,YY单元为30H。
ORG0020H
MOV R0.#xx
MOV B,@R0
MOV R7.#09H
INC R0
LOOP:
MOV A,B
CLR C
SUBB A,@R0
JNC NEXT
MOV B,@R0
NEXT:
INC R0
DJNZ R7,LOOP
MOV YY,B
SJMP $
XXDATA 40H
YYDAIA 30H
END
12、从x单元开始,连续存放30个无符号数,统计奇数和偶数的个数,并分别存入y和z单元。
解答:
设x单元为30H,Y单元为50H,z单元为51H。
ORG 2000H
START:
MOV R1,#00H
MOV R2,#00H
MOV R7,#1EH
MOV R0,#X
LOOP:
MOV A,@R0
JNB ACC.0,NEXT
INC R1
SJMP A1
NEXT:
INCR2
Al:
INC R0
DJNZ R7,LOOP
MOV y,R1
MOV Z,R2
SJMP $
x DATA 30H
y DATA50H
z DATA 5lH
END
13、从x单元开始,连续存放30个带符号数,求出各个数的绝对值,将结果存入原单元。
解答:
设x单元为30H
START:
MOV R7,#1EH
MOV R0,#X
LOOP:
MOVA,@R0
JNB ACC.7,NEXT
CPL A
INC A
MOV @R0,A
NEXT:
INC R0
DJNZ R7,LOOP
SJMP $
X DATA 30H
END
14、用查表法编一子程序,将R3中的BCD码转换成ASCII码.
解:
MAIN:
MOV A,R3 ;待转换的数送A
MOV DPTR,#TAR ;表首地址送DPTR
MOVC A,@A+DPTR ;查ASCII码表
MOV R3,A ;查表结果送R3
RET
TAR DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
15、片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.
解:
START:
MOV R0,#40H ;数据块首地址送R0
MOV R7,#09H ;比较次数送R7
MOV A,@R0 ;取数送A
LOOP:
INC R0
MOV 30H,@R0 ;取数送30H
CJNE A,30H,NEHT ;(A)与(30H)相比
NEXT:
JNC BIE1 ;(A)≥(30H)转BIR1
MOV A,30H ;(A)<(30H),大数送A
BIE1:
DJNZ R7,LOOP ;比较次数减1,不为0,继续比较
MOV 50H,A ;比较结束,大数送50H
RET
16、利用调子程序的方法,进行两个无符号数相加。
请编主程序及子程序。
解 用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,R1指向另一个加数,字节存放到R2中作计数初值。
主程序:
JAFA:
MOV R0,#20H ;指向加数最低字节
MOV R1,#29H ;指向另一加数最低字节
MOV R2,#04H ;字节数作计数值
ACALL JASUB ;调用加法子程序
AJMP $
RTE
多字节加法子程序:
JASUB:
CLR C
JASUB1:
MOV A,@R0 ;取出加数的一个字节(4B无符号数加数)
ADDC A,@R1 ;加上另一数的一个字节
MOV @R0,A ;保存和数
INC R0 ;指向加数的高位
INC R1 ;指向另一加数的高位
DJNZ R2,JASUB1 ;全部加完了吗?
RET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 答案 单片机 汇编程序 设计 基础
![提示](https://static.bdocx.com/images/bang_tan.gif)