指令系统和汇编语言程序的设计实验.docx

上传人:b****5 文档编号:6201607 上传时间:2023-01-04 格式:DOCX 页数:14 大小:47.05KB
下载 相关 举报
指令系统和汇编语言程序的设计实验.docx_第1页
第1页 / 共14页
指令系统和汇编语言程序的设计实验.docx_第2页
第2页 / 共14页
指令系统和汇编语言程序的设计实验.docx_第3页
第3页 / 共14页
指令系统和汇编语言程序的设计实验.docx_第4页
第4页 / 共14页
指令系统和汇编语言程序的设计实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

指令系统和汇编语言程序的设计实验.docx

《指令系统和汇编语言程序的设计实验.docx》由会员分享,可在线阅读,更多相关《指令系统和汇编语言程序的设计实验.docx(14页珍藏版)》请在冰豆网上搜索。

指令系统和汇编语言程序的设计实验.docx

指令系统和汇编语言程序的设计实验

第二章指令系统和汇编语言程序设计实验

本章实验主要包括指令系统和汇编语言程序设计两部分。

采用软件模拟调试的方法,目的在于通过这些实验可以使学生巩固所学知识,加深对MCS-51单片机部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。

第一节指令系统实验

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

一、实验目的

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

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

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

二、实验容

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

三、实验步骤

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

2.汇编源程序;

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

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

四、程序清单

1.部RAM数据传送

需要查看的数据有30H,31H,A,R0等。

ORG0000H

MOVR0,#30H

MOV30H,#45H

MOV31H,#46H

MOVR2,30H

MOV02H,31H

MOVA,#87H

MOV0E0H,30H

MOV30H,A

MOV31H,R0

SJMP$

END

2.外部数据传送

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

ORG0000H

MOVA,#89H

MOVDPTR,#2000H

MOVXDPTR,A

INCDPTR

CLRA

MOVCA,A+DPTR

SJMP$

ORG2000H

DB44H

DB78H

DB67H

END

3.堆栈操作

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

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

ORG0000H

MOVSP,#5FH

MOV50H,#3BH

MOV51H,#2FH

MOVA,#12H

PUSH50H

PUSH51H

PUSHACC

POP0E0H

POP51H

POP50H

SJMP$

END

2可用于数据交换的程序

ORG0100H

MOVSP,#6FH

MOV50H,#3BH

MOV51H,#2FH

PUSH50H

PUSH51H

POP50H

POP51H

SJMP$

END

4.数据交换

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

ORG0000H

MOVA,#58H

SWAPA

MOV40H,A

MOVA,#30H

MOVR0,#30H

MOVR0,#09H

XCHDA,R0

MOV50H,#1

MOVA,#89H

XCHA,50H

MOVR7,#3

XCHA,R7

XCHA,R0

SJMP$

END

五、思考题

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

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

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

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

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

实验二数传指令和算数运算指令编程设计

一、实验目的

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

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

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

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

二、实验容

1.数据区传送

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

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

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

2.多字节十进制加法

