汇编实验报告.docx

上传人:b****7 文档编号:9596858 上传时间:2023-02-05 格式:DOCX 页数:39 大小:1.49MB
下载 相关 举报
汇编实验报告.docx_第1页
第1页 / 共39页
汇编实验报告.docx_第2页
第2页 / 共39页
汇编实验报告.docx_第3页
第3页 / 共39页
汇编实验报告.docx_第4页
第4页 / 共39页
汇编实验报告.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

汇编实验报告.docx

《汇编实验报告.docx》由会员分享,可在线阅读,更多相关《汇编实验报告.docx(39页珍藏版)》请在冰豆网上搜索。

汇编实验报告.docx

汇编实验报告

电子科技大学计算机科学与工程学院

 

标准实验报告

 

(实验)课程名称微型计算机原理与接口技术

 

电子科技大学教务处制表

 

电子科技大学

实验报告

学生姓名:

邓文熙学号:

2013060109022指导教师:

徐行

实验地点:

A2-413-1实验时间:

2016.5.22

一、实验室名称:

A2-413-1

二、实验项目名称:

汇编语言编程训练

三、实验学时:

4

四、实验原理:

(包括知识点,电路图,流程图)

 

五、实验目的:

理解汇编语言生成可执行程序的过程

掌握MASM汇编工具的基本使用方法

掌握DEBUG调试工具的基本使用方法

实现具备简单功能的汇编程序:

顺序、分支、循环、子程序等的设计

六、实验内容:

(介绍自己所选的实验内容)

2、无符号数排序

·数据段的ARY数组中存放有10个无符号数,试找出其中最大者送入MAX单元。

(用LOOP指令做循环)

七、实验器材(设备、元器件):

MASM汇编工具,DEBUG调试工具

八、实验步骤:

(编辑调试的过程)

步骤1建立汇编源程序(*.asm)

步骤2:

汇编

步骤3:

连接

步骤4:

运行及调试

九、实验数据及结果分析:

(实验运行结果介绍或者截图,对不同的结果进行分析)

使用debug调试命令后得到的程序运行结果,可以通过追踪命令来显示程序的每一步的执行过程

部分程序源代码:

DATASEGMENT

ARYDB17,5,40,0,67,12,34,78,32,10

MAXDB?

DATAENDS

STACK1SEGMENTPARASTACK

DW20HDUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

BEGIN:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETARY

MOVCX,9

MOVAL,[SI]

LOP:

INCSI

CMPAL,[SI]

JAEBIGER

MOVAL,[SI]

BIGER:

DECCX

JNZLOP

MOVMAX,AL

MOVAH,4CH

INT21H

CODEENDS

ENDBEGIN

十、实验结论:

(联系理论知识进行说明)

成功实现了要求实验内容中取最大值的方法,并且能通过T,G,D等调试命令详细追踪到每一步程序的实现,能够让我们更加充分的了解汇编程序是怎样工作的。

十一、总结及心得体会:

通过本次实验我成功学习并掌握了简单的汇编程序的编译方法以及它的调试方法,可以更加清晰地了解到汇编程序的运行过程。

十二、对本实验过程及方法、手段的改进建议:

可以让我们尝试更多的汇编程序设计方法。

报告评分:

指导教师签字:

 

电子科技大学教务处制表

 

电子科技大学

实验报告

学生姓名:

邓文熙学号:

2013060109022指导教师:

徐行

实验地点:

A2-411实验时间:

2016.5.26

一、实验室名称:

A2-411

二、实验项目名称:

8259中断控制器实验

三、实验学时:

4

四、实验原理:

(包括知识点,电路图,流程图)

1.8259A的工作过程

中断源在中断请求输入端IR0-IR7上产生中断请求

涉及问题:

中断请求的触发方式有哪些?

中断请求被锁存在IRR中,并经IMR屏蔽,结果送优先权电路判优

涉及问题:

IRR/IMR的数据是自动写入还是通过软件编程设定?

优先权电路检出优先权最高的中断请求位,设置ISR的对应位(置1)

