微机原理与接口技术实验指导书 (一)_第1页
微机原理与接口技术实验指导书 (一)_第2页
微机原理与接口技术实验指导书 (一)_第3页
微机原理与接口技术实验指导书 (一)_第4页
微机原理与接口技术实验指导书 (一)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《微机原理与接口技术》

实验一、调试工具Debug的使用

一.实验目的

1.学会使用MASMFORWINDOWS集成实验环境共享版软件.

2.掌握汇编语言程序的上机过程。

3.学习使用DEBUG程序的各种命令。

4.

5.掌握用DEBUG调试自编程序的方法。

二.实验内容

1.学习MASMFORWINDOWS软件

2o汇编语言程序的上机过程

在MASMFORWINDOWS集成实险环境的立界面下

第一步:点击第二行的“新建”,在程序模板的相应位置输入下列程序(黑体部分),点击

第二行的:“保存”,取名为比如EX11。ASM的源程序:

DATASEGMENT

NUMDB82H,68H,88H

SUMDB?

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DAIA

MOVDS,AX

MOVBX,OFFSETNUM

MOVAL,[BX]

INCBX

ADDAL,[BX]

INCBX

ADDAL,[BX]

MOVSUM,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第二步:点击第一行的“运行”,在下拉菜单中选择“编译成目标文件(OBJ)”,再选择“生

成可执行文件(EXE)",最后点击“运行”。程序运行后将自动回到主界面。

如果程序有错误,则在编译过程中有错误提示(错误行和错误原因),改正后再保存,重新

编译,直到编译成功为止。

第三步:点击第一行的“运行”,在下拉菜单中选择“DEBUG调试“,进入调试状态.

3.学习使用DEBUG

DEBUG程序是一种专门为分析和调试汇编语言程序而设计的一种调试工具.它能使程序设计

者接触到机器内部,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内

容、装入或显示、修改任何文件、完成磁盘读写等多种功能。经常用到的DEBUG指令有:

(1)单步执行命令T(也叫跟踪命令)

格式:T[N]];(N小于等于6)

从CS:IP开始执行程序,每执行1或(N)条停下来。执行后都将显示各寄存器的内容、标志

位的状态、下条指令的CS:IP地址,下条指令的机器码和下一条要执行的指令。

(2)显示、修改寄存器命令R

格式:R[寄存器名]

若缺省寄存器名,则显示当前所有寄存器内容、状态标志及将要执行的下一条指令的地址、

及其指令代码及汇编语句形式等。如R

若给出寄存器名称,则显示该寄存器的内容并可进行修改.如:RAX

AX=13EABX=0001CX=0027DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13F4ES=13E4SS=13F4CS=13F5IP=000DNUUPEINGNZNAPONC

13F5:000D43INCBX

-rax

AX13EA

(3)显示内存单元内容命令D

格式:D[段地址:偏移地址]

如:DES:0,将显示ES:OOOO〜0070共128个单元的内容.

-des:0CD20FF9F009AFE-1DF04F03FC0D8A03O

13EB:0000FC0D1703FC0DFEe0DH0101010002FFFFFF

13EB:0010FFFFFFFFFFFFFFFFFFFFFFA9134C01

13EB:0020FEI-

BC121400180013-FFFFFFFF00000000

13EB:0030050000000000限00H0000000000000000

13EB:0040CD21CB000000限000000000000202020

13EB:0050202020202020兼200000000000202020

13EB:0060202020202020贫200000000000000000

13EB:0070

屏幕左边为每行的首地址(段:偏移量)。中间为从指定地址开始的128个内存单元的内容,

用十六进制的格式输出,右边为内存单元中的数据对应的相应可显示的ASCII码字符。没有对

应的ASCII码就用。来代替。

(4)修改存储单元命令E

格式1:E[地址]

可以逐个修改制定地址单元的当前内容,如:E1000:0F

在下图中,先用D查看1000:0〜F单元的内容,再用E修改从1000:0开始的10个单元的内

容,最后用D查看变化。

-D1000:0F

10E001:000000A2A6568AC3DIE3D1-E381C3BA3C8B1789

D10F123456789

1000:0000000102030405060?-0809C3BA3C8B1789

格式2:E[地址][字符串]

-E1000:01“A+B”2“C++”3“IBM”

-D1000:0

1000:000001412B4202432B2B-0349424D3C8B1789.A+B.C++.IBM<...

格式3:E[地址][机器码]

还可以用E命令将机器码写入内存,如从内存1000:0单元写入一段机器码,然后用D命

令查看刚才写入的内容。

机器码对应的汇编指令

B80100movax,0001

B90200movex,0002

01c8addax,ex

-E1000:0B80100B9020001C8

-D1000:0

1000:0000B80100B9020001C8-B020F3AABF565189.............UQ.

1000:00103EA256E88EFF8B3E-A256B4008BD82401〉・U・・・・〉・U・・・・$・

(5)反汇编命令U

格式:U[起始地址]

