微机原理及应用实验报告.docx

上传人:b****7 文档编号:9354569 上传时间:2023-02-04 格式:DOCX 页数:26 大小:1.52MB
下载 相关 举报
微机原理及应用实验报告.docx_第1页
第1页 / 共26页
微机原理及应用实验报告.docx_第2页
第2页 / 共26页
微机原理及应用实验报告.docx_第3页
第3页 / 共26页
微机原理及应用实验报告.docx_第4页
第4页 / 共26页
微机原理及应用实验报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

微机原理及应用实验报告.docx

《微机原理及应用实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理及应用实验报告.docx(26页珍藏版)》请在冰豆网上搜索。

微机原理及应用实验报告.docx

微机原理及应用实验报告

 

实验报告

课程名称

实验日期

学生专业

学生学号

学生姓名

教师姓名

成绩

 

南京理工大学机械工程学院

实验一DEBUG命令及其操作

一、实验目的

1.熟练掌握debug的常用命令,学会用debug来调试程序。

2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。

3.掌握各种寻址方法以及简单指令的执行过程。

二、实验要求

1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。

2.本实验要求在PC机上进行。

3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。

三、实验内容

●实验内容1:

学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。

答:

1运行结果:

.

2.小结debug常用命令及使用体会

a汇编

d显示内存单元内容

e修改单元内存内容

g执行命令

t单步(或多步)调试

n指定文件路径文件名(含扩展名)

u反汇编

r查看寄存器值及修改

l加载程序

w写盘命令

体会:

 

●实验内容2

设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。

实验报告要求:

1.写出完成上述功能的程序段;

2.单步执行,并记录寄存器AX,BX及堆栈指针SP的值

答:

●实验内容3

设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元装入0AH,0BH,0CH,0DH,0EH。

在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令源地址的形成过程?

当数据传送完毕时,AX中的内容是什么?

A100;给各内存单元赋值

Movdi,0300

Movdx,0a

Movcx,5

1oop1:

mov[di],dx

Incdi

Incdx

1ooploop1

程序清单如下:

寻址方式和AX的内容

 

MOVBX,0300立即寻址

MOVSI,0002立即寻址

MOVAX,BX寄存器寻址AX:

0300

MOVAX,0304H立即寻址AX:

0304

MOVAX,[0304H]存储器直接寻址AX:

ds:

0304内存单元的内容0EH

MOVAX,[BX]寄存器间接寻址AX:

ds:

0300内存单元的内容0AH

MOVAX,0001[BX]基址相对寻址AX:

ds:

0301内存单元的内容0BH

MOVAX,[BX][SI]基址变址寻址AX:

ds:

0302内存单元的内容0CH

MOVAX,0001[BX][SI]基址变址寻址AX:

ds:

0303内存单元的内容0DH

●实验内容4

设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。

写出实现上实验报告要求:

1.述功能的程序段;

2.单步执行程序,记录每条指令的机器码及相关寄存器的内容

注意:

左移指令用SHL,而不能使用SAL

A100

Movax,2机器码:

b80200ax:

0002dx:

0000cl:

00

Movdx,0机器码:

ba0000ax:

0002dx:

0000cl:

00

Shlax,1机器码:

d1e0ax:

0004dx:

0000cl:

00

Movdx,ax机器码:

01d0ax:

0004dx:

0004cl:

00

Movcl,2机器码:

b102ax:

0004dx:

0004cl:

02

Shlax,cl机器码:

d3e0ax:

0010dx:

0004cl:

02

Addax,dx机器码:

01d0ax:

0014dx:

0004cl:

02

Int20机器码:

cd20ax:

0014dx:

0004cl:

02

实验二简单程序的编写及汇编连接

一、实验目的

1.熟练掌握编写汇编语言源程序的基本方法和基本框架。

2.学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。

3.掌握程序中数据的产生与数输出的方法。

4.熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。

二、实验要求

1.实验前准备

1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。

2写出算法或画出流程图。

3写出源程序。

4对程序中的结果进行分析,并准备好上机调试的过程。

2.本实验要求在PC机上进行。

3.汇编过程中出现问题,可用DEBUG进行调试。

三、实验内容

1.实验内容1

①编辑源程序(参考程序见下),建立.ASM文件;

②用MASM程序汇编,生成.OBJ文件;查看.LST文件的内容

③用LINK程序链接,生成.EXE文件;

4使用DEBUG命令将.EXE文件调进内存,执行后查看程序运行结果;

⑤使用DEBUG命令,检查各段在内存当中分配情况。

