微机原理与应用作业ch
4.3请指出下列指令中源操作数的寻址方式,并注释每条指令。
U20EQU20H
U30 EQU30H
(1)MOV A, #U20; 立即寻址
(2)MOV R1, #30H;立即寻址
(3)MOV A,U30;直接寻址
MOV32H P1常见错误:隐含寻址
(4)MOV 32H,P1;直接寻址
(5)MOV@R1,A;寄存器寻址
(6)MOV U20, #120 ;立即寻址
(7)MOV A,@R1;寄存器间接寻址
(8)MOV02H,A;寄存器寻址
4.5请注释下列每条指令,并给出指令的机器码。
U20EQU 30H 机器码
EQU30H
(1)MOV A,#U207430H
(2)MOV R1,A F9H 1111,1nnn,nnn(R1)=001
(3)MOV A,U20E530H
(4)MOV U20,A F530H
(5)MOV A,P1E590H;P1的地址90H
A P1=90H
(6)MOV 20H,A F520H
(7)MOV@R1,A F7
(8)MOV U20,#1275300CH;#12---0CH
4.5请注释下列每条指令,并给出指令的机器码。
U20EQU 30H 机器码常见错误
EQU30H
(1)MOV A,#U20
(2)MOV R1,A
(3)MOV A,U20E530H 1110 0101 30H
1110 0101 U20
MOV A,P1E590H1110 0101 P1
1110 0101
4.6已知内部数据存储器中,(23H)=12H,(45H)=34H,
阅读下列程序,然后填空。
(1)第1条指令执行结束时,PC=2001H
(2)第6条指令长度是3字节
条指令时外部数据存储器
(3)执行到第7条指令时,外部数据存储器1000H单元的内容是:00H。
(4)第7条指令执行完成时,(45H)=12H
(5)第9条指令有错误,原因是:MOXA指令不支持Rn寻址。
4.8请注释下列每条指令(包括SP的值),并给出程序执行后51H、52H和A
中的数据。
中的数据
U51EQU51H
U52EQU52H
MOV SP,#1FH;(SP)=1FH
INC SP; (SP)=20H
;(SP)=20H
MOV A,#56H;(A)=56H
PUSH ACC; (SP)= (SP)+1=21H, (21H)=56H
(SP)(SP)121H(21H)56H POP U51;(51H)=56H, (SP)= (SP)-1=20H
MOV U52,#65H;(52H)=65H
U2#6H(2H)6H
PUSH52H; (SP)= (SP)+1=21H, (21H)=65H
POP ACC; (A)=65H, (SP)= (SP)-1=20H
DEC SP; (SP)=1FH
·······
解:(51H)=56H, (52H)=65H , (A)=65H ,(SP)=1FH
4.9请编写程序,完成下列数据的传送或交换功能。()内部数据存储器,单元交换数据
(1)56H,57H
MOV A,56H
XCH A,57H
MOV56H,A
常见错误:
常见错误
MOV R1, #56H
MOV A, #57H
,
XCH A,R1
4.9请编写程序,完成下列数据的传送或交换功能。
(2)内部数据存储器33H,与外部数据存储器1234H单元交换数据
33H
MOV DPTR, #1234H
MOVX A, @DPTR
XCH A,33H
MOVX @DPTR,A
错误:
错误
MOV R1, #1234H
MOV A, #33H
XCH A, @R1
@
4.9请编写程序,完成下列数据的传送或交换功能。
(3)程序存储器2000H,2001H单元数据传送到30H,31H单元
MOV DPTR,#2000H
CLR A
MOVC A@A+DPTR 错误:——用错指令
MOVC A,@A+DPTR
MOV 30H,A
MOVX A,@DPTR
MOV DPTR,#2001H CLR A ——指令书写错误
MOVC A,@DPTR
MOVC A@DPTR+A
MOVC A,@A+DPTR MOV31H A MOVC A,@DPTR A
MOV 31H,A
4.10请分析下面的程序,并给出A和PSW中Cy、AC、OV、P的值。
(A)=7FH,CY=0,AC=0,OV=0,P=1
4.11请编写5AH+6BH的加法运算程序,并分析结果和Cy、AC、OV、P。411的加法运算程序并分析结果和
(),,,,
(A)=C5H,CY=0,AC=1,OV=1,P=0
4.12请编写2字节十六进制无符号数加法运算程序。(略)
4.14请编写1字节2位十六进制无符号数乘法运算程序。
MOV A,#XX
MOV B,#YY 错误:
, MUL AB MOV R0,#35H MOV A,@R0 INC R0
ANL A,@R0 RET
4.16P1b6b3b1
请编写程序将的、、复位,其余位保持不变,注意各位要同时变化。
答ANL P1或ANL90H#0B5H
答:ANL P1,#0B5H;或,ANL 90H,#0B5H
错误:
MOV P1,36H
CLR P16错误:
ANL P1,B5H
错误:
ORL P1,#4AH
CLR P1.6 CLR P1.3 CLR P1.1或
ANL P1,#B5H
ANL 36H,P1 RET
4.19请编写程序将内部数据存储器30H、31H、32H单元中的数扩大为2倍。
解1:
CLR C 解2:
CLR C
MOV R0,#30H MOV A,@R0MOV R2,#03H MOV R1,#30H
MOV A,@R0;30H RLC A
MOV @R0,A
CLR C
FF1:MOV A,@R1
INC R0
MOV A,@R0;31H RLC A ADDC A,@R1 MOV @R1,A
RLC A MOV @R0,A INC R0INC R1
DJNZ R2,FF1
INC R0
MOV A,@R0;32H RLC A
MOV @R0,A
END
4.20已知内部数据存储器33H单元中有一个数,请编写程序统计数中1的个
数。
CLR C
MOV R0, #08H
MOV R2,#00H
MOV A,33H
FF1:RRC A
JNC FF2
INC R2
FF2:DJNZ R2,FF1
END
MOV;
R2,#0;
MOV A, 33H
JNB ACC.0,JB1; b0=0?
;错误:
;
INC R2;
JB1:JNB ACC.1,JB2; b1=0?
INC R2
;b2=0?
MOV R2,#0;
JNB33H.0,JB1 ; b0=0?
JB2:JNB ACC.2,JB3; b20?
INC R2
JB3:JNB ACC.3,JB4; b3=0?
INC R2
·······
JB4:JNB ACC.4,JB5; b4=0?
INC R2
JB5JNB ACC.5JB6; b5=0?
J5:J CC5,J6;b50
INC R2
JB6:JNB ACC.6,JB7; b6=0?
INC R2
JB7:JNB ACC.7,JBE; b7=0?
INC R2
JBE:RET; 返回
作业
4.21请编写程序从P1.1引脚输出16个脉冲,占空比无要求。421P11个脉冲占空比无要求MOV R2,#16
CLR P11
CLR P1.1
FF1:SETB P1.1
LCALL DLY
CLR P1.1
LCALL DLY
DJNZ R2,FF1
RET
DLY: MOV R6,#0F0H
DLY1:NOP
DJNZ R6,DLY1
RET
END
4.22请分析下面的程序,给出入口参数、出口参数、出现断点时的断点地址
及SP变化。
ORG1000H
ORG 1000H
MDA EQU 20H
MDB EQU 21H
MDC EQU 22H MOV SP,#20H 字节数地址
31000H
MOV A,MDA LCALL SQR MOV 21003H
31005H
断点PC=1008H,SP=22H
入口参数:A=(MDA)
出参数
MOV R1,A MOV A,MDB LCALL SQR 11008H
21009H
3100BH
出口参数:A=(MDA)2
ADD A,R1 MOV MDC,A 1100EH
2100FH
断点PC=100EH,SP=22H
入口参数:A=(MDB)
```````
ORG 2000H SQR:MOV B A 出口参数:A=(MDB)2
SQR:MOV B,A
MUL AB
RET 22000H 12002H 12003H
ORG 1000H
MDA EQU 20H MDB EQU
MDB EQU 21H
MDC EQU 22H MOV SP#20H
错误字节数地址
MOV SP,#20H MOV A,MDA LCALL SQR
1、伪指令占用ROM程序存
储器地址。
指令占用字节数错误31000H
21003H
31005H
MOV R1,A MOV A,MDB LCALL SQR
2、指令占用字节数错误。
不知道断点是那个地址11008H
21009H
LCALL SQR ADD A,R1 MOV MDC,A
3、不知道断点是那个地址。
4、不知道入口参数、出口参3100BH
1100EH
MOV MDC,A ```````
ORG 2000H
数的含义。2100FH
SQR:MOV B,A
MUL AB 22000H 12002H
RET12003H
4.23请编写程序,当内部数据存储器30H单元中的X满足下列任一条件时,
都转移到PASS处执行程序,不满足时置位F0。
(1) X>=60, (2) X<100 (3) X=59 (4) X<=80 (5) x>75
(1)
MOV A,30H
CLR C (2)
MOV A,30H
CLR C
CLR C
CJNE A,#60,AA AA:JNC
CLR C
CJNE A,#100,AA AA:JC
AA: JNC PASS;X>=60跳SETB F0
SJMP $AA: JC PASS;X<100跳SETB F0
SJMP $
PASS:········
SJMP $PASS:········
SJMP $
4.23请编写程序,当内部数据存储器30H单元中的X满足下列任一条件时,
都转移到PASS处执行程序,不满足时置位F0。
(1) X>=60, (2) X<100 (3) X=59 (4) X<=80 (5) x>75
(3)解1
MOV A,30H
CLR C (3)解2
MOV A,30H
CLR C
CLR C
CJNE A,#59,AA ;不等—跳SJMP CLR C SUBB A,#59 JZ
SJMP PASS;相等AA: SETB F0
SJMP $JZ PASS; SETB F0 SJMP $
PASS:········
SJMP $PASS:········
SJMP $
4.23请编写程序,当内部数据存储器30H单元中的X满足下列任一条件时,
都转移到PASS处执行程序,不满足时置位F0。
(1) X>=60, (2) X<100 (3) X=59 (4) X<=80 (5) x>75
(4)解
MOV A,30H
CLR C (5)解
MOV A,30H
CLR C
CLR C
CJNE A,#80,AA ;不等—跳SJMP;X=80CLR C
CJNE A,#75,AA ;不等—跳SETB F0;X=75
SJMP PASS;X=80 跳AA: JC PASS ;X<80 跳
SETB F0
BB:SETB F0 ;X75 SJMP $
AA: JNC PASS ;X>75 跳
SJMP $ PASS:········
SJMP$
SJMP BB ;X<75 跳PASS:········
SJMP$
SJMP $SJMP $