11个8位寄存器的88位。位寻址给出的是直接地址。
2.位寻址和字节寻址如何区分?在使用时有何不同?
由寻址方式可以看出,不同的寻址方式所寻址的存储空间是不同的。正确地使用寻址方式不仅取决于寻址方式的形式,而且取决于寻址方式所对应的存储空间。字节寻址必须是对8位存储单元,位寻址的存储空间只能是片内RAM的20H~2FH字节地址中的所有位(位地址为00H~7FH)和部分SFR的位,决不能是该范围之外的任何单元的任何位。
3.要访问专用寄存器和片外数据寄存器,应采用什么寻址方式?举例说明。 访问专用寄存器:可采用直接寻址或寄存器寻址。
访问片外数据寄存器:寄存器间接寻址 4.什么是堆栈?其主要作用是什么? 堆栈是后进先出的数据存储区
一般用于中断处理过程中,若需要保护现场数据(如内部RAM单元的内容),可使用入栈指令,将数据压入堆栈,中断处理过程执行完后,再使用出栈指令恢复现场数据。
5.编程将内部RAM的20H单元的内容传送给外部RAM的2000H单元。
MOV A,20H
MOV DPTR,#2000H MOVX @DPTR,A
6.编程将内部数据存储器20H~30H单元内容清零。 MOV R0,#20H
MOV A,#0 MOV R3,#17 LOP :MOV @R0,A
9
INC R0 DJNZ R3,LOP
7.编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则清50H单元为0。
MOV R3, #10H
MOV A,#0AAH MOV R0,#31H LOP :INC R0 SUBB A,@R0 JZ LOP1 DJNZ R3,LOP MOV 50H,#0H AJMP LOP3 LOP1:MOV 50H,#0FFH LOP3: AJMP 1OP3
8.查找20H~4FH单元中出现00H的次数,并将查找结果存入 MOV R3,#30H MOV R0,#20H MOV A,#0
LOP: MOV A,@R0 JZ LOP1
10
50H单元。 LOP3: INC R0 DJNZ R3,LOP AJMP LOP2 LOP1: INC 50H AJMP LOP3 LOP2:AJMP LOP2
9.已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行完后的A中的内容。
ANL ORL
XRL CPL
A, @R0 A A, #17H 17H, A
(A)=11001011B=0CBH
10.已知单片机的fosc=12MHz,分别设计延时0.1s、1s、1min的子程序。 设晶振频率为12MHz,一个机器周期为1μs,
延时1ms的子程序:
DELAY: MOV R7, #0FFH LOOP: NOP NOP DJNZ R7, LOOP RET
执行时间(机器周期) 1 1 1 2 2
该程序段的总的执行时间为:
(1+4×255+2)?s=1023μs≈1ms
延时时间为100ms的子程序:
DELAY: MOV R5,#64H 对延时1ms的子程序循环100次。
LOP1: MOV R7, #0FFH LOOP: NOP NOP DJNZ R7, LOOP
DJNZ R5,LOP1
11
RET
延时时间为1s的子程序:
DELAY1: MOV R3, #0AH 对延时100ms的子程序循环10次 DELAY: MOV R5,#64H 。 LOP1: MOV R7, #0FFH LOOP: NOP NOP DJNZ R7, LOOP
DJNZ R5,LOP1
DJNZ R3, DELAY
RET
延时时间为60s的子程序: 对延时1s的子程序循环60次
11.MCS-51汇编语言中有哪些常用的伪指令?各起什么作用? BIT(地址符号命令)
END(结束汇编) EQU(等值) DB(定义字节)
DW(定义字) DS(定义存储单元) ORG(汇编起始地址)
12.比较下列各题中的两条指令有什么异同?
① MOV A, R1; MOV 0E0H, R1 指令功能相同,寻址方式表示不同
12