计算机硬件.docx

上传人:b****5 文档编号:30655447 上传时间:2023-08-19 格式:DOCX 页数:69 大小:148.30KB
下载 相关 举报
计算机硬件.docx_第1页
第1页 / 共69页
计算机硬件.docx_第2页
第2页 / 共69页
计算机硬件.docx_第3页
第3页 / 共69页
计算机硬件.docx_第4页
第4页 / 共69页
计算机硬件.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

计算机硬件.docx

《计算机硬件.docx》由会员分享,可在线阅读,更多相关《计算机硬件.docx(69页珍藏版)》请在冰豆网上搜索。

计算机硬件.docx

计算机硬件

实验一熟悉键盘操作及数传指令编程设计

一、实验目的

1.熟悉软件模拟调试的环境及键盘操作。

2.掌握汇编语言程序设计的方法,加深对指令的理解。

3.学会软件模拟调试和察看修改观察项的方法。

二、实验内容

印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。

三、实验步骤

1.进入调试软件环境,输入源程序;

2.汇编源程序;

3.用单步方式运行程序;

4.检查并记录各寄存器和存储单元内容的变化。

四、程序清单

1.内部RAM数据传送

1)寄存器寻址与立即寻址,需要查看的数据有A、PSW和不同寄存器区的Rn等单元的内容。

ORG0000H

MOVPSW,#00H

MOVR0,#30H

MOVA,R0

MOVR6,A

MOVPSW,#14H

MOVR0,#30H

MOVA,R0

MOVR6,A

MOVPSW,#10H

MOVR0,#30H

MOVA,R0

MOVR6,A

MOVPSW,#08H

MOVR0,#30H

MOVA,R0

MOVR6,A

SJMP$

END

程序运行结果如下:

01

ORG0000H

02

MOVPSW,#00H

03

MOVR0,#30H

r0=0x30

04

MOVA,R0

a=0x30

05

MOVR6,A

r6=0x30

06

MOVPSW,#14H

r0=0x00

r6=0x00

psw=0x14

ov=1

rs=2

07

MOVR0,#30H

r0=0x30

08

MOVA,R0

09

MOVR6,A

r6=0x30

10

MOVPSW,#10H

psw=0x10

ov=0

11

MOVR0,#30H

12

MOVA,R0

13

MOVR6,A

14

MOVPSW,#08H

r0=0x00

r6=0x00

psw=0x08

rs=1

15

MOVR0,#30H

r0=0x30

16

MOVA,R0

17

MOVR6,A

r6=0x30

18

SJMP$

19

END

2)直接寻址,需查看30H、31H、32H、40H、ACC、PSW等单元的内容。

ORG0100H

MOV30H,#45H

MOV31H,#46H

MOV02H,31H

MOV0E0H,30H

MOV32H,ACC

MOVACC,PSW

MOV40H,ACC

SJMP$

END

程序运行结果如下:

30H

31H

32H

40H

ACC

PSW

01

ORG0100H

00

00

00

00

0x00

0x00

02

MOV30H,#45H

45

00

00

00

0x00

0x00

03

MOV31H,#46H

45

46

00

00

0x00

0x00

04

MOV02H,31H

45

46

00

00

0x00

0x00

05

MOV0E0H,30H

45

46

00

00

0x45

0x01

06

MOV32H,ACC

45

46

45

00

0x45

0x01

07

MOVACC,PSW

45

46

45

00

0x01

0x01

08

MOV40H,ACC

45

46

45

01

0x01

0x01

09

SJMP$

45

46

45

01

0x01

0x01

10

END

45

46

45

01

0x01

0x01

3)寄存器间接寻址,需查看@R0、RO等的内容。

ORG0200H

MOV30H,#66H

MOVR0,#30H

MOV@R0,#30H

SJMP$

END

程序运行结果如下:

@R0

RO

01

ORG0200H

02

MOV30H,#66H

03

MOVR0,#30H

0x30

04

MOV@R0,#30H

30

05

SJMP$

外部数据传送

需要查看的数据有外部数据存储器单元2000H,外部程序存储器单元2001H。

ORG0000H

MOVA,#89H

MOVDPTR,#2000H

MOVX@DPTR,A

INCDPTR