涉及问题:

中断判优的依据是什么?

ISR是自动写入还是通过软件编程设定?

8259A控制逻辑接受中断请求,向CPU输出INT信号

CPU接受INT信号,进入两个INTA中断响应周期,第一个周期通知8259A做好响应准备,第二个周期8259A将响应的中断类型号输出到DB上

涉及问题:

CPU中断响应过程中的“配套操作”有哪些?

CPU读取该中断类型号,转移到相应的中断处理程序

涉及问题:

如何通过中断类型号找到中断处理程序?

(后面详解)

2、8259A的命令字

ICW1/OCW2/OCW3复用同一个地址(A0=0);剩下的命令字复用另一个地址(A0=1),在本系统中,复用地址分别是0FFE0H和0FFE1H,预置数类别顺序为先初始化命令字,再操作命令字,预置数设定顺序为下标顺序。

0FFE0H用于ICW1,OCW2和OCW3,0FFE1H用于ICW2,ICW3,ICW4和OCW1。

本次实验中,ICW3、OCW3不需要进行设定。

本实验只需要用一片8259A进行中断控制,中断源采用单脉冲信号,中断触发方式属于边沿触发,且8086/8088系统必须设定ICW4,因此ICW1=00010011B=13H

本系统中,设定使用中断类型8来服务IR7边沿触发产生的中断,所以ICW2=00001000B=08H(详细说明见第5页PPT)

对于单片8259A,不需要设定ICW3,而8086/8088系统需要确定ICW4。

因此跳过ICW3的设定直接设定ICW4。

在该实验中,我们使用全嵌套方式(最常用的也是默认的工作方式,只开放比当前中断优先级高的中断,且中断优先权的级别固定,按照IR0-IR7逐级次之。

)和普通EOI方式(一般的中断结束方式,在中断程序返回前,输出中断结束命令把ISR当前优先级最高的对应位清零)操作,因此ICW4=00001001B=09H(详细说明见第6页PPT)

对于OCW,假设使用OCW1来屏蔽除IR7外其它所有中断,这样OCW1=01111111B=7FH;选用普通EOI,则OCW2=00100000=20H(详细说明见第7页PPT),流程图如下

3、实验参考电路及接线说明(8259部分)

SP插孔和8259A的IR7插孔相连(实验中可以选择任意一个或多个中断源)

连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接。

8259的CS端连138译码器的Y0孔。

将8259的单元总线接口D0-D7,用8芯排线或8芯扁平线与数据总线单元D0-D7任一接口相连。

 

五、实验目的:

理解中断技术的基本原理

掌握8259中断控制器的基本原理

学会编写中断服务程序

掌握Dias实验箱及仿真软件的使用方法

六、实验内容:

(介绍自己所选的实验内容)

编制程序,利用8259芯片的IRi作为中断源,产生多级中断,系统显示中断号,比如:

IR7作为中断源则显示7。

七、实验器材(设备、元器件):

Dias实验箱及仿真软件

八、实验步骤:

(编辑调试的过程)

步骤1依照电路图链接线路

步骤2:

编写主程序

步骤3:

8259初始化编程

步骤4:

确定中断类型号和中断向量表

9、实验数据及结果分析:

(实验运行结果介绍或者截图,对不同的结果进行分析)

图为实现了多级中断后,led数码管的变化情况。

源代码:

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,ES:

CODE

ORG3400H

H8:

JMPP8259

ZXKEQU0FFDCH

ZWKEQU0FFDDH

LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H

BUFDB?

?

?

?

?

?

Port0EQU0FFE0H

Port1EQU0FFE1H

P8259:

CLI

CALLWP;初始化显示“P.”

MOVAX,OFFSETINT8259

MOVBX,003CH

MOV[BX],AX

MOVBX,003EH

MOVAX,0000H

MOV[BX],AX

MOVAX,OFFSETINT8359;;;;;;;;;;

MOVBX,0034H

MOV[BX],AX;增加一个新的IR5内容

MOVBX,0036H

MOVAX,0000H

MOV[BX],AX

