么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果?
MOV A,40H ;直接寻址 (40H)→A
MOV R0,A ;寄存器寻址 (A)→R0
MOV P1,#0F0H ;立即数寻址 0F0→P1
MOV @R0,30H ;直接寻址 (30H) →(R0)
MOV DPTR,#3848H ;立即数寻址 3848H→DPTR
MOV 40H,38H ;直接寻址 (38H) →40H
MOV R0,30H ;直接寻址 (30H) →R0
MOV P0,R0 ;寄存器寻址 ( R0 )→P0
MOV 18H,#30H ;立即数寻址 30H→18H
MOV A,@R0 ;寄存器间接寻址 ((R0)) →A
MOV P2,P1 ;直接寻址 (P1)→P2
最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H注意:→左边是内容,右边是单元
20.已知R3和R4中存放有一个16位的二进制数,高位在R3中,地位在R4中,请编程
将其求补,并存回原处。 MOV A,R3 ;取该数高8位→A
ANL A,#80H ;取出该数符号判断
JZ L1 ;是正数,转L1
MOV A,R4 ;是负数,将该数低8位→A
CPL A ;低8位取反
ADD A,#01H ;加1
MOV R4,A ;低8位取反加1后→R4
MOV A,R3 ;将该数高8位→A
CPL A ;高8位取反
ADDC A,#00H ;加上低8位加1时可能产生的进位
MOV R3,A ;高8位取反加1后→R3
L1: RET
21.已知30H和31H中村有一个16位的二进制数,高位在前,低位在后,请编程将他们乘以2,在存回原单元中。
CLR C ;清进位位C
MOV A,31H ;取该数低8位→A
RLC A ;带进位位左移1位
MOV 31H,A ;结果存回31H
MOV A,30H ;取该数高8位→A
RLC A ;带进位位左移1位
MOV 30H,A ;结果存回30H
22.假设允许片内定时器/计数器中断,禁止其他中断。设置IE值。
用字节操作指令: MOV IE #8AH 或MOV A8H,#A8H
用位操作指令:SETB ET0
SETB ET1
SETB EA
23.设89 C51的片外中断为高优先级,片内为低优先级,设置IP值。
用字节操作指令:MOV IP,#05H或MOV 0B8H,#05H
用位操作指令:SETB PX0
SETB PX1
CLR PS
CLR PT0
CLE PT1
24.89C51单片机内有两个16位定时器/计数器,即T0,T1.
第三章
1、? 指令:CPU根据人的意图来执行某种操作的命令
指令系统:一台计算机所能执行的全部指令集合
机器语言:用二进制编码表示,计算机能直接识别和执行的语言
汇编语言:用助记符、符号和数字来表示指令的程序语言
高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言
2、? 见第1题
3、? 操作码 [目的操作数] [,源操作数]
4、? ?
寻址方式 寻址空间 立即数寻址 程序存储器ROM 直接寻址 片内RAM低128B、特殊功能寄存器 寄存器寻址 工作寄存器R0-R7、A、B、C、DPTR 寄存器间接寻址 片内RAM低128B、片外RAM 变址寻址 程序存储器(@A+PC,@A+DPTR) 相对寻址 程序存储器256B范围(PC+偏移量) 位寻址 片内RAM的20H-2FH字节地址、部分SFR 5、? SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址
6、? MOV A,40H ;直接寻址 (40H)→A
MOV R0,A ;寄存器寻址 (A)→R0
MOV P1,#0F0H ;立即数寻址 0F0→P1
MOV @R0,30H ;直接寻址 (30H) →(R0)
MOV DPTR,#3848H ;立即数寻址 3848H→DPTR
MOV 40H,38H ;直接寻址 (38H) →40H
MOV R0,30H ;直接寻址 (30H) →R0
MOV P0,R0 ;寄存器寻址 ( R0 )→P0