如用U1000:0可将1000:0开始的内存单元的内室翻译为汇编指令,并显示出来。

ku1000:0

1000:0000B80100MOUAX.0001

1000:0003B90200MOUCX.0002

1000:000601C8ADDAX,CX02

(6)汇编命令A

格式:A[起始地址]可以按住ctrl+c键退出汇编命令

在当前地址开始键入汇编涪言语句,并能把它们汇编成机器代码,相继存放在从指定地址

开始的存储区中。即用汇编指令的格式在指定内存中写入机器指令。

MOUAX1

13F?:0000MOUBX2

13F7:0003MOUCX3

13F7:0006ADDAXBX

13F7:0009ADDAXCX

13F7:000BADDAXAX

:C

13F7000D人

13F7:000F

(7)填入命令F

格式:F地址范围内容

如:F1234:091,2,3,4,5,6,7,8,9将1234:0开始9个单元的内容填入指定内容,

可以用D命令观察结果。

-d1234709

1234:00005542522444495624-4449UBR$DIU$DI

-f1234:091,2,3,4,5,6,7,8,9

-d1234:09

1234:00000102030405060708-0901..........

(8)退出命令Q

格式:Q退出DEBUG,回到DOS状态,但无存盘功能.

2.实验任务

(1)分别使用E命令和A命令两种方式将下面的程序段写入内存1000:0中,逐条执行,观

察每条指令执行后CPU中相关寄存器的变化。提示:注意CS:IP的指向。

机器码汇编指令

B8204emovax,4e20

051614addax,1416

Bb0020movbx,2000

01d8addax,bx

(2)向内存B8800H开始的单元中填写数据,例如:一EB880:0000108888888888

先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象,说明原因。

(3)用D命令查看DS:0010-002f和F000:0010-002F两内存块内容,用F命令将字符“A”

分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM的区另八

三.实验报告要求

1.总结T、R、D、E、U、A等命令的含义.

2.写出合适的DEBUG命令,完成任务(1)。

3.写出合适的DEBUG命令,完成任务(2)和(3),观察产生的现象,说明可读写内存RAM和

只读内存ROM的区别。

4.写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。

实验二、汇编指令与寻址方式

一.实验目的

1.熟悉8086寻址方式及基本指令的功能。

2.掌握利用DEBUG的单步指令T来观察各寄存器的状态,特别是状态标志寄存器的状态。

二.实验内容

1.学习状态标志寄存器各标志住在DEBUG中的显示形式

顺序标志位名字置位=1复位=0

10F溢出(有/元)0VNV

2DF方向(减/增)DNUP

3IF中断(允许/屏蔽)EIDI

4SF符号(负/正)NGPL

5ZF零(是/否)ZRNZ