参考程序:

;exercize21

datasegment

org0200h

bufferdw0,1,-5,10,256,-128,-100,45,6,3,

dw-15,-67,39,4,20,-1668,-32766,32765,-525,

dw300

countequ($-buffer)/2

maxdw?

dataends

stacksegmentstack'stack'

db100dup('s')

stackends

codesegmentpara'code'

assumecs:

code,ds:

data,ss:

stack

staprocfar

pushds

xorax,ax

pushax

movax,data

movds,ax

leasi,buffer

movcx,count

deccx

movax,[si]

chkmax:

addsi,2

cmp[si],ax

jlenext

movax,[si]

next:

loopchkmax

movmax,ax

ret

staendp

codeends

endsta

答:

1.把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名字,以默认配置生成obj文件,再打开链接程序输入待链接的程序名字以默认配置生成exe文件

2.执行前后buff数据数据块不变max执行前数据为0000H执行后为7ffdH

3.顺利

实验2:

;display“0~9”100times

stacsegmentstack'stack'

db100dup('s')

stacends

codsegmentpara'code'

assumecs:

cod,ss:

stac

staprocfar

pushds

xorax,ax

pushax

movcx,100

movbl,0

goon:

pushcx

movah,2

movdl,0dh

int21h

Movah,2

Movdl,0ah

Int21h

moval,bl

incal

daa

andal,0fh

movbl,al

oral,30h

movdl,al

movah,2

int21h

movdx,5

l1:

movcx,0ffffh

again:

loopagain

decdx

jnzl1

popcx

loopgoon

ret

staendp

codends

endsta

作业:

编程并且在计算机上调试。

①用汇编语言编写一个加法程序:

1234+5678

请用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示输出。

②假设有一组数据:

5,-4,0,3,100,-51,……,请编一程序,判断每个数是否大于0,等于0,还是小于0,并输出判断结果。

即:

1当x>0

y=0当x=0

-1当x<0

①sstacksegment