CLRA

MOVCA,@A+DPTR

SJMP$

ORG2000H

DB44H

DB78H

DB67H

END

程序运行结果如下:

ORG0000H

2000H

2001H

01

MOVA,#89H

00

78

02

MOVDPTR,#2000H

00

78

03

MOVX@DPTR,A

00

78

04

INCDPTR

89

78

05

CLRA

89

78

06

MOVCA,@A+DPTR

89

78

07

SJMP$

89

78

08

ORG2000H

89

78

09

DB44H

89

78

10

DB78H

89

78

11

DB67H

89

78

12

END

89

78

2、堆栈操作

需要查看的数据有50H、51H、A及SP指针和堆栈区中数据随PUSH和POP指令执行后的变化情况和数据的存放次序等。

1)可用于保护现场和恢复现场的程序

ORG0000H

MOVSP,#5FH

MOV50H,#3BH

MOV51H,#2FH

MOVA,#12H

PUSH50H

PUSH51H

PUSHACC

POP0E0H

POP51H

POP50H

SJMP$

END

50H

51H

60H

61H

62H

81H

A

SP

01

ORG0000H

00

00

00

00

00

07

0x00

0x00

02

MOVSP,#5FH

00

00

00

00

00

5F

0x00

0x5f

03

MOV50H,#3BH

5B

00

00

00

00

5F

0x00

0x5f

04

MOV51H,#2FH

3B

2F

00

00

00

5F

0x00

0x5f

05

MOVA,#12H

3B

2F

00

00

00

5F

0x12

0x5f

06

PUSH50H

3B

2F

3B

00

00

60

0x12

0x60

07

PUSH51H

3B

2F

3B

2F

00

61

0x12

0x61

08

PUSHACC

3B

2F

3B

2F

00

62

0x12

0x62

09

POP0E0H

3B

2F

3B

2F

12

61

0x12

0x61

10

POP51H

3B

2F

3B

2F

12

60

0x12

0x60

11

POP50H

3B

2F

3B

2F

12

5F

0x12

0x5f

12

SJMP$

3B

2F

3B

2F

12

5F

0x12

0x5f

13

END

3B

2F

3B

2F

12

5F

0x12

0x5f

2)可用于数据交换的程序

ORG0100H

MOVSP,#6FH

MOV50H,#3BH

MOV51H,#2FH

PUSH50H

PUSH51H

POP50H

POP51H

SJMP$

END

50H

51H

70H

71H

81H

A

SP

01

ORG0100H

00

00

00

00

00

0x00

0x07

02

MOVSP,#6FH

00

00

00

00

6F

0x00

0x6f

03

MOV50H,#3BH

3B

00

00

00

6F

0x00

0x6f

04

MOV51H,#2FH

3B

2F

00

00

6F

0x00

0x6f

05

PUSH50H

3B

2F

3B

00

70

0x00

0x70

06

PUSH51H

3B

2F

3B

2F

71

0x00

0x71

07

POP50H

2F

2F

3B

2F

70

0x00

0x70

08

POP51H

2F

3B

3B

2F

6F

0x00

0x6f

4.数据交换

记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。

A

01

ORG0000H

00

02

MOVA,#58H

58

03

SWAPA

85

04

MOV40H,A

85

05

SJMP$

85

06

END

85

1)SWAP指令

ORG0000H

MOVA,#58H

SWAPA

MOV40H,A

SJMP$

END

SWAPA:

指令的作用是让A中数

据的高四位和低四位交换位置

2)XCHD指令

R0

A

01

ORG0030H

0x00

0x00

02

MOVA,#30H

0x00

0x30

03

MOVR0,#30H

0x30

0x30

04

MOV@R0,#09H

0x30

0x30

05

XCHDA,@R0

0x30

0x39

06

MOV41H,A

0x30

0x39

07

SJMP$

0x30

0x39

08

END

0x30

0x39

ORG0030H

MOVA,#30H

MOVR0,#30H

MOV@R0,#09H

XCHDA,@R0

MOV41H,A

SJMP$

END

XCHDA,@R0:

是半

字节交换指令,累加

器A的低4位和内存的低4位交换.

3)XCH指令

ORG0100H

MOV50H,#1

MOVA,#89H

