计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx

上传人:b****5 文档编号:19446376 上传时间:2023-01-06 格式:DOCX 页数:15 大小:21.90KB
下载 相关 举报
计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx_第1页
第1页 / 共15页
计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx_第2页
第2页 / 共15页
计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx_第3页
第3页 / 共15页
计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx_第4页
第4页 / 共15页
计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx

《计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

计算机硬件基础实验报告2汇编语言程序结构汇编语言程序设计Word文档格式.docx

程序清单如下:

#include"

msp430.h"

NAMEmain

PUBLICmain

ORG0FFFEh

DC16init

RSEGDATA16_C

LEDtab1:

DB0FEh,0FDh,0FBh,0F7h,0EFh,0DFh,0BFh,07Fh

LEDtab2:

DB07Eh,0BDh,0DBh,0E7h

RSEGCSTACK

RSEGCODE

init:

MOV#SFE(CSTACK),SP

main:

NOP

MOV.W#WDTPW+WDTHOLD,&

WDTCTL

MOV.b#0h,&

P2SEL

MOV.b#0FFh,&

P2OUT

P2DIR

start:

MOV#8,R4

MOV#4,R5

MOV#0,R6

num1:

MOV.bLEDtab1(R6),&

CALL#delay

INCR6

DECR4

JNZnum1

num2:

MOV.bLEDtab2(R4),&

INCR4

DECR5

JNZnum2

JMPstart

delay:

MOV#0FFFFh,R7

ww:

DECR7

JNZww

RET

END

思考:

如果选择用单片机的P4端口控制8个发光二极管,如何在实验板上设计连线?

如何编程实现任务2的功能?

把P4的8个接口分别与二极管的8个接口用跳线连接,程序中把P2XXX换成P4XXX。

3.用按键控制发光二极管的显示变化

在任务2基础上,增加2个按键与单片机的引脚相连,编程实现由按键控制发光二级管的显示变化:

当按下实验板上的Key1键时,8个发光二极管按任务2中的规律1反复变化,当按下实验板上的Key2键时,8个发光二极管按任务2中的规律2反复变化。

DB0FEh,0FDh,0FBh,0F7h,0EFh,0DFh,0BFh,07Fh

DB07Eh,0BDh,0DBh,0E7h

BIC.b#BIT0+BIT1,&

P1SEL

P1DIR

MOV#0,R8

MOV#8,R4

MOV#0,R6

k1:

BIT.b#BIT0,&

P1IN

JNZk2

MOV.b#1,R8

JMPkk1

k2:

BIT.b#BIT1,&

JNZkk1

MOV.b#2,R8

JMPkk2

kk1:

CMP.b#1,R8

JNZkk2

DECR4

JMPstart

kk2:

CMP.b#2,R8

JNZk1

MOV.bLEDtab2(R6),&

DECR5

MOV#0FFFFh,R7

END

1)程序开头的ORG0xFFFE和DC16init这两条语句的作用是什么?

在这两条语句的行首加注释符“;

”(相当于删除了这两条语句),即这两条语句不起作用,操作EW430左上角的reset,重新执行程序,出现什么后果,为什么?

因为EW430上电复位后从0xFFFE~0xFFFF上取第一条指令的地址,所以这两条语句是把init的地址1100h放在0xFFFE~0xFFFF上。

注释掉这两条语句后,重新执行程序,出现“Usererror:

Illegalopcodefoundonaddress0x0”

因为注释掉后,EW430从0xFFFE~0xFFFF上取第一条指令的地址“0x0”开始执行,而0x0上没有命令,所以出错了。

2)如果选择用单片机的P5端口接收2个按键的输入信号,如何在实验板上设计连线?

如何编程实现任务3中的功能?

把实验板上的Key1、2键和P5.0,P5.1用跳线连接,再把P1XXX换成P5XXX。

三、已完成的选做任务

4.(选做,可在simulator下完成)了解.xcl配置文件的作用

在任务1的基础上,打开lnk430F149.xcl配置文件,了解EW430系统设置的DATA16_I,DATA16_Z,DATA16_N,CSTACK,DATA16_ID,DATA16_C,CODE等段的定义及其属性,请记录各符号段对应的存储器地址。

段名

DATA16_I

DATA16_Z

DATA16_N

CSTACK

DATA16_ID

DATA16_C

CODE

起始地址

0200h

09B0h

1100h

末地址

09FFh

0A00h

FFDFh

回答:

在L4_directives.s43中,DATA16_C、DATA16_N、CSTACK、CODE各段的首、末地址分别是多少?

1122h

1120h

0207h

1157h

5.(选做,可在simulator下完成)了解汇编程序、连接程序功能

四、实验的思考

实验中任务3中编写的程序无法做到实时监控按键的信息,这需要学习了中断技术后才能做成功。

实验5.汇编语言程序设计

一.实验目的

1.掌握编写和调试汇编语言程序的方法;

2.掌握模块化汇编语言程序设计方法

3.了解简单电路的控制方法

二.实验任务

1.简单电子表的设计用8个发光二极管以秒为单位显示时间值,按下面步骤完成一个简单电子表的设计:

1)硬件连线:

用跳线将L6~L1分别与P2.5~P2.0连接,L6~L1用于显示秒值;

用双口长线将L7与P5.0连接,L8与P5.1连接,L8~L7用于显示分钟值;

蜂鸣器的控制端Buzz与P4.1连接;

2)编写延时子程,延时时间长度约1秒。

可参考附录A例程test_asm.s43中的delay子程,将其中的#10改为#4;

#4000h改为#0FFFFh,执行该delay子程的时间约为1秒。