CALLFOR8259

movsi,0000h

STI

CON8:

CALLDIS

JMPCON8

;------------------------------------

INT8259:

cli

MOVBX,OFFSETBUF

MOVBYTEPTR[BX+SI],07H

INCSI

CMPSI,0007H

JZX59

XX59:

MOVAL,20H

MOVDX,Port0

OUTDX,AL

movcx,0050h

xxx59:

pushcx

calldis

popcx

loopxxx59

popcx

movcx,offsetCON8

pushcx

STI

IRET

X59:

MOVSI,0000H

CALLWP

JMPXX59

;==============================

INT8359:

cli

MOVBX,OFFSETBUF

MOVBYTEPTR[BX+SI],05H

INCSI

CMPSI,0007H

JZY59

YY59:

MOVAL,20H

MOVDX,Port0

OUTDX,AL

movcx,0050h

YYY59:

pushcx

calldis

popcx

loopYYY59

popcx

movcx,offsetCON8

pushcx

STI

IRET

Y59:

MOVSI,0000H

CALLWP

JMPYY59

;==============================

FOR8259:

MOVAL,13H

MOVDX,Port0

OUTDX,AL

MOVAL,08H

MOVDX,Port1

OUTDX,AL

MOVAL,09H

OUTDX,AL

MOVAL,5FH;IRQ7;;;;;;;;;;

OUTDX,AL

RET

;---------------------------

WP:

MOVBUF,08H;初始化显示“P.”

MOVBUF+1,10H

MOVBUF+2,10H

MOVBUF+3,10H

MOVBUF+4,10H

MOVBUF+5,10H

RET

;--------------------------------

DIS:

MOVCL,20H

MOVBX,OFFSETBUF

DIS1:

MOVAL,[BX]

PUSHBX

MOVBX,OFFSETLED

XLAT

POPBX

MOVDX,ZXK

OUTDX,AL

MOVAL,CL

MOVDX,ZWK

OUTDX,AL

PUSHCX

MOVCX,0100H

DELAY:

LOOP$

POPCX

CMPCL,01H

JZEXIT

INCBX

SHRCL,1

JMPDIS1

EXIT:

MOVAL,00H

MOVDX,ZWK

OUTDX,AL

RET

;--------------------------

CODEENDS

ENDH8

十、实验结论:

(联系理论知识进行说明)

成功实现了要求实验内容中8259的单级中断和多级中断的实现,成功通过LED灯显示了中断程序的相关过程,实现了8259的中断过程。

十一、总结及心得体会:

通过本次实验我成功学习并掌握了简单的8259中单级中断和多级中断的编译方法,更加充分的认识到了8259中断控制器的使用方法。

十二、对本实验过程及方法、手段的改进建议:

可以让我们尝试更多的关于8259中断程序设计方法。

报告评分:

指导教师签字:

 

电子科技大学教务处制表

 

电子科技大学

实验报告

学生姓名:

邓文熙学号:

2013060109022指导教师:

徐行

实验地点:

A2-411实验时间:

2016.6.1

一、实验室名称:

A2-411

二、实验项目名称:

8253时钟中断计时实验

三、实验学时:

4

四、实验原理:

(包括知识点,电路图,流程图)

1、8253基本功能

具有三个相互独立的16位计数器通道

每个通道都可设定以6种工作方式之一进行计数/定时

每个计数器都可设为按二进制或BCD码计数

具有计数和定时功能,基于减1计数工作

定时器减为0后,可自动装入定时常数初值,并产生输出信号

在减1操作中,任何时刻计数器的值都可由CPU经计数输出寄存器读取

2、8253工作方式与功能

方式0:

计数结束产生中断输出(软件控制)

方式1:

重复触发的单稳输出(硬件控制)

方式2:

分频器(软件控制)

方式3:

方波发生器(软件控制)

方式4:

选通信号发生器(软件触发)

方式5:

选通信号发生器(硬件触发)

软件控制:

程序写入控制字和初值后就可计数

硬件控制:

写入控制字和初值后,由GATE信号启动计数。

