完整word版青岛科技大学微机原理与应用实验指导书.docx

上传人:b****3 文档编号:26709096 上传时间:2023-06-21 格式:DOCX 页数:52 大小:201.44KB
下载 相关 举报
完整word版青岛科技大学微机原理与应用实验指导书.docx_第1页
第1页 / 共52页
完整word版青岛科技大学微机原理与应用实验指导书.docx_第2页
第2页 / 共52页
完整word版青岛科技大学微机原理与应用实验指导书.docx_第3页
第3页 / 共52页
完整word版青岛科技大学微机原理与应用实验指导书.docx_第4页
第4页 / 共52页
完整word版青岛科技大学微机原理与应用实验指导书.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

完整word版青岛科技大学微机原理与应用实验指导书.docx

《完整word版青岛科技大学微机原理与应用实验指导书.docx》由会员分享,可在线阅读,更多相关《完整word版青岛科技大学微机原理与应用实验指导书.docx(52页珍藏版)》请在冰豆网上搜索。

完整word版青岛科技大学微机原理与应用实验指导书.docx

完整word版青岛科技大学微机原理与应用实验指导书

微机原理与应用实验指导书

 

实验一调试工具debug的使用及基本指令用法

1、实验目的

(1)掌握debug调试工具的使用方法。

(2)测试8086的各种基本指令的用法。

2、实验设备

PC机一台或QTH-2008PC实验设备一套。

3、实验内容

(1)debug的使用

debug的进入和退出

c:

\masm>debug↙

-ß这是debug的提示符,在此可以输入debug的命令

-q↙ß退出debug

②及修改CPU内部的各寄存器

-r↙ß观察各寄存器的内容

AX=0000BX=0000CX=0000DX=0000SP=CFDEBP=0000SI=0000DI=0000

DS=10DDES=10DDSS=10DDCS=10DDIP=0100NVUPDIPLNZNAPONC

10DD:

01007C0AJL010C

-rax↙ß显示并修改AX的内容

AX0000

:

1234↙ß将AX的内容改为1234H

-rf↙ß显示并修改标志寄存器的内容

NVUPDIPLNZNAPONC-ovdn↙ß将标志寄存器的OF置为OV;DF置为DN。

③观察观察和修改内存单元的内容

-d2000↙ß查看从地址DS:

2000H开始的128个单元的内容

10DD:

20000000000000000000-0000000000000000................

10DD:

20100000000000000000-0000000000000000................

10DD:

20200000000000000000-0000000000000000................

10DD:

20300000000000000000-0000000000000000................

10DD:

20400000000000000000-0000000000000000................

10DD:

20500000000000000000-0000000000000000................

-e2000↙ß修改从地址DS:

2000H开始内存单元的内容

10DD:

200000.0100.02↙ß划线数字为键入的内容,连续修改按空格键

④输入程序

-a100↙ß从CS:

100H处开始输入程序(默认的程序起始地址)

10DD:

0100movax,1234↙ß输入汇编指令

10DD:

0103mov[2002],ax↙

10DD:

0106↙ß回车退出程序输入

-a103↙ß修改103处的指令

10DD:

0103mov[2000],ax↙ß输入汇编指令

10DD:

0106↙

-

⑤单步执行程序

-t=100↙ß执行CS:

100H处的一条指令,自动显示寄存器内容及下一条指令。

AX=1234BX=0000CX=0000DX=0000SP=CFDEBP=0000SI=0000DI=0000

DS=10DDES=10DDSS=10DDCS=10DDIP=0103OVDNDIPLNZNAPONC

10DD:

0103A30020MOV[2000],AXDS:

2000=0201

-t↙ß继续执行下一条指令

⑥反汇编程序

-u100↙ß从CS:

100H处开始反汇编

10DD:

0100B83412MOVAX,1234

10DD:

0103A30020MOV[2000],AXß刚才输入的两条指令

10DD:

010636SS:

ß乱码

10DD:

0107A22C41MOV[412C],AL

10DD:

010AEB22JMP012E

10DD:

010C83F906CMPCX,+06

10DD:

010F750DJNZ011E

10DD:

0111807C0A2CCMPBYTEPTR[SI+0A],2C

10DD:

01157505JNZ011C

10DD:

0117FF36A22CPUSH[2CA2]

10DD:

011B41INCCX

10DD:

011CEB10JMP012E

10DD:

011E83F909CMPCX,+09

⑦执行一段程序

-g=100106↙ß从CS:

100H开始,执行到CS:

106处停止。

AX=1234BX=0000CX=0000DX=0000SP=CFDEBP=0000SI=0000DI=0000

DS=10DDES=10DDSS=10DDCS=10DDIP=0106OVDNDIPLNZNAPONC