6AF辅助进位((有/ACNA

无)

7PF奇偶(偶/奇)PEPO

8CF进位(有/无)CYNC

2。汇编语言程序的上机过程

编译调试实验一建立的EX11。ASM的源程序;

在调试状态下,依次输入单步指令T,观察各寄存器和标志寄存器的内容的变化,并回答下

列问题。

DEBUG的单步执行命令T的作用:从CS:IP开始执行程序,每执行一条停下来。执行后都将

显示各寄存器的内容、标志位的状态、本条指令的CS:IP地址,本条指令的机器码和下一条要执

行的指令.

如在EX11。EXE程序中,第一条指令为START开始的MOVAX,DATA,执行了T后,显示:

IPt-

AX=13F4BX=0000CX=002?DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13E4ES=13E4SS=13F4CS=13F5IP=0003NUUPEIPLNZNAPONC

£3F5:00038ED8MOUDS,AX

还可以连续执行几条,如T6,结果如下:(超过6,将显示不下)

AX=13E7BX=0000CX=0027DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13D7ES=13D7CS=13FfiIP=0伪03NUIIPFIPLNZNAPONC

L3E8:00038ED8MOUDS,AX

AX=13E7BX=0000CX=0027DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13E7ES=13D7SS=13E7CS=13E8IP=0005NUUPEIPLNZNAPONC

13E8:0005BB0000MOUBX,0000

AX=13E7BX=0000CX-0027DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13E7ES=13D7SS=13E7CS=13E8IP=0008NUUPEIPLNZNAPONC

13E8:00088A07MOUAL,[BX]DS:0000=82

AX=1382BX=0000CX=0027DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13E7ES=13D7SS=13E7CS=13E8IP=000ANUUPEIPLNZNAPONC

13E8:000A43INCBX

fiX=1382BX=9萌1CX=MW27siDI=UUUU

DS=13E7ES=13D7SS=13E7CS=13E8IP=000BNUUPEIPLNZNAPONC

13E8:000B0207ADEAL,[BX]DS:0001=68

AX=13EABX=0001CX=0027DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13E7ES=13D7SS=13E7CS=13E8IP=000DNUUPEINGNZNAPONC

13E8:000D43INCBX

(1)代码段第一条可执行指令MOVAX,DATA对应的机器代码为H,它是

一个字节指令.

(2)执行完MOVDS,AX指令后,数据段寄存器DS的内容为H,源

程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为

H、H和Ho

(3)程序中第一条ADDAL,[BX]指令是一个字节指令,该操作数所在存储

单元的逻辑地址(DS):(BX)为,其物理地址为H;执行完

该指令后(AL)=H,CF=,0F=,ZF=,

SF=,AF=,PF=;若两操作数为无符号数,

计算结果是否正确?若两操作数为带符号数,计算结果是否正

确?若计算结果正确,结果是正数还是负数?

(4)执行完第二条ADDAL,[BX]指令后(AL)=H,CF=,

0F=,ZF=,SF=,AF=,PF

=o若两操作数为无符号数,计算结果是否正确?若两操作

数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负

数?

(5)指令MOVSUM,AL执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变

为Ho

4.将下列源程序汇编为EX12。EXE文件,使用DEBUG的T命令执行,并回答以下问题。

STACKSEGMENT

STLDW100HDUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,SS:STACK

START:MOVAX,STACK

MOVSS,AX

MOVSP,LENGTHSTL

MOVAX,010110110000101OB

MOVBX,0100110010100011B

PUSHAX

PUSHBX

ADDAX,BX

POPAX

POPBX

ANDAX,BX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(1)代码段的前三条指令MOVAX,STACK.MOVSS,AX和MOVSP,LENGTHSTL的功能

为堆栈初始化,试问执行完这三条指令后,堆栈的栈底所在单元的逻辑地址(SS):(SP)

为;执行PUSHAX指令后堆栈指针寄存器(SP)=H,

此时,(SS):(SP+1)和(SS):(SP)单元的值为H;执行完PUSHBX后

(SP)=H,此时,(SS):(SP+1)和(SS):(SP)单元的值为H;

执行完POPAX后(SP)=H;执行完POPBX后(SP)=H;

此时(AX)=H,(BX)=H.

(2)执行ADDAX,BX指令后(AX)=H,CF=,0F=—

,ZF=,SF=,AF=,PF=;

(3)执行ANDAX,BX指令后(AX^H,CF5,OF^,ZF

—,SF=,AF=,PF=o

三.实验报告要求

1o写出实险内容中任务3和任务4中所有问题的正确答案。

2。写出实验小结,内容包括实脸心得(收获)、不足之处或今后应注意的问题等。

实验三、DOS系统功能调用

实验目的

1o掌握DOS系统功能调用中关于字符及字符串的输入输出方法。

2.掌握汇编语言程序设计的方法。

3O进一步掌握调试工具DEBUG的使用方法。

二.实验内容

1.INT21H的DOS功能调用中关于基本字符、字符串输出功能:

(1)显示字符(02H号功能)

格式:MOVDL,〈欲显示的字符的ASCIl>

MOVAH,02H

INT21H

功能:将置入DL寄存器中的字符(ASCII码)送屏幕显示.

(2)显示字符串(09H号功能)

格式:MOVAX,SEG〈欲显示的字符串的首地址〉

MOVDS,AX

LEADX,〈欲显示字符串的地址〉

MOVAH,09H

INT21H

功能:将指定内存缓冲区中的字符串在屏幕上显示出来,缓冲区的字符串应以为结

束标志。

2.将程序补充完整,并运行,观查结果。

在包含10个字符的字符串中寻找第一个回车符CR(其ASCII码为ODH),找到后将其地址

保留在(ES:DI)中,并在屏幕上显示字符'Vo如果字符串中没有回车符,财在屏幕上显示

字符'N'.该字符串的首地址为STRING。程序片段如下:

LEADI,STRING:(DI)一字符串首址

MOVAL,ODH;(AL)一回车符

MOVCX,10;(CX)一字符串长度

CLD;清状态标志位DF

REPNESCASB;如未找到,重复扫描

JZMATCH;如找到,则转MATCH

MOVDL,'N';字符串中无回车,则(DL)-'N'

JMPDSPY;转到DSPY

MATCH:DECDI;(DI)4-(DI)-1

MOVDL,'Y,;(DL)-Y

DSPY:MOVAH,02H

INT21H;显示字符

提示:补充附加数据段和部分代码段。

3.将程序补充完整,并将大数显示出来。

在数据段从MYDATA开始的存储单元中分别存放了两个8位无符号数,试比较它们的大小,

并将大者传送到MAX单元。程序片段如下:

LEABX,MYDATA;MYDATA偏移地址送BX

MOVAL,[BX];第一个无符号数送AL

INCBX:BX指向第二个无符号数

CMPAL,[BX];两个数比较

JNCDONE;如。忆0,则转DONE

MOVAL,[BX];否则,第二个无符号数送AL

DONE:MOVMAX,AL;较大的无符号数送MAX单元

提示:补充数据段和部分代码段.将一位BCD数转换为ASCII码后才能被显示。

DATASEGMENT

MYDATADB75H,34H

MAX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论