汇编语言实验指导书.docx

上传人:b****5 文档编号:6249769 上传时间:2023-01-04 格式:DOCX 页数:38 大小:229.83KB
下载 相关 举报
汇编语言实验指导书.docx_第1页
第1页 / 共38页
汇编语言实验指导书.docx_第2页
第2页 / 共38页
汇编语言实验指导书.docx_第3页
第3页 / 共38页
汇编语言实验指导书.docx_第4页
第4页 / 共38页
汇编语言实验指导书.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

汇编语言实验指导书.docx

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

汇编语言实验指导书.docx

汇编语言实验指导书

 

微机原理与接口技术实验指导书

 

容文杰杨俊华编写

 

河北师范大学职业技术学院电子系

 

目录

实验目的与要求………………………………….........………...1

实验一汇编语言上机操作…...……………………......….....2

实验二循环程序设计实验...………………………….…......9

实验三TDN86/51教学系统认识实验.........................…....…11

实验四8259中断控制器应用实验...…………………..........14

实验五8253定时/计数器应用实验...………………....……23

实验六8255并行接口应用实验...…………………..........…31

附录一DEBUG命令及操作..................................…………....35

附录二系统编程信息.…………………………….................37

 

实验目的与要求

一、实验目的

微机原理实验共安排了6个实验内容。

其目的是使学生理解8086CPU系统的工作原理。

熟悉8086指令系统和常用接口芯片的工作原理及使用方法。

掌握汇编语言程序设计方法和常用系统功能调用的使用方法,并能利用DEDUG调试工具来调试汇编语言程序。

能够利用实验室中所提供的硬件环境搭建硬件控制电路,并能完成相应的控制功能和编制有关的控制程序。

为学生从事计算机研究与应用工作打下一个坚实的基础。

二、实验要求

1.实验前要预习,做好充分准备,包括了解相应接口芯片的工作原理和使用方法,分析或编制源程序清单,了解实验步骤和调试方法等。

2.要熟悉教学实验设备的使用方法。

在实验过程中,要注意多观察,有意识地培养自己发现问题和解决问题的能力。

3.实验完成后,必须由实验指导教师检查运行结果,经教师确认后才算完成。

4.每个实验完成后,应写出实验报告。

实验报告内容应包括:

(1)实验目的;

(2)实验设备;

(3)实验内容及步骤;

(4)观察到的现象及结果分析;

(5)实验中遇到的问题及解决办法;

(6)实验的心得体会等。

5.实验时要遵守实验室的规章制度,爱护实验设备。

6.实验结束后,要将实验设备和实验材料收拾好,并经指导教师检查后方可离开。

 

实验一汇编语言上机操作

一、实验目的

掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。

二、实验设备

PC机及相应的软件。

三、实验内容及步骤

1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。

2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。

3、汇编语言上机操作,见图1-1汇编语言上机操作流程。

上机操作过程:

开始输入cmd确认后显示:

C:

\Documentsandsetting\Administrator>-

输入cdc:

\masm后显示:

c:

\masm>-

c:

\masm>EDITABC.asm

c:

\masm>MASMABC;

若有语法错,回EDIT下改该程序

c:

\masm>LINKABC;

若有错,回EDIT下改程序

c:

\masm>ABC

若运行结果错,回EDIT下改程序

或在DEBUG下调试,找原因。

c:

\masm>DEBUGABC.exe

 

图1-1汇编语言上机操作流程

汇编语言程序举例

例1:

将BL寄存器的内容按二进制形式显示出来。

设:

(BL)=01010011B

分析:

采用2号功能调用,分别输出3031303130303131

显示:

01010011

参考程序:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,8;显示字符个数为8

MOVBL,53H

NEXT:

SHLBL,1;将显示位移至CF中

JCONE;CF=1?

MOVDL,30H;CF=0,将0的ASCII放在DL中

JMPEXIT

ONE:

MOVDL,31H;CF=1,将1的ASCII放在DL中

EXIT:

MOVAH,2

INT21H;调用DOS功能显示

DECCX;循环次数减1

JNZNEXT;判断是否结束

MOVAH,4CH;返回DOS

INT21H

CODEENDS

ENDSTART

上机操作:

c:

\masm>EDITShowBL.asm;编辑源程序

c:

\masm>MASMShowBL;汇编成ShowBL.obj

Microsoft(R)MacroAssemblerVersion5.10

