嵌入式微机原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《嵌入式微机原理》实验指导书
自动化系
实验一典型指令及顺序结构程序设计
一、实验目的
1.熟悉8086CPU指令系统的数据传送指令、算术运算指令的
功能和应用。
2.熟悉顺序结构程序的格式和基本设计方法。
3.掌握顺序结构程序的建立、汇编、连接和执行过程。
二、实验内容及要求
1.本实验要求完成计算表达式S=(W-(X*Y+Z-200))/X。设W、
X、Y、Z、S均为16位带符号数。将表达式的商和余数存
入数据区S单元开始的区域中。
2.采用编辑软件建立顺序结构汇编语言源程序,修改无误后
存盘,通过汇编、连接,了解汇编语言从编程到形成可执
行文件的全过程,然后将其转换为.EXE文件并用DEBUG程
序运行,检查程序的运行结果。
3.该题目要求掌握乘除法运算中带符号数和无符号数运算
的区别,为了实现指定功能,要考虑带符号数的乘除法运
算应选用的指令、乘除法运算中操作数的长度问题以及带
符号数的扩展问题。
三、实验参考程序
本实验参考程序设计如下:
DATA SEGMENT ;数据段定义
W DW 100 ;W定义为字数据,赋初值100
X DW -28 ;X定义为字数据,赋初值-28
Y DW -15 ;Y定义为字数据,赋初值-15
Z DW 300 ;Z定义为字数据,赋初值300
S DW 2 DUP(?) ;S定义为字数据,预留两个单
元
DATA ENDS
CODE SEGMENT ;代码段定义
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA ;汇编开始,初始化DS。AX,IP,CS,DS=()?
MOV DS,AX
MOV AX,X ;被乘数X取到AX中
IMUL Y ;计算X*Y
MOV CX,AX ;结果转存到CX和BX.CX=()? MOV BX,DX ; DX=()?
MOV AX,Z ;将Z取到AX中.
CWD ;将Z扩展到DX、AX中
ADD CX,AX
ADC BX,DX ;计算X*Y+Z. BX=()?
SUB BX,200 ;计算X*Y+Z-200.BX=()?
SBB BX,0 ; BX=()?
MOV AX,W ;将W取到AX中
CWD ;将W扩展到DX和AX中 SUB AX,CX
SBB DX,BX ;计算W-(X*Y+Z-200).DX=()? IDIV X ;计算(W-(X*Y+Z-200))/X MOV S,AX ;保存结果
MOV S+2,DX
MOV AH,4CH ;返回DOS
INT 21H
CODE ENDS
END START ;汇编结束
实验二分支结构程序设计
一、实验目的
1.掌握分支结构程序设计的基本方法。
2.掌握无符号数和带符号数比较大小转移指令的区别。
3.熟悉典型指令的功能及其应用。
二、实验内容
1.在数据区中定义3个带符号字节变量。
2.编写程序将其中的最大数找出并送到MAX单元中。
三、编程思路
该题目采用分支程序设计方法,为了实现指定功能,应从以下3个方面考虑:
1.初始化数据存储区:在内存设定3个字节变量和一个MAX
单元,分别保存3个字节数据和最终结果。
2.3个数据的比较:先将第一个数送到AL寄存器,与第二个
数进行比较,两个数据中的大数送AL保存,然后再与第
三个数进行比较,大数依然保存到AL中,这样两两比较
后,AL的内容就是3个数中的最大数,将其送到MAX单元
中即可。
3.程序中要确定带符号数比较大小转移时应选择哪一组条
件转移指令,以满足题目要求。
四、实验参考程序
本实验的参考程序设计如下:
DATA SEGMENT ;数据段定义
X DB -50 ;X定义为字节数据,赋初值-50 Y DB 100 ;Y定义为字节数据,赋初值100 Z DB 40 ;Z定义为字节数据,赋初值40 MAX DB ? ;MAX定义为字节数据,预留空间DATA ENDS
CODE SEGMENT ;代码段定义
ASSUME DS:DATA,CS:CODE ; IP,CS,DS=()?
START: MOV AX,DATA ;初始化DS. IP =()?
MOV DS,AX
MOV AL,X ;取X到AL中
CMP AL,Y ;X和Y比较
JG NEXT ;如X>Y转NEXT. IP =()?. MOV AL,Y ;否则Y取到AL中
CMP AL,Z ;Y和Z比较
JG EXIT ;如Y>Z转EXIT. IP =()? MOV AL,Z ;否则Z取到AL中
JMP EXIT ;无条件跳转到EXIT. IP =()? NEXT: CMP AL,Z ;X和Z比较
JG EXIT ;如X>Z转EXIT. IP =()? MOV AL,Z ;否则Z取到AL中
EXIT: MOV MAX,AL ;AL中内容送到MAX单元 MOV AH,4CH ;返回DOS
INT 21H
CODE ENDS
END START ;汇编结束
实验三单循环结构程序设计
一、实验目的
1.熟悉单循环结构程序设计的方法,注意循环的初始值设定
和退出循环的条件。
2.掌握在无符号字节整数数组中找出最小数的程序设计方
法,注意数组指针的应用。
3.熟悉典型指令的功能及其应用。
二、实验内容
1.要求从内存中BUF单元开始存放的10个无符号字节整数
数组中找出最小数,将其值保存在AL寄存器中。
2.注意数组中每个数据地址的变化,合理选用相关指令。
三、编程思路
该题目要求掌握单循环程序设计的方法,为了实现相关功能,应从以下3个方面考虑:
1.确定数组中数据的起始地址,采用地址指针的变化进行合
理指向。
2.设定单循环结构中的初始入口、循环体、判断条件等。
3.由于已知循环的次数,可确定计数器使用,选择LOOP指
令实现规定功能。
四、实验参考程序
本实验的参考程序设计如下:
DATA SEGMENT
BUF DB 12H,35H,61H,01H,52H,8AH,0FFH,10H,2BH,3FH
CN EQU $-BUF ;定义数组指针变量DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA; IP,CS,DS=()?
START: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET BUF ;取数组偏移地址. BX =()?
MOV CX,CN ;取数据个数
DEC CX ;计数器减1. CX =()?
MOV AL,[BX] ;取第一个数据