10DD:

010636SS:

10DD:

0107A22C41MOV[412C],ALSS:

412C=00

……

(2)基本指令的用法

在debug中输入一些基本指令并执行,观察并记录指令的执行情况。

4、实验步骤

(1)启动Debug调试工具,根据实验内容,验证Debug命令及指令执行情况。

(2)观察调试过程中指令执行后各寄存器及数据区的内容。

5、实验问题探讨

(1)如何利用Debug去观察中断向量表?

(2)机器复位后执行的第一条指令在哪儿?

是什么指令?

(3)在debug中输入16进制数时,需要键入H吗?

(4)从当前位置开始执行指令到CS:

0212H处,在Debug中应该使用什么命令?

实验二宏汇编程序的基本语法及运算类程序编制

1、实验目的

(1)学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

(2)熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

(3)掌握利用汇编实现简单、分支、循环结构设计

2、实验设备

PC机一台或QTH-2008PC实验设备一套。

3、实验内容

(1)编制包含多种数据定义伪指令的完整程序,经汇编、连接后,装入DEBUG,观察数据的存储情况,从而掌握常用伪指令的作用。

举例:

X1DB12H,’AB’

X2DW12H,’AB’

NUM=$-X1

X3DD12H;以上数据在内存中如何存放?

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVAL,X1;翻译成机器指令是什么格式?

MOVAX,X2;?

MOVBL,NUM;?

在debug中执行完MOVDS,AX指令后(为什么?

),使用

-d0观察数据段的存储单元的数据存储情况。

(2)在内存BUF开始的单元中,存放着一组无符号字节数据,编程查找其中最大值并存于MAX单元中。

4、编程指导

利用循环程序实现查找最大值,取出第一个数作为最大值初值,以次和后续数据进行比较比次数大则替换,否则保持不变.比较次数为个数减1.注意使用汇编、连接、调试的方法,尤其是DEBUG的使用。

在DEBUG状态下执行程序并设置断点,通过察看内存,看程序是否执行正确。

所编写的汇编程序,要注意结构,只有结构完整,汇编才能通过。

5、实验步骤

方法一、非集成开发环境

(1)使用EDIT或WINDOWS下的记事本或写字板输入你的程序并保存到c:

\masm目录下,命名为t3.asm(后缀必须是asm).

(2)汇编过程:

c:

\masm>masmt3;ß如果没有错误,将生成t3.obj文件

(3)连接过程:

c:

\masm>linkt3;ß如果没有连接错误,将生成t3.exe文件

(4)调试程序:

c:

\masm>debugt3.exeß将该程序装入debug进行调试。

方法二、使用QTHPC2008集成开发环境,建立项目文件、输入源程序、编译、连接、调试。

6、参考程序

图3-1查找最大值程序流程图

 

DATASEGMENT;数据段定义

BUFDB30,25,56,100,78,97,45,34,44

COUNTEQU$-BUF

MAXDB?

MINDB?

DATAENDS

STACKSEGMENTPARASTACK'STA';堆栈段