XCHA,50H

MOVR7,#3

XCHA,R7

XCHA,@R0

SJMP$

END

50H

A

R0

R7

01

ORG0100H

00

0x00

0x00

0x00

02

MOV50H,#1

01

0x00

0x00

0x00

03

MOVA,#89H

01

0x89

0x00

0x00

04

XCHA,50H

89

0x01

0x00

0x00

05

MOVR7,#3

89

0x01

0x00

0x03

06

XCHA,R7

89

0x03

0x00

0x01

07

XCHA,@R0

89

0x00

0x03

0x01

08

SJMP$

09

END

五、思考题

1、寄存器寻址与寄存器间接寻址有什么区别?

答:

寄存器寻址中寄存器存放操作数;寄存器间接寻址中寄存器存放操作数所在的地址。

2、PC指针与SP指针有什么区别?

答:

PC指针是16位存储器,指向即将执行的命令的栈顶;SP指针是8位寄存器,指栈顶。

3、DPTR指针与Ri(R0,R1)指针有什么区别?

答:

DPTR指片外的64KB数据范围;Ri指针指片内00H—7FH数据范围,只有配合P2使用才可寻址片外64KB外围地址。

4、立即寻址与直接寻址有什么区别?

答:

立即寻址是指令直接给出操作数;直接寻址是指令中直接给出操作数所在的单元地址或位地址。

5、同一个特殊功能寄存器不同表达形式。

答:

在直接寻址时,寄存器ACC可以表示为ACC、OEOH,Cy、0D7H、PSW.7、0D0H.7都可以表示Cy,PSW可以表示为0D0H。

6、三种不同的交换指令的区别是什么?

答:

XCH:

把A与片内RAM的某单位或SFR中的内容相互交换,影响P标志;

XHD:

把A的低四位与片内RAM的低4位交换,高四位不变;

SWAP:

A中低四位与高四位互换,不影响标志位。

实验二数传指令程序设计

一、实验目的

1.掌握数据块的传送操作和算术运算指令的应用。

2.进一步掌握汇编语言设计和调试方法。

3.掌握观察窗口的使用方法。

4.学会给存储单元赋初值的方法。

二、实验内容

1、把内部RAM40H~4FH置初值0A0H~0AFH;

2、而后把40H~4FH内容传送到外部RAM9800H~980FH中;

3、再把9800H~980FH内容传送到50H~5FH中。

三、实验步骤

1.分别用单步和连续运行方式,调试上述程序;

2.在观察窗口中观察结果。

四、实验程序清单

数据块传送参考程序:

ORG0000H

MAIN:

MOVR0,#40H

MOVR2,#10H

MOVA,#0A0H

A1:

MOV@R0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#40H

MOVDPTR,#9800H

MOVR2,#10H

A2:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,A2

MOVR0,#50H

MOVDPTR,#9800H

MOVR2,#10H

A3:

MOVXA,@DPTR

MOV@R0,A

INCDPTR

INCR0

DJNZR2,A3

SJMP$

END

01

ORG0000H

R0

r2

A

40H

9800H

DPTR

50H

02

MOVR0,#40H

0x40

03

MOVR2,#10H

0x10

04

MOVA,#0A0H

A0

05

A1:

MOV@R0,A

A0

06

INCR0

0x41

07

INCA

A1

08

DJNZR2,A1

09

MOVR0,#40H

0x00

10

MOVDPTR,#9800H

9800

11

MOVR2,#10H

0x10

12

A2:

MOVA,@R0

0xA0

13

MOVX@DPTR,A

A0

14

INCR0

0x41

15

INCDPTR

9801

16

DJNZR2,A2

17

MOVR0,#50H

0x50

18

MOVDPTR,#9800H

9800

19

MOVR2,#10H

0x10

20

A3:

MOVXA,@DPTR

0xA0

21

MOV@R0,A

A0

22

INCDPTR

9801

23

INCR0

0x51

24

DJNZR2,A3

0x0F

A1:

05-08进行16次循环,每次分别为内部40H~4FH置初值0A0H~0AFH。

第二次循环:

R0

R2

A

41H

05

A1:

MOV@R0,A

0x0f

06

INCR0

A1

07

INCA

0x42

