微机原理与应用作业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 $

相关主题
相关文档
最新文档