DB100DUP(?

STACKENDS

CODESEGMENT;代码段定义

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

MAINPROCFAR

START:

PUSHDS;前三句构造返回指针

MOVAX,0

PUSHAX

MOVAX,DATA;对数据段赋值

MOVDS,AX

MOVCX,COUNT;数据个数

MOVSI,OFFSETBUF

MOVAL,[SI]

DECCX;循环次数为个数减1

AGA:

INCSI

CMPAL,[SI]

JANEXT

MOVAL,[SI]

NEXT:

LOOPAGA

MOVMAX,AL;结果处理

EXIT:

RET

MAINENDP

CODEENDS

ENDSTART

7实验问题探讨

(1)伪指令中的表达式是在什么阶段进行运算得出结果的?

(2)如果数据为一组有符号数,如何修改?

(3)如果在查找最大值的同时查找最小值并存于MIN单元中,应如何实现?

实验三系统功能调用

1.实验目的

(1)掌握系统调用的方法,包括入口参数设置,功能号设置,系统调用和出口参数获得。

(2)进一步熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法,尤其是对带有中断调用的汇编程序的调试。

(3)掌握利用汇编实现键盘输入,屏幕显示的程序设计。

2、实验仪器

PC机一台或QTH-2008PC实验设备一套。

3.实验内容

(1)利用汇编语言实现以下过程:

首先在屏幕显示Whatisyourname:

然后等待用户从键盘输入姓名存入内存指定区间,输出回车换行后,显示ok!

(2)从键盘输入一串字符以空格为结束标记,并按逆序显示输出。

4.编程指导

DOS功能调用的一般步骤为:

1如有必要,装入入口参数到规定的寄存器;

2装入功能号到AH中;如有必要,装入子功能号到AL中;

3调用DOS相应功能的中断(这里一般指INT21H);

4如有必要,取出返回结果或出错信息

利用DOS系统功能调用可以实现读键盘、显示,对磁盘、文件的操作、输入输出操作、时间的设置和读取等。

注意对于包含有系统功能调用的汇编程序的调试方法,在单步调试时当遇到INT21H指令时不能用T命令跟踪,因为会进入到中断服务程序内部,这并不是我们所关心的。

结决的方法为:

在单步执行INT21H时,可用G命令代替T命令,G不用接起始地址,断点为INT21H的下一句地址。

或者,有一些DEBUG工具包含V或B命令可以不进入中断服务程序内部,而实现单步运行。

图3-2逆序输出流程图

5.编程参考

(1)程序流程图

(2)实验内容

(1)参考程序

DATASEGMENT;数据段定义

STR1DB'Whatisyouname:

$'

STR2DB'OK!

$'

STR3DB20

DB?

DB20DUP(?

DATAENDS

STACKSEGMENTPARASTACK'STA';堆栈段

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

MAINPROCFAR

START:

PUSHDS;前三句构造返回指针

MOVAX,0

PUSHAX

MOVAX,DATA;对数据段赋值

MOVDS,AX

MOVDX,OFFSETSTR1;显示

MOVAH,9

INT21H

MOVDX,OFFSETSTR3;接受输入字符

MOVAH,10

INT21H

MOVDL,0DH;输出回车换行

MOVAH,2

INT21H

MOVDL,0AH

MOVAH,2

INT21H

MOVDX,OFFSETSTR3;显示ok!

MOVAH,9

INT21H

EXIT:

RET

MAINENDP

CODEENDS

ENDSTART

(3)实验内容

(2)参考程序

DATASEGMENT;数据段定义

BUFDB100DUP(?

DATAENDS

STACKSEGMENTPARASTACK'STA';堆栈段

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

MAINPROCFAR

START:

PUSHDS;前三句构造返回指针

MOVAX,0

PUSHAX

MOVAX,DATA;对数据段赋值

MOVDS,AX

MOVSI,OFFSETBUF

MOVCX,0

AGA:

MOVAH,1;接受字符

INT21H

CMPAL,'';是否是空格

JZNEXT

MOV[SI],AL;存入字符

INCSI

INCCX

JMPAGA

NEXT:

MOVDL,0DH;输出回车换行

MOVAH,2

INT21H

MOVDL,0AH

MOVAH,2

INT21H

LOP1:

DECSI;逆序输出

MOVDL,[SI]

MOVAH,2

INT21H

LOOPLOP1

EXIT:

RET

MAINENDP

CODEENDS

ENDSTART

6.思考题

(1)利用堆栈实现程序2的要求。

(2)利用9号调用编写DOS界面下的简易菜单项。

实验四汇编语言码制转换程序设计

1.实验目的与要求

(1)掌握码制转换的基本原理及相应的转换程序的编写。

(2)进一步掌握利用DOS系统功能调用实现键盘输入,屏幕显示的功能。

2、实验设备

PC机一台或QTH-2008PC实验设备一套。

3.实验内容

(1)键盘输入一字符,以二进制形式显示其ASCII值。

例如:

输入字符A在屏幕显示01000001。

(2)键盘输入一串数字串,以空格为结束标记,统计其中数字字符的个数存入CX中,求这些数字之和存入BX中。

例如:

输入1234则CX=4BX=0AH.

(3)键盘输入十进制整数(假定范围为0-32767),然后转换成二进制格式存储。

4.编程指导

在程序设计中,经常需要进行代码转换。

常用的代码转换有:

BCD码转二进制码,二进制码转BCD码;ASCII码转BCD码,BCD码转ASCII码;二进制码转ASCII码,ASCII码转二进制码等。

实验

(1)是将二进制表示的数据显示,对应每位二进制数0,1的ASCII分别为30H和31H,将其转换后在用2号系统功能调用在屏幕上显示出来。

要注意2号调用的出口参数为AL,AL为1调用成功,AL为0调用不成功。

实验

(2)实验(3)都要注意从键盘输入的数字实际上是数的ASCII码,必需先将其转换为0-9的数后才能运算,实验

(2)将其相加,实验(3)要分别乘各自得权后累加在一起。

5.流程框图和参考程序

(1)实验内容

(1)参考程序

STACKSEGMENTPARASTACK'STA';堆栈段

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVAH,1

INT21H

MOVBL,AL

MOVCX,8

AGA:

SHLBL,1

MOVDL,30H

ADCDL,0

MOVAH,2

INT21H

LOOPAGA

EXIT:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

(2)实验内容

(2)参考程序

STACKSEGMENTPARASTACK'STA';堆栈段

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVCX,0

MOVBX,0

INPUT:

MOVAH,1

INT21H

CMPAL,''

JZSTOP

CMPAL,30H

JBINPUT

CMPAL,39H

JAINPUT

INCCX

SUBAL,30H

MOVAH,0

ADDBX,AX

JMPINPUT

EXIT:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

(3)实验内容(3)参考程序

图3-4ASCII码转换为二进制数

 

DATASEGMENT;数据段定义

KEY_BUFDB10

DB?

DB10DUP(?

DATA1DW?

DATAENDS

STACKSEGMENTPARASTACK'STA';堆栈段定义

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

MAINPROCFAR

START:

PUSHDS;前三句构造返回指针

MOVAX,0

PUSHAX

MOVAX,DATA;对数据段赋值

MOVDS,AX

MOVDX,OFFSETKEY_BUF;

MOVAH,0AH

INT21H

MOVSI,OFFSETKEY_BUF+1;

MOVBL,[SI]

INCSI

MOVAX,0

TRANS:

MOVDX,10

MULDX

MOVDH,0

MOVDL,[SI]

ANDDL,0FH

ADDAX,DX

INCSI

DECBL

JNZTRANS

MOVDATA1,AX

CALLOUTPUT

RET

MAINENDP

CODEENDS

ENDSTART

6.思考题

(1)将实验一中的最大值结果以十六进制形式显示。

(2)在屏幕上连续输出0-98的十进制数字。

实验五简单I/O接口的操作

1、实验目的

(1)掌握接口操作的基本方法,掌握数据输入输出程序编制的方法。

2、实验设备

QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。

3、实验内容

(1)利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273驱动发光二极管显示出来。

(2)控制8个LED,实现流水灯的功能。

4、实验说明

(1)74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。

(2)74LS273是一种8位D触发器,当CLR为高电平且CLK端电平正跳变时,D0——D7端数据被锁存到8D触发器中。

(3)端口地址范围:

IOY0:

180H~18FHIOY1:

190H~19FH

IOY2:

1A0H~1AFHIOY3:

1B0H~1BFH。

图4-174LS244与74LS273扩展I/O口原理图

5、实验原理图

6、实验步骤

(1)实验连线:

(确保电源关闭)

Ø244的CS——PC104总线接口模块的IOY0,Y7—Y0——开关K01—K08。

Ø273的CS——PC104总线接口模块的IOY1,Q7—Q0——发光二极管L1—L8。

Ø该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。

Ø

图4-2扩展I/O口连线图

该模块的数据(AD0~AD7)连到PC104总线接口模块的数据(D0~D7)。

(2)连线检查无误后,开机上电。

(3)利用debug中的i或o命令,测试一下端口是否好用。

(4)编制程序(略)

(5)拨动开关,观察发光二极管的变化。

7、参考程序

LS244EQU0180H;244片选信号

LS273EQU01a0H;273片选信号

MY_STACKSEGMENTPARA'STACK'

DB100DUP(?

MY_STACKENDS

MY_CODESEGMENTPARA'CODE'

MY_PROCPROCFAR

ASSUMECS:

MY_CODE,DS:

MY_DATA

ASSUMESS:

MY_STACK

MAIN:

MOVAX,MY_DATA

MOVDS,AX

READ1:

MOVDX,LS244;读取开关状态

INAL,DX

MOVDX,LS273

OUTDX,AL;送LED显示

CALLBREAK

JMPREAD1

MY_PROCENDp

;

BREAKPROCNEAR;按任意键退出

PUSHF

PUSHAX

PUSHDX

MOVAH,06H

MOVDL,0FFH

INT21H

JERETURN

MOVAX,4C00H

INT21H

RETURN:

POPDX

POPAX

POPF

RET

BREAKENDP

MY_CODEENDS

ENDMAIN

8、思考题

(1)如果IOWR没有连接或线断了,会出现什么现象?

(2)如果指示灯不亮,你如何排查解决此问题?

(3)如果74LS244和74LS273使用同一个端口地址?

能行么?

为什么?

实验一下。

(4)假定244或273的CS接IOY0,用端口地址181H或182H去访问244或273可以么?

为什么?

实验六可编程并行接口芯片8255A的使用

1、实验目的

(1)了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。

2、实验设备

QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。

3、实验内容(以下3个实验任选一个)

(1)流水灯实验:

利用8255的A口、B口循环点亮16只发光二极管。

(2)交通灯实验:

利用8255的A口模拟交通信号灯。

(3)I/O输入输出实验:

利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。

4、

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

当前位置:首页 > 考试认证 > 公务员考试

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

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