Copyright(C)MicrosoftCorp1981,1988.Allrightsreserved.

48912+447243Bytessymbolspacefree

0WarningErrors

0SevereErrors

c:

\masm>LINKShowBL;连接成ShowBL.exe

Microsoft(R)OverlayLinkerVersion3.61

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

LINK:

warningL4021:

nostacksegment

c:

\masm>ShowBL;装载并执行ShowBL.exe

01010011;屏幕显示

c:

\masm>-

在DEBUG下查看ShowBL.exe的装入情况:

c:

\masm>DEBUGShowBL.exe

-R;查看当前寄存器内容

AX=0000BX=0000CX=001BDX=0000SP=0000BP=0000SI=0000DI=0000

DS=0B51ES=0B51SS=0B61CS=0B61IP=0000NVUPEIPLNZNAPONC

B353MOVBL,53

-UCS:

0;查看程序

0B61:

0000B353MOVBL,53

0B61:

0002B90800MOVCX,0008

0B61:

0005D0E3SHLBL,1

0B61:

00077205JB000E

…….

0B61:

0017B44CMOVAH,4C

0B61:

0019CD21INT21

…….

-G;执行程序

01010011

Programterminatednormally

-

例2:

将某段中的字符串“Hello!

”传送到另一段中。

编写完整的汇编语言程序,完成内存数据块传送功能。

参考程序:

AASEGMENT;数据段1

XXDB‘Hello!

’;定义源串

AAENDS

BBSEGMENT;数据段2

YYDB6dup(?

);定义目的缓冲区

BBENDS

CCSEGMENT;代码段

ASSUMECS:

CC,DS:

AA,ES:

BB;指示程序中标号,变量所在段

START:

CLD;设置传送方向

MOVAX,AA;DS:

SI←源串首地址

MOVDS,AX

LEASI,XX

MOVAX,SEGYY;ES:

DI←目的首地址

MOVES,AX

MOVDI,OFFSETYY

MOVCX,6;CX←串的长度

REPMOVSB;串传送

MOVAH,4CH;调用4CH系统功能,返回DOS

INT21H

CCENDS

ENDSTART;指示程序结束和程序入口

c:

\masm>EDIThello.asm;编辑源程序

c:

\masm>MASMhello;;汇编源程序

Microsoft(R)MacroAssemblerVersion5.10

Copyright(C)MicrosoftCorp1981,1988.Allrightsreserved.

49860+421241Bytessymbolspacefree

0WarningErrors

0SevereErrors

c:

\masm>LINKhello;连接程序

Microsoft(R)OverlayLinkerVersion3.61

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

LINK:

warningL4021:

nostacksegment

c:

\masm>hello;执行程序

c:

\masm>-

c:

\masm>DEBUGhello.exe;利用DEBUG查看结果

-U;查看程序代码

CLD

MOVAX,AA

MOVDS,AX

LEASI,XX

MOVAX,SEGYY

MOVES,AX

MOVDI,OFFSETYY

MOVCX,6

REPMOVSB

MOVAH,4CH

INT21H

129F:

0000FCCLD

129F:

0001B89D12MOVAX,129D

129F:

00048ED8MOVDS,AX

129F:

00068D360000LEASI,[0000]

129F:

000AB89E12MOVAX,129E

129F:

000D8EC0MOVES,AX

129F:

000FBF0000MOVDI,0000

129F:

0012B90600MOVCX,0006

129F:

0015F3REPZ

129F:

0016A4MOVSB

129F:

0017B44CMOVAH,4C

129F:

0019CD21INT21

对应的源程序见文本框中所示。

-D129D:

0L20;执行程序前,查看源串内容

129D:

000048656C6C6F210000-0000000000000000Hello!

.......

129D:

00100000000000000000-0000000000000000................

-D129E:

0L20;执行程序前,查看目的串

129E:

00000000000000000000-0000000000000000..................

129E:

0010FCB89D128ED88D36-0000B89E128EC0BF.......6.......

-

-G;执行程序

Programterminatednormally

-D129D:

0L50;从源串重新查看

129D:

000048656C6C6F210000-0000000000000000Hello!

.........

129D:

001048656C6C6F210000-0000000000000000Hello!

.......

129D:

0020FCB89D128ED88D36-0000B89E128EC0BF.....6......

129D:

