MOV MOV MOV
R2,#100 R7,#00 R6,#00
LOOP: MOVX A,@DPTR
ADD A,R6 MOV R6,A MOV A,R7 ADDC A,#0 MOV R7,A INC
DPTR
DJNZ R2,LOOP SJMP $
18.编程实现R4R3?R2,结果放于R7R6R5中。 程序:
ORG
0100H
MUL1:MOV A,R2
MOV B,R3
MUL AB ;R2?R3,结果的低字节直接存入积的R5 MOV R5,A ;结果的高字节存入R6中暂存起来 MOV R6,B
MUL2:MOV A,R2
MOV B,R4
MUL AB ;R2?R4,结果的低字节与R6相加后,再存入
R6中
ADD A,R6 MOV R6,A
MOV A,B ;结果的高字节加上进位位后存入R7中 ADDC A,#00 MOV R7,A SJMP
$
19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。
程序:
MOV C,20H.0 MOV A.0,C MOV C,20H.1 MOV A.1,C MOV C,21H.2 MOV A.2,C MOV C,21H.3 MOV A.3,C MOV C,22H.4 MOV A.4,C MOV C,22H.5 MOV A.5,C MOV C,23H.6 MOV A.6,C MOV C,23H.7
MOV A.7,C MOV R2,A
20.用查表的方法实现一位十六进制数转换成ASCII。
程序:(设一位十六进制数放在R2中,轮换的ASCII也放于R2中) C16STASC:MOV
MOV
A,R2
DPTR,#TAB
MOVC A,@A+DPTR MOV RET
R2,A
TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,391H,41H,42H,43H,44H,45H,46H
21.编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。
程序: MOV MOV MOV
DPTR,#2000H R3,#100 R2,#00
LOOP: MOVX A,@DPTR
JNZ INC
NEXT R2
DPTR
NEXT:INC
DJNZ R3,LOOP SJMP $
第四章
1. C语言有哪些特点? 答:C语言具有以下特点:
1) 语言简洁、紧凑,使用方便、灵活 2) 运算符丰富
3) 数据结构丰富,具有现代化语言的各种数据结构 4) 可进行结构化程序设计
5) 可以直接对计算机硬件进行操作 6) 生成的目标代码质量高,程序执行效率高 7) 可移植性好
2. 有哪些数据类型是MCS-51单片机直接支持的?
答:MCS-51单片机直接支持的数据类型标准分为基本数据类型和组合数据类型,基本数据类型有字符型char、短整型short、整型int、长整型long、浮点型float、双精度型double、特殊功能寄存器型和位类型,其中char型与short型相同,float型与double型相同。组合数据类型有数组类型、结构体类型、共同体类型和枚举类型,另外还有指针类型和空类型。
3. C51特有的数据类型有哪些?
答:C51特有的数据类型有特殊功能寄存器型和位类型。
4. C51中的存储器类型有几种,它们分别表示的存储器区域是什么? 答:C51中的存储器类型有6种,分别如下: data:直接寻址的片内RAM低128B,访问速度快
bdata:片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问 idata:间接寻址访问的片内RAM,允许访问全部片内RAM pdata:用Ri间接访问的片外RAM低256B
xdata:用DPTR间接访问的片外RAM,允许访问全部64KB片外RAM code:程序存储器ROM 64KB空间
5. 在C51中,bit位与sbit位有什么区别?
答:bit位类型符用于定义一般的位变量。存储器类型只能是bdata、data、idata,只能是片内RAM的可位寻址区,严格来说只能是bdata。 sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。
6. 在C51中,通过绝对地址来访问的存储器有几种?
答:通过绝对地址来访问存储器有三种方法:1. 使用C51运行库中预定义宏。2. 通过指针访问。3. 使用C51扩展关键字_at_
7. 在C51中,中断函数与一般函数有什么不同?
答:中断函数在定义时后面带interrupt m修饰符,m的取值为0~31,对应的中断情况如下:0——外部中断0,1——定时/计数器T0,2——外部中断1,3——定时/计数器T1,4——串行口中断,5——定时/计数器T2,其他值预留。
编写MCS-51中断函数需要注意如下几点。
(1) 中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。
(2) (3)
中断函数没有返回值。
在任何情况下都不能直接调用中断函数
(4) 如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会产生不正确的结果。
(5) C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容。
(6) C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。