3、有关8253芯片

8253基本工作方式就是对CLK时钟脉冲进行计数。

CLK脉冲可以是均匀的、连续的、周期精确的,也可以是不均匀的、断续的、周期不定的。

无论8253工作于何种方式,当计数器减1到0时,在OUT引脚上必定有电平或脉冲输出,OUT引脚输出的信号可以是方波、电平或脉冲等,由工作方式决定。

8253每个计数器都可以选择6种工作方式之一进行工作。

在控制字中进行设定。

二进制方式计数的最小值是0001H,最大值为0000H,即216=65536

二-十进制(BCD码)计数的最小值是0001H,最大值为0000H,即104=10000

五、实验目的:

回顾8259中断控制器芯片的使用方法

掌握8253可编程计数/定时器芯片的原理

结合使用8253、8259芯片,联合设计实现时钟中断计时实验

六、实验内容:

(介绍自己所选的实验内容)

1.利用8253的多个通道产生周期为1s的方波信号(方式3),该信号作为8259芯片的中断源,用边沿触发方式产生中断(单级中断),在七段数码管上显示发生中断的次数,构成一个“秒表”(显示范围为0-9)。

七、实验器材(设备、元器件):

Dias实验箱及仿真软件

8、实验步骤:

(编辑调试的过程)

步骤1:

链接电路图

步骤2:

主程序、中断程序功能的设计

步骤3:

8253、8259芯片控制字,初始化顺序

步骤4:

时序控制

9、实验数据及结果分析:

(实验运行结果介绍或者截图,对不同的结果进行分析)

图为实现中断秒表计数器。

部分程序源代码:

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,ES:

CODE

ORG3400H

H8:

JMPP8259

ZXKEQU0FFDCH

ZWKEQU0FFDDH

LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H

BUFDB?

?

?

?

?

?

COUNTDB0

TIMEDB0

Port0EQU0FFE0H

Port1EQU0FFE1H

Port8253_0EQU0FFE0H

Port8253_1EQU0FFE1H

Port8253_2EQU0FFE2H

Port8253_3EQU0FFE3H

P8259:

CLI

CALLWP;初始化显示“00”

;设置中断服务

MOVAX,OFFSETINT8259

MOVBX,003CH

MOV[BX],AX

MOVBX,003EH

MOVAX,0000H

MOV[BX],AX

;初始化

CALLSETTING8253

CALLSETTING8259

movsi,0000h

STI

CON8:

CALLDIS

JMPCON8

;------------------INIT8259------------------

INT8259:

CLI

XORCOUNT,1

JZX59

XX59:

MOVAL,20H

MOVDX,Port0

OUTDX,AL

POPCX

MOVCX,OFFSETCON8

PUSHCX

STI

IRET

X59:

INCTIME

CMPTIME,0AH;10

JZRESET

X59DIS:

MOVCL,TIME

MOVBUF,CL

CALLDIS

JMPXX59

RESET:

MOVTIME,0;TIME=0

JMPX59DIS

;================设置8259==============

SETTING8259:

MOVAL,13H

MOVDX,Port0

OUTDX,AL

MOVAL,08H

MOVDX,Port1

OUTDX,AL

MOVAL,09H

OUTDX,AL

MOVAL,7FH;IRQ7

OUTDX,AL

RET

;-------------数码管初始显示00xxxx--------------

WP:

MOVBUF,00H

MOVBUF+1,10H

MOVBUF+2,10H

MOVBUF+3,10H

MOVBUF+4,10H

MOVBUF+5,10H

RET

;-------------数码管显示-------------------

DIS:

MOVCL,20H

MOVBX,OFFSETBUF

DIS1:

MOVAL,[BX]

PUSHBX

MOVBX,OFFSETLED

XLAT

POPBX

MOVDX,ZXK

OUTDX,AL

MOVAL,CL

MOVDX,ZWK

OUTDX,AL

PUSHCX

MOVCX,0100H

DELAY:

LOOP$

POPCX

CMPCL,01H

JZEXIT

INCBX