00300000B90600F3A4B4-4CCD2109E8080003......L.!

......

129D:

0040F1E803003C0DC3AC-E8ECF875043C3B75...<...u.<;u

-

AASEGMENT

XXDB'Hello!

AAENDS

BBSEGMENT

YYDB6DUP(?

BBENDS

CCSEGMENT

ASSUMECS:

CC,DS:

AA,ES:

BB

START:

CLD

MOVAX,AA

MOVDS,AX

LEASI,XX

MOVAX,SEGYY

MOVES,AX

MOVDI,OFFSETYY

MOVCX,6

REPMOVSB

MOVAH,4CH

INT21H

CCENDS

ENDstart

-U;查看程序代码

129F:

0000FCCLD

129F:

0001B89D12MOVAX,129D

129F:

00048ED8MOVDS,AX

129F:

00068D360000LEASI,[0000]

129F:

000AB89E12MOVAX,129E

129F:

000D8EC0MOVES,AX

129F:

000FBF0000MOVDI,0000

129F:

0012B90600MOVCX,0006

129F:

0015F3REPZ

129F:

0016A4MOVSB

129F:

0017B44CMOVAH,4C

129F:

0019CD21INT21H

对应的源程序见文本框中所示。

 

实验二循环程序设计实验

一、实验目的

加深对循环程序结构的理解,掌握循环结构程序设计的方法,熟练汇编语言程序上机调试的方法和过程。

二、实验设备

PC机及相应的软件。

三、实验内容及步骤

1、编写一个求某数据区内负数个数的汇编语言源程序。

要求:

在数据区定义若干个字节数据,在数据之后定义一个字单元存放你输入的数据个数,在数据个数之后的单元存放结果。

按要求编写汇编语言源程序,并对其进行上机调试,观察运行结果并记录。

参考程序:

DATASEGMENT

DAT1DB61H,12H,78H,9AH,81H,0D6H,00H,56H,......

NUMDW$-DAT1

RESULTDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETDAT1

MOVCX,NUM

MOVBL,0

LP1:

MOVAL,[SI]

TESTAL,80H

JELP2

INCBL

LP2:

INCSI

LOOPLP1

MOVRESULT,BL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

2、修改上述源程序,使其能分别求出数据区中的正数、负数和零的个数。

并将结果存放在数据个数后面连续的三个单元。

写出源程序并对其进行上机调试,观察运行结果并记录。

 

实验三TDN86/51教学系统认识实验

一、实验目的

掌握TDN86/51教学系统的基本操作。

二、实验设备

TDN86/51教学系统实验箱一台。

三、实验内容及步骤

1、系统认识实验

实验步骤:

(1)使用串行通讯电缆将实验系统与PC机相连。

(2)将位于线路板右下角的系统状态选择开关拨至86档,开启实验系统。

(3)双击PC机桌面上的WMD86快捷方式图标,进入窗口操作界面。

选择对应的串行口号。

(4)鼠标点击文件下拉菜单的编辑进入编辑状态。

输入并保存源程序,扩展名为*.ASM。

参考程序:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDI,3500H

MOVCX,0010H

MOVAX,0000H

SAHF

A1:

MOV[DI],AL

INCDI

INCAX

DAA

LOOPA1

A2:

JMPA2

CODEENDS

ENDSTART

(5)对源程序进行汇编、连接,检查无误后,将可执行文件*.EXE装入实验系统。

系统装载后提示起始地址为0000:

2000。

(6)装载完毕后使用U0000:

2000命令进行反汇编,检查程序是否正确装入。

发现程序有错误或需要调整时,可用A命令修改。

(7)分别使用T命令单步运行;用G=0000:

2000命令连续运行;用B命令设置断点和GB=0000:

2000命令带断点运行。

用D命令查看存储单元内容;用E命令修改存储单元内容。

2、系统操作练习

将内存3500H单元开始的0-15共16个数传送到3600H单元开始的存储区中。

参考程序:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVSI,3500H

MOVDI,3600H

MOVCX,0008H

A1:

MOVAX,[SI]

MOV[DI],AX

INCSI

INCSI

INCDI

INCDI

DECCX

JNZA1

A2:

JMPA2

CODEENDS

ENDSTART

 

实验步骤:

(1)编辑程序并检查无误后,经汇编、连接后装入系统。

(2)用E3500命令在3500-3510单元中分别装入00、01、02……数据。

(3)用G=0000:

2000命令运行以上程序,按实验系统的复位键返回监控状态。

(4)用D3600命令显示结果。

 

实验四8259中断控制器应用实验

一、实验目的

1、掌握8259可编程中断控制器的应用编程。

2、掌握8259级连方式的使用方法。

3、熟悉在系统的实验单元上连接实验电路。

二、实验设备

1、TDN86/51教学实验系统一台。

2、连接导线(排线)若干。

三、实验内容及步骤

1、8259应用实验

(1)

实验内容:

利用系统的开关KK2产生中断请求信号,接到8259的IRQ7。

8259每次响应IRQ7的中断时,显示一个字符“7”,中断10次后停止。

实验线路:

 

参考程序:

STACKEGMENTSTACK

DW4DUP(?

STACKENDS

CODEGMENT

ASSUMECS:

CODE

START:

PUSHDS;保存数据段

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ7;取中断程序入口地址

ADDAX,2000H;加载时IP=2000H

MOVSI,003CH;填8259中断7的中断矢量

MOV[SI],AX;写偏移地址

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX;写段地址

CLI

POPDS

INAL,21H;读8259中断屏蔽字

ANDAL,7FH;开放8259中断7

OUT21H,AL

MOVCX,000AH

A1:

CMPCX,0000H

JNZA2

INAL,21H;读8259中断屏蔽字

ORAL,80H;关8259中断7

OUT21H,AL

STI

HLT

A2:

STI

JMPA1

IRQ7:

MOVAX,0137H;中断程序入口

INT10H

MOVAX,0120H;产生空格

INT10H

DECCX

MOVAL,20H;发中断结束命令

OUT20H,AL

CLI

IRET

CODEENDS

ENDSTART

实验步骤:

(1)接线:

8259的IRQ7连接开关KK2。

(2)编辑程序并检查无误后,经汇编、连接后装入系统。

(3)G=0000:

2000运行程序,按动开关KK2,观察屏幕的显示情况。

结果:

按动开关KK2,屏幕上以字符“7”来响应,直到按动开关KK210次后系统处于停机状态。

系统复位后返回监控状态。

2、8259应用实验

(2)

实验内容:

利用系统的开关KK1和KK2产生中断请求信号,分别接到8259的IRQ6和IRQ7。

当无中断请求时执行主程序,延时显示“main”,当有中断请求时则执行其中断服务程序,显示对应的中断号“6”或“7”;在执行低级中断服务程序中允许再响应高级的中断。

 

试验线路:

参考程序:

STACKSEGMENTSTACK;定义堆栈段

DW64DUP(?

STACKENDS

DATASEGMENT;定义数据段

TABLEDB4DH,41H,49H,4EH,20H,00H

DATAENDS

CODESEGMENT;定义代码段

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA;主程序开始

MOVDS,AX

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ6;取中断程序入口地址

ADDAX,2000H;加载时IP=2000H

MOVSI,0038H;填8259中断6的中断矢量

MOV[SI],AX;写偏移地址

MOVAX,0000H

MOVSI,003AH

MOV[SI],AX;写段地址

MOVAX,OFFSETIRQ7;取中断程序入口地址

ADDAX,2000H;加载时IP=2000H

MOVSI,003CH;填8259中断7的中断矢量

MOV[SI],AX;写偏移地址

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX;写段地址

POPDS

MOVAL,13H;ICW1

OUT20H,AL

MOVAL,08H;ICW2

OUT21H,AL

MOVAL,09H;ICW4

OUT21H,AL

MOVAL,3DH;开放8259中断6、7、1

OUT21H,AL

STI

A1:

MOVCX,0007H

MOVAX,010DH

INT10H;回车换行

A2:

MOVAH,06H

MOVBX,OFFSETTABLE;取数据段中ASCII码存放地址

INT10H;显示字符串“MAIN”

CALLDALLY;调用延时子程序

LOOPA2

JMPA1;到7次换行

IRQ6:

STI;8259中断6程序入口

CALLDALLY

MOVAX,0136H;显示“6”

INT10H

MOVAL,20H;显示空格

OUT20H,AL

IRET;中断返回

IRQ7:

STI;8259中断7程序入口

CALLDALLY

MOVAX,0137H;显示“7”

INT10H

MOVAL,20H;显示空格

OUT20H,AL

IRET;中断返回

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

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

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

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