08

DJNZR2,A1

A2

第十六次循环:

R0

R2

A

4FH

05

A1:

MOV@R0,A

0x01

06

INCR0

AF

07

INCA

0x50

08

DJNZR2,A1

B0

达到的结果为:

40H

41H

42H

43H

44H

45H

46H

47H

48H

49H

4AH

4BH

4CH

4DH

4EH

4FH

A0

A1

A2

A3

A4

A5

A6

A7

A8

A9

AA

AB

AC

AD

AE

AF

A2:

12-16循环16次,分别把40H~4FH内容传送到外部RAM9800H~980FH中

第八次循环:

R2

R0

A

DPTR

9808H

12

A2:

MOVA,@R0

0xA8

13

MOVX@DPTR,A

A8

14

INCR0

0x49

15

INCDPTR

9809

16

DJNZR2,A2

0x07

第十六次循环:

R2

R0

A

DPTR

980FH

12

A2:

MOVA,@R0

0xAF

13

MOVX@DPTR,A

AF

14

INCR0

0x50

15

INCDPTR

9810

16

DJNZR2,A2

0x00

达到的结果:

9800H

9801H

9802H

9803H

9804H

9805H

9806H

9807H

A0

A1

A2

A3

A4

A5

A6

A7

2808H

9809H

980AH

980BH

980CH

980DH

980EH

980FH

A8

A9

AA

AB

AC

AD

AE

AF

A3:

20--24循环16次,再再把9800H~980FH内容传送到50H~5FH中。

第八次循环:

R2

R0

A

DPTR

58H

20

A3:

MOVXA,@DPTR

0xa8

21

MOV@R0,A

A8

22

INCDPTR

9809

23

INCR0

0X59

24

DJNZR2,A3

0X07

第十六次循环:

R2

R0

A

DPTR

5FH

20

A3:

MOVXA,@DPTR

0Xaf

21

MOV@R0,A

AF

22

INCDPTR

9810

23

INCR0

0x60

24

DJNZR2,A3

0x00

达到的结果:

50H

51H

52H

53H

54H

55H

56H

57H

A0

A1

A2

A3

A4

A5

A6

A7

58H

59H

5AH

5BH

5CH

5DH

5EH

5FH

A8

A9

AA

AB

AC

AD

AE

AF

五、思考题

1)若两个数据块都在外部数据存储器中,如何实现数据块的传送?

答:

选择R0和DPTR两个指针,用MOVX命令经过A累加器进行数据块传输。

2)在调试程序时,若不用程序给40H~4FH赋初值,而用键盘在CPUDATA区给40H~4FH单元预赋初值,如何做?

答:

打开“视图”菜单,选择“存储器窗口”,弹出存储器对话框,在MEMORY2地址栏中键入“D:

0X00”回车,建立内部数据存储器的观察窗口。

找到40H—4FH所在位置,分别双击40H—4FH所在位置,当有光标出现时,用键盘输入初值。

实验三算数运算指令编程设计

一、实验目的

1、掌握算术运算指令及其应用。

2、进一步掌握汇编语言设计和调试方法。

3、掌握观察窗口的使用方法。

4、学会给存储单元赋初值的方法。

二、实验内容

1、求两个无符号数求和及差;

2、求两个带符号数求和及差;

3、求两个压缩的BCD码数的和及差。

三、实验步骤

1.分别用单步和连续运行方式,调试上述各个程序;

2.在观察窗口中观察结果。

四、实验程序清单

1、计算下面各式中两个无符号数的和及差,观察CY,并记录运算结果,并求出结果的真值。

(1)计算200+200

(2)计算36589+46542

(3)计算100-200及200-100

(4)计算36589-16542及16542-36589

1)加法的参考程序:

(1)计算两个单字节数的和的参考程序:

ORG0000H

MAIN:

MOVA,#200

ADDA,#200

SJMP$

END

CY

A

01

ORG0000H

02

MAIN:

MOVA,#200

0

0xc8

03

ADDA,#200

1

0x90

结果0x90的真值为400.

(2)计算两个双字节数的和的参考程序:

ORG0100H

MAIN:

MOVA,#low(36589)

ADDA,#low(46542)

MOV30H,A

MOVA,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1