SHRCL,1

JMPDIS1

EXIT:

MOVAL,00H

MOVDX,ZWK

OUTDX,AL

RET

;===========设置8253============

SETTING8253:

MOVDX,Port8253_3

MOVAL,036H;控制字,10计数器2,11先写低8位,在写高8位,011方式3,1二进制计数

MOVDX,Port8253_0

MOVAL,00;低8位

OUTDX,AL;

MOVAL,96H;高8位

OUTDX,AL;

RET

;--------------------------

CODEENDS

ENDH8

十、实验结论:

(联系理论知识进行说明)

成功实现了要求实验内容中使用8253和8259中断控制器实现了LED秒表计数的方法。

十一、总结及心得体会:

通过本次实验我成功学习并掌握了简单的8253和8259中断控制的编译方法以及它的调试方法。

十二、对本实验过程及方法、手段的改进建议:

可以让我们尝试更多的8253汇编程序设计方法。

报告评分:

指导教师签字:

电子科技大学教务处制表

 

电子科技大学

实验报告

学生姓名:

邓文熙学号:

2013060109022指导教师:

徐行

实验地点:

A2-411实验时间:

2016.6.8

一、实验室名称:

A2-411

二、实验项目名称:

8255A并行可编程接口芯片实验

三、实验学时:

4

四、实验原理:

(包括知识点,电路图,流程图)

 

8255的工作方式

方式0——基本输入/输出方式,不用联络信号,不用中断。

A组和B组都可以作为输入/输出,而且输出是锁存的.

方式1——选通输入输出方式,与方式0相比,它的主要特点是当A口、B口工作于方式1时,C口的某些I/O线被定义为A口和B口在方式1下工作时所需的联络信号线,这些线已经定义,不能由用户改变。

A口工作于方式1输出时,用PC3,PC6和PC7作联络线。

C口剩余的两个I/O线PC4和PC5工作于方式0。

该方式下输入输出均带锁存器。

实验题目1---实验箱参考连线

PC1的状态获取:

INAL,DX;DX是PC口的地址

TESTAL,02H;TEST做AND操作,但是不修改AL的值

JZJUMP;PC1=0跳转,PC1=1顺序执行

五、实验目的:

掌握8255并行可编程芯片的使用和编译方法。

六、实验内容:

(介绍自己所选的实验内容)

1.检测8255的PC1连接开关信号的控制位,当开关为高电平时,PA口和PB口连接的12只发光二极管按照二进制顺序加1的方式点亮(亮灯表示1,不亮表示0)。

A口和B口工作在方式0。

七、实验器材(设备、元器件):

Dias实验箱及仿真软件

八、实验步骤:

(编辑调试的过程)

步骤1按图连接好电路图

步骤2:

设置A口输入,B口输出

步骤3:

循环,改变B口输出

步骤4:

运行及调试

9、实验数据及结果分析:

(实验运行结果介绍或者截图,对不同的结果进行分析)

如图所示,成功实现12只发光二极管按二进制加1的方式顺序点亮。

源代码:

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,ES:

CODE

ORG32F0H

PAEQU0FFD8H

PBEQU0FFD9H

PCEQU0FFDAH

PCTLEQU0FFDBH

H3:

MOVAL,89H

MOVDX,PCTL

OUTDX,AL;MOD:

0,

MOVBX,0FFFH

MOVDX,PC

JUMP:

INAL,DX

TESTAL,02H

JZJUMP

DECBX

 

MOVDX,PA

MOVAL,BL

OUTDX,AL

INCDX

MOVAL,BH

OUTDX,AL

CALLDELAY1

MOVDX,PC

JUMP2:

INAL,DX

TESTAL,02H

JZJUMP2

JMPJUMP

DELAY1:

PUSHAX

PUSHCX

MOVCX,0010H

DELY2:

CALLDELAY2

LOOPDELY2

POPCX

POPAX

RET

DELAY2:

PUSHCX

MOVCX,1000H

LOOP$

POPCX

RET

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

当前位置:首页 > 总结汇报 > 其它

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

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