(执行延时子程的时间可以通过设置1个I/O引脚(如P2.0)输出0,delay延时,再输出1,delay延时,如此循环可在该引脚输出一个方波,用示波器测量该方波周T,可以粗略得到延时子程的执行时间Tdelay=T/2。

3)编写完整程序:

计数秒值,用8个发光二极管以二进制将时间显示出来,如图5-1,其中高两位显示分钟值(L8、L7),低6位显示秒值(L6~L1),每60秒,分钟值加1,如图5-1,黑色表示亮,则显示的时间表示表示3分27秒。

每计数到4分钟时,控制蜂鸣器发出一报警声,然后又从0开始重新计数。

NAMEmain

PUBLICmain

DC16init

RSEGCSTACK

RSEGCODE

MOV#SFE(CSTACK),SP

NOP

MOV.W#WDTPW+WDTHOLD,&

WDTCTL

BIC.b#BIT0+BIT1+BIT2+BIT3+BIT4+BIT5,&

BIS.b#BIT0+BIT1+BIT2+BIT3+BIT4+BIT5,&

BIC.b#BIT0+BIT1,&

P5SEL

BIS.b#BIT0+BIT1,&

P5OUT

P5DIR

BIC.b#BIT1,&

P4SEL

BIS.b#BIT1,&

P4OUT

P4DIR

MOV#0,R4

MOV#3,R5

next:

MOV#0,R6

MOV#60,R7

then:

INVR6

MOV.bR6,&

INCR6

DECR7

JNZthen

BIC.bR4,&

DECR5

JNZnext

BIC.b#BIT1,P4OUT

BIS.b#BIT1,P4OUT

MOV#4,R8

wait1:

MOV#0FFFFh,R9

wait2:

DECR9

JNZwait2

DECR8

JNZwait1

END

2.数码管的显示控制

请根据上面的工作原理描述,编程实现对数码管的控制:

编程控制数码管顺序显示0~9和A、b、C、d、E、F,已知它们对应的数码管显示码分别为3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h、7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h。

LEDtab:

DB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h

BIC.b#BIT1+BIT2+BIT3+BIT4,&

P6SEL

P6OUT

BIS.b#BIT1+BIT2+BIT3+BIT4,&

P6DIR

MOV#10h,R4

MOV#0,R5

MOV#8,R6

MOV.bLEDtab(R5),R7

CALL#then

INCR5

JNZnext

RLC.bR7

JCww1

BIC.b#BIT4,&

JMPww2

ww1:

BIS.b#BIT4,&

P6OUT

ww2:

BIC.b#BIT2,&

BIS.b#BIT2,&

DECR6

BIC.b#BIT3,&

BIS.b#BIT3,P6OUT

RET

DECR9

如果数码管电路的控制端DS、SHCP、STCP、#MR分别与单片机的P4.3~P4.0相连,如何修改程序?

请用长导线在实验板上完成。

把P6XXX换成P4XXX。

实验板上用跳线把对应的相连接。

1.(选做)增加按键控制功能:

当按下KEY2键时清零;

按下KEY3键时开始(或称继续)计时;

按下KEY4键时暂停计时。

NAMEmain

BIC.b#BIT0,&

BIS.b#BIT0,&

BIC.b#BIT1+BIT2+BIT3,&

P3SEL

P3DIR

MOV.b#0FFh,R9

MOV#0,R4

MOV#4,R5

test1:

BIT.b#BIT1,&

JZww1

BIT.b#BIT2,&

JZww2

BIT.b#BIT3,&

JZww3

BIT#0FBh,R9

JNZtest1

JMPtest2

CMP.b#0FFh,R9

JCtest1

MOV.b#BIT1,R9

MOV.b#BIT2,R9

ww3:

MOV.b#BIT3,R9

test2:

BIT#0FDh,R9

JZzero2

BIT#0FBh,R9

JZzero1

JMPtest1

zero1:

TST.bR6

JNZthen

zero2:

INVR6

BIT#0FDh,R9

JZss

MOV#0FFFFh,R10

DECR10

ss:

JMPtest1

如果硬件连线是将发光二极管LED8~LED1分别与P2.7~P2.0连接,按键Key4~Key2分别与P1.4~P1.2连接,蜂鸣器BUZZ与P6.5连接的话,实验板上连线,如何编程实现任务1?

把程序中的P5XXX换成P2XXX。

源程序中Key4~Key2对应P1.3~P1.1,只需相应的修改一下即可。

同理,把P4XXX换成P6XXX。

2.(选做)编程当分别按下KEY8~KEY1键时,在数码管上分别显示8~1,比如按下键KEY8,数码管上显示“8”;

按下键KEY2,数码管上显示“2”等。

DB06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh

MOV.b#0,&

MOV#8,R9

MOV.b&

P1IN,R7

RRA.bR7

JNCnext

JNZtest2

BIT#8,R5

MOV.bLEDtab(R5),R8

RLC.bR8

RET

3.(选做,可在simulator下完成)带初始化变量的实现(数据传送程序)

问题的提出:

初始化的变量和未初始化变量的不同在于,在执行程序前,初始化的变量中有设置好的初值,而未初始化的变量没有设置好的初值。

由于MCU内部没有操作系统,上电复位后即开始执行用户程序,存放在RAM区中的变量的值都是随机的,不能保存如何完成带初始值的变量设置呢?

编程实现:

在汇编语言程序中设置一个带初始化的字符串,字符串的初始值为“HelloMSP430”。

string:

DB"

HELLOMSP430"

RSEGDATA16_I

buffer:

DS12

MOV#0Bh,R4

MOV.bstring(R5),buffer(R5)

JNZstart

JMP$

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

当前位置:首页 > 初中教育 > 学科竞赛

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

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