dw32dup(?

sstackends

datasegment

data1db‘1234'

data2db‘5678’

data3db4dup(?

dataends

codesegment

assumecs:

code,ss:

sstack,ds:

data

sta:

pushds

xorax,ax

pushax

movax,data

movds,ax

leasi,data1

leadi,data2

leabx,data3

moval,[si+3]

movah,[di+3]

andal,0fh

andah,0fh

addal,ah

oral,30h

mov[bx+3],al

moval,[si+2]

movah,[di+2]

andal,0fh

andah,0fh

adcal,ah

oral,30h

mov[bx+2],al

moval,[si+1]

movah,[di+1]

andal,0fh

andah,0fh

adcal,ah

oral,30h

mov[bx+1],al

moval,[si]

movah,[di]

andal,0fh

andah,0fh

adcal,ah

oral,30h

mov[bx],al

movcx,4

movah,2h

a1:

movdl,[bx]

int21h

incbx

loopa1

ret

codeends

endsta

②sstacksegmentstack'stack'

dw32dup(?

sstackends

datasegment

buffdb12,-23,5,-4,0,3,100,-51,3,-45,9,2

dataends

countequ$-buff

codesegment

assumess:

sstack,ds:

data,cs:

code

startprogfar

pushds

xorax,ax

pushax

movax,data

movds,ax

leabx,buff

leasi,count

movcx,[si]

loop1:

moval,[bx]

cmpal,0

jzaa1

andal,80h

jzaa2

movah,2

movdl,2dh

int21h

aa:

incbx

looploop1

jmpov

aa1:

movah,2

movdl,30h

int21h

jmpaa

aa2:

movah,2

movdl,31h

int21h

jmpaa

ov:

ret

startendp

codeends

endstart

 

实验三8254定时/计数器应用实验

一、实验目的

1、掌握8254的工作方式及应用编程;

2、掌握8254典型应用电路的接法。

二、实验设备

PC机一台,TD-PIE实验装置一套,示波器一台。

三、实验内容

1、计数应用实验。

编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’。

2、定时应用实验。

编写程序,应用8254的定时功能,产生一个1ms的方波。

1、计数应用实验

编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符‘M’。

实验步骤:

(1)实验接线如图4-2所示;

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,按动KK1+产生单次脉冲,观察实验现象;

(4)改变计数值,验证8254的计数功能。

图4.28254计数应用实验接线图

实验程序清单:

A8254EQU06C0H;8254计数器0的端口地址

B8254EQU06C2H;8254计数器1的端口地址

C8254EQU06C4H;8254计数器2的端口地址

CON8254EQU06C6H;8254控制字寄存器的端口地址

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

SSTACK

START:

PUSHDS

MOVAX,0000H

MOVDS,AX

Leaax,irq7

movsi,3ch

mov[si],ax

movax,segirq7

mov[si+2],ax

CLI

POPDS

;初始化主片8259,其端口地址为20H和21H

MOVAL,11H

OUT20H,AL;ICW1

MOVAL,08H

OUT21H,AL;ICW2

MOVAL,04H

OUT21H,AL;ICW3

MOV21H,01H

OUT21H,AL;ICW4

MOVAL,6FH;OCW1

OUT21H,AL

;初始化8254

MOVDX,CON8254

MOVAL,________;计数器0,方式0

OUTDX,AL

MOVDX,A8254

MOVAL,________;给计数器0送初值

OUTDX,AL

STI

AA1:

JMPAA1

;中断服务程序

IRQ7:

MOVAX,014DH

INT10H;显示字符M

MOVAX,0120H

INT10H

MOVAL,_______

OUT_______,AL;中断结束命令

IRET

CODEENDS

ENDSEGMENT

2、定时应用实验

编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟,OUT0输出波形为1ms方波。

实验步骤:

(1)接线图如图4-3所示;

(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;

(3)运行实验程序,用示波器测试OUT0输出,验证程序功能。

图4.38254定时应用实验接线图

实验程序清单

A8254EQU06C0H

B8254EQU06C2H

C8254EQU06C4H

CON8254EQU06C6H

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,CON8254

MOVAL,________;8254控制字,计数器0,方式3

OUTDX,AL

MOVDX,A8254

MOVAL,________;给计数器0送初值

OUTDX,AL

MOVAL,________

OUTDX,AL

AA1:

JMPAA1

CODEENDS

ENDSTART

六、思考题

1、在将计数初值赋给8254后,马上就可以启动并进行定时或计数吗?

 

2、若CLK0输入1.925MHz的时钟,能否在OUT0实现输出30ms的定时脉冲?

 

实验四8255并行接口实验

一、实验目的

1、学习并掌握8255的工作方式及其应用;

2、掌握8255典型应用电路的接法。

二、实验设备

PC机一台,TD-PITE实验装置一套。

三、实验内容

1、基本输入输出实验。

本实验系统中,8255的端口地址分别为0640H,0642H,0644H以及0646H。

编写程序,使8255的A口为输入,接拨动开关,B口为输出,接发光二极管;要求只要开关拨动,发光二极管的显示就发生相应改变。

2、流水灯显示实验。

编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。

四、实验原理

图5.18255内部结构及外部引脚图

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A,B,C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:

方式0——基本输入/输出方式、方式1——选通输入/输出方式、方式2——双向选通工作方式。

8255的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图5-2所示。

五、实验步骤

1、基本输入输出实验

本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

用一组开关信号接入端口A,端口B输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入输出功能。

具体实验步骤如下述:

图5.28255控制字格式

(1)实验接线图如图5-3所示,按图连接实验线路图;

(2)编写实验程序,经编译、连接无误后装入系统;

图5-38255基本输入输出实验接线图

(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

实验程序清单

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0646H

MOVAL,__________;8255的工作方式控制字

OUTDX,AL

AA1:

MOVDX,0640H

INAL,DX

CALLDELAY

MOVDX,0642H

OUTDX,AL

JMPAA1

;延时子程序

DELAY:

PUSHCX

MOVCX,0F00H

AA2:

PUSHAX

POPAX

LOOPAA2

POPCX

RET

CODEENDS

ENDSTART

2、流水灯显示实验

使8255的A口和B口均为输出,数据灯D7DO由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。

实验接线图如图5-5所示。

实验步骤如下所述:

(1)按图5-5连接实验线路图;

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,观察LED灯的显示,验证程序功能;

图5-58255流水灯实验接线图

(4)自己改变流水灯的方式,编写程序。

实验程序清单

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

Start:

movdx.0646h

Moval,80h

Outdx,al

Movbx,0180h

Aa1:

movdx,0640h

Moval,bl

Outdx,al

Calldelay

Movdx,0642h

Moval,bh

Outdx,al

Calldelay

Rorbl,1

Rol,bh,1

Jmpaa1

DELAY:

PUSHCX

MOVCX,0F00H

AA2:

PUSHAX

POPAX

LOOPAA2

POPCX

RET

CODEENDS

ENDSTART

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

当前位置:首页 > 高等教育 > 文学

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

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