加数放在30H开始的单元中(最低位放在30H,按从小到大的顺序存放,被加数和结果存放在20H开始的单元(最低位在20H中,字节数放在2FH中,最高进位位放在7FH中的最低位。

三、实验步骤

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

2.在执行第二个程序之前,给被加数和加数单元赋初值;

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

四、实验程序清单

1.数据块传送程序:

ORG0000H

MAIN:

MOVR0,#40H

MOVR2,#10H

MOVA,#0A0H

A1:

MOVR0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#40H

MOVDPTR,#9800H

MOVR2,#10H

A2:

MOVA,R0

MOVXDPTR,A

INCR0

INCDPTR

DJNZR2,A2

MOVR0,#50H

MOVDPTR,#9800H

MOVR2,#10H

A3:

MOVXA,DPTR

MOVR0,A

INCDPTR

INCR0

DJNZR2,A3

SJMP$

END

2.多字节十进制加法:

ORG0000H

MAIN:

MOVR0,#30H

MOVR1,#20H

MOV2FH,#04H

CLRC

DA1:

MOVA,R0

ADDCA,R1

DAA

MOVR1,A

INCR0

INCR1

DJNZ2FH,DA1

MOV7FH,C

SJMP$

END

五、思考题

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

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

3.若把第二个程序改为无符号数的减法,怎样修改程序?

4.在第二个程序中,若两数的和存放到从40H开始的单元,如何修改程序?

实验三逻辑运算及位操作指令编程设计

一、实验目的

(1熟悉字节逻辑运算指令功能。

(2熟悉位操作指令运算功能。

(3从而更深入的掌握汇编语言程序设计。

(4学会观察CPU窗口中BIT区的变化。

二、实验容

1.字节逻辑运算程序

在片RAM的FIRST和SECOND单元中各有一符号数X和Y,要求按下列条件算出Z,存入RESULT单元中(设运算结果仍为8位数。

FIRSTEQU30H

SECONDEQU31H

RESULTEQU32H

ORG0000H

START:

MOVR0,FIRST

MOVA,R0

ACC.7,NEG

MOVB,#2

DIVAB

MOVA,B

JZTEMP1

MOVA,R0

ADDA,SECOND

SJMPRES

TEMP1:

MOVA,R0

ANLA,SECOND

SJMPRES

NEG:

CPLACC.7

MOVB,#2

DIVAB

MOVA,B

JZTEMP2

MOVA,R0

ORLA,SECOND

SJMPRES

TEMP2:

MOVA,R0

XRLA,SECOND

RES:

MOVRESULT,A

SJMP$

END

Z=

2.位操作程序

布尔电路图如下

:

XBIT00H

YBIT01H

ZBIT02H

FBIT03H

ORG0000H

START:

MOVC,Z

ANLC,/Y

MOVF,C

MOVC,Y

ANLC,/Z

ORLC,F

MOVF,C

MOVC,X

ANLC,Y

ORLC,/F

MOVF,C

SJMP$

END

3.拆字程序

把外部数据存储器2000H单元的容拆开,其高四位送2001H低四位,低四位送2002H低四位,2001H、2002H高四位清零。

需要检查2000H、2001H和2002H单元的容。

程序清单

ORG0000H

MOVDPTR,#2000H

MOVXA,DPTR

MOVB,A

SWAPA

ANLA,#0FH

INCDPTR

MOVXDPTR,A

INCDPTR

MOVA,B

ANLA,#0FH

MOVXDPTR,A

SJMP$

END

程序框图

4.拼字程序

把外部数据存储器2000H、2001H单元的低四位分别送2002H高低四位。

需要察看2000H、2001H和2002H

程序清单

ORG0000H

MOVDPTR,#2000H

MOVXA,DPTR

ANLA,#0FH

SWAPA

MOVB,A

INCDPTR

MOVXA,DPTR

ANLA,#0FH

ORLA,B

INCDPTR

MOVXDPTR,A

SJMP$

END

5.自选程序设计

三、思考题

1.字节与位逻辑运算指令在编程上什么区别?

应注意什么?

2.若把两位十六进制数转换成对应的ASCII码,应如何编写程序?

3.采用其它方法设计第一个程序。

4.如何用断点方式调试本程序?

实验四代码转换

一、实验目的

1.掌握各种代码转换的算法,加深对各种数据编码的理解。

2.学会软件模拟调试和察看修改观察项的方法来观察转换结果。

三、实验容

1.分析清楚个程序的功能。

2.调试各种代码转换的程序。

三、实验步骤

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

2.汇编源程序;

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

4.查看最终结果。

四、程序清单

1

将十六进制数据08H,0CH转换成ASCII码,转换结果存入30H,31H两个单元中,

再将30H,31H两个单元中的数据分别增1,然后转换成十六进制数存入40H,41H两个单元中。

ORG0000H

MOVSP,#2FH

MOVA,#08H

ADDA,#30H

PUSHACC

MOVA,#0CH

ADDA,#37H

PUSHACC

MOVA,30H

INCA

CLRC

SUBBA,#30H

MOV40H,A

POPACC

INCA

SUBBA,#37H

MOV41H,A

POPACC

SJMP$

END

2

将二进制数10011011B转换成BCD码数,存入30H和31H单元中;再将30H单元中的数据加16H后,转换成二进制数据,存入40H单元中。

ORG0000H

MOVA,#10011011B

MOVB,#100

DIVAB

MOV30H,A

MOVA,B

MOVB,#10

DIVAB

SWAPA

ORLA,B

MOV31H,A

MOVA,30H

ADDA,#16H

DAAPUSHACCANLA,#00001111BMOV40H,APOPACCANLA,#11110000BSWAPAMOVB,#10MULABADDA,40HMOV40H,ASJMP$END3.BCD码ASCII码将20H单元中压缩的BCD码数78H转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成压缩BCD码数存入21H单元中。

ORG0000HMOVA,20HANLA,#00001111BADDA,#30HMOV30H,APUSHACCMOVA,20HANLA,#11110000BSWAPAADDA,#30HMOV31H,AINCACLRCSUBBA,#30HMOVR2,APOPACCINCACLRCSUBBA,#30HSWAPAORLA,R224

MOVSJMPEND21H,A$5.自选程序设计六、思考题1.如何查看上面三个程序的结果。

2.在程序1中,如果十六进制数未指定是否包含A~F数码,程序应如何修改?

3.在程序2中,如果要转换的二进制数是十六位的,程序应如何编写?

4.十六进制数转换成ASCII码与BCD码数转换成ASCII码有何区别?

实验五移位操作一、实验目的:

实验目的:

掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。

二、实验容:

实验容:

1.双字节二进制数左移一位.将两个部RAM31H和30H单元中的容组成的双字节数通过Cy左移一位。

功能示意图31H30HCy程序清单ORG0000HCLRCMOVA,30HRLCAMOV30H,AMOVA,31HRLCAMOV31H,ASJMP$END2.多字节二进制数右移一位.将三个部RAM32H、31H和30H单元中的容组成的三字节数通过Cy右移一位。

25

功能示意图32HCy31H30H程序清单ORG0000HCLRCMOVA,32HRRCAMOV32H,AMOVA,31HRRCAMOV31H,AMOVA,30HRRCAMOV30H,ASJMP$END三、思考题1.多于三个字节的移位操作如何进行?

2.如果不通过Cy如何移位?

实现的功能有何不同?

第二节汇编语言程序设计实验实验六分支程序设计一、实验目的1.进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。

2.掌握分支结构程序设计的方法。

3.学会用条件转移指令、CJNE、JMP及其配合使用来编写二分支、三分支和多分支程序。

二、实验容1.二分支的条件转移程序设变量X存放于R0,函数值Y存放在R1,其中X、Y均为二进制数。

试按照下式的要求给Y赋值:

26

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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