测控微机原理与接口实验指导罗小燕.docx

上传人:b****6 文档编号:8611349 上传时间:2023-02-01 格式:DOCX 页数:13 大小:81.14KB
下载 相关 举报
测控微机原理与接口实验指导罗小燕.docx_第1页
第1页 / 共13页
测控微机原理与接口实验指导罗小燕.docx_第2页
第2页 / 共13页
测控微机原理与接口实验指导罗小燕.docx_第3页
第3页 / 共13页
测控微机原理与接口实验指导罗小燕.docx_第4页
第4页 / 共13页
测控微机原理与接口实验指导罗小燕.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

测控微机原理与接口实验指导罗小燕.docx

《测控微机原理与接口实验指导罗小燕.docx》由会员分享,可在线阅读,更多相关《测控微机原理与接口实验指导罗小燕.docx(13页珍藏版)》请在冰豆网上搜索。

测控微机原理与接口实验指导罗小燕.docx

测控微机原理与接口实验指导罗小燕

《微机原理与接口技术》实验指导书(8学时)

实验1调试工具Debug的使用

一、实验要求:

1.掌握使用MASMFORWINDOWS软件上机的过程;

2.掌握常用的Debug调试指令。

二、实验内容:

1.学习使用MASMFORWINDOWS集成实验环境共享版软件的上机过程

在MASMFORWINDOWS集成实验环境的主界面下

第一步:

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

“保存”,取名为比如EX11.ASM的源程序;

DATASEGMENT

NUMDB82H,68H,88H

SUMDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETNUM

MOVAL,[BX]

INCBX

ADDAL,[BX]

INCBX

ADDAL,[BX]

MOVSUM,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第二步:

点击“运行”,在下拉菜单中选择“编译成目标文件(OBJ)”,再选择“生成可执行文件(EXE)”,最后点击“运行”。

程序运行后将自动回到主界面。

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

第三步:

点击“运行”,在下拉菜单中选择“DEBUG调试”,在调试状态下,依次输入单步指令T,观察各寄存器和标志寄存器的内容的变化。

2.学习使用Debug的各种命令

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

它能使程序设计者接触到机器内部,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容、装入或显示、修改任何文件、完成磁盘读写等多种功能。

经常用到的DEBUG指令有:

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

格式:

T[N]];(N小于等于6)

从CD:

IP开始执行程序,每执行1或(N)条停下来。

执行后都将显示各寄存器的内容、标志位的状态、本条指令的CS:

IP地址,本条指令的机器码和下一条要执行的指令。

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

还可以连续执行几条,如T6,结果如下:

(超过6,将显示不下)

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

格式:

R[寄存器名]

若缺省寄存器名,则显示当前所有寄存器内容、状态标志及将要执行的下一条指令的地址、及其指令代码及汇编语句形式等。

如R

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

如:

RAX

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

格式:

D[段地址:

偏移地址]

如:

DES:

0,将显示ES:

0000~0070共128个单元的内容。

屏幕左边为每行的首地址(段:

偏移量)。

中间为从指定地址开始的128个内存单元的内容,用十六进制的格式输出,右边为内存单元中的数据对应的相应可显示的ASCII码字符。

没有对应的ASCII码就用.来代替。

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

格式1:

E[地址]

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

E1000:

0F

在下图中,先用D查看1000:

0~F单元的内容,再用E修改从1000:

0开始的10个单元的内容,最后用D查看变化。

格式2:

E[地址][字符串]

格式3:

E[地址][机器码]

还可以用E命令将机器码写入内存,如从内存1000:

0单元写入一段机器码,然后用D命令查看刚才写入的内容。

机器码对应的汇编指令

B80100movax,0001

B90200movcx,0002

01c8addax,cx

(5)反汇编命令U

格式:

U[起始地址]

如用U1000:

0可将1000:

0开始的内存单元的内容翻译为汇编指令,并显示出来。

(6)汇编命令A

格式:

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

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

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

(7)填入命令F

格式:

F地址范围内容

如:

F1234:

091,2,3,4,5,6,7,8,9将1234:

0开始9个单元的内容填入指定内容,可以用D命令观察结果。

(8)退出命令Q

格式:

Q退出DEBUG,回到DOS状态,但无存盘功能。

4.完成以下实验任务

(1)分别使用E命令和A命令两种方式将下面的程序段写入内存1000:

0中,逐条执行,观察每条指令执行后CPU中相关寄存器的变化。

提示:

注意CS:

IP的指向。

机器码汇编指令

B8204emovax,4e20

051614addax,1416

Bb0020movbx,2000

01d8addax,bx

(2)用D命令查看DS:

0010-002f和F000:

0010-002F两内存块内容,用F命令将字符“A”分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM的区别。

 

三.实验报告要求

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

2.写出合适的DEBUG命令,完成任务

(1),

(2),观察产生的现象,说明可读写内存RAM和只读内存ROM的区别。

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

实验2寻址方式与基本指令

一、实验要求:

1.掌握指令中源操作数的寻址方式的判断。

2.掌握状态标志寄存器各标志位在DEBUG中的显示形式。

3.掌握80x86指令的正确用法。

二、实验内容:

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

顺序

标志位名字MOVBX,OFFSETNUM

MOVAL,[BX]

INCBX

ADDAL,[BX]

INCBX

ADDAL,[BX]

MOVSUM,AL

置位=1

复位=0

1

OF溢出(有/无)

OV

NV

2

DF方向(减/增)

DN

UP

3

IF中断(允许/屏蔽)

EI

DI

4

SF符号(负/正)

NG

PL

5

ZF零(是/否)

ZR

NZ

6

AF辅助进位((有/无)

AC

NA

7

PF奇偶(偶/奇)

PE

PO

8

CF进位(有/无)

CY

NC

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

DATASEGMENT

NUMDB82H,68H,88H

SUMDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETNUM

MOVAL,[BX]

INCBX

ADDAL,[BX]

INCBX

ADDAL,[BX]

MOVSUM,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(1)代码段第一条可执行指令MOVAX,DATA对应的机器代码为8ED8H,它是一个2字节指令。

(2)执行完MOVDS,AX指令后,数据段寄存器DS的内容为1465H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为

14650H、14651和14652H。

(3)程序中第一条ADDAL,[BX]指令是一个2字节指令,该操作数所在存储单元的逻辑地址(DS):

(BX)为1466:

000D,其物理地址为14651H;执行完该指令后(AL)=0EAH,CF=0,OF=0,ZF=0,SF=1,AF=0,PF=0。

(4)执行完第二条ADDAL,[BX]指令后(AL)=72H,CF=1,OF=1,ZF=0,SF=0,AF=1,PF=1。

(5)指令MOVSUM,AL执行完后,注意观察(DS):

0003H单元中值的变化,该单元的值变为00H。

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

STACKSEGMENT

STLDW100HDUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVAX,STACK

MOVSS,AX

MOVSP,LENGTHSTL

MOVAX,0101101100001010B

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=,OF=______,ZF=______,SF=______,AF=______,PF=______;

(3)执行ANDAX,BX指令后(AX)=H,CF=,OF=,ZF=,SF=,AF=,PF=。

四.实验报告要求

1.简要说明DEBUG的单步执行命令T的作用。

2.写出实验内容中任务2和任务3中所有问题的正确答案。

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

 

实验3汇编语言的调试与运行

一、实验要求:

1.掌握80x86指令的正确用法。

2.掌握堆栈指令的寻址方式及执行结果。

二、实验内容:

1.学习书第110页例4.4,将程序补充完整,使用DEBUG命令调试之。

例4.4:

内存数据段存放了5个带符号数,首地址为TAB1,要求将各数取绝对值后存入以TAB2为首址的内存区。

程序片段如下:

LEASI,TAB1;(SI)←源地址指针

LEADI,TAB2;(DI)←目标地址指针

MOVCX,5;(CX)←循环次数

CHECK:

MOVAL,[SI];取一个带符号数到AL

ORAL,AL;AL内容不变,但使之影响标志

JNSNEXT;若(SF)=0,则转NEXT

NEGAL;否则求补

NEXT:

MOV[DI],AL;传送到目标地址

INCSI;源地址加1

INCDI;目标地址加1

DECCX;循环次数减1

JNZCHECK;如不等于零,则转CHECK

提示:

补充数据段和部分代码段。

使用DEBUG的D命令观察程序的准确性。

2.将下列指令汇编成为程序EX14.EXE,上机运行,观察指令执行后寄存器的内容。

MOVSP,2000H

MOVAX,3000H

MOVBX,5000H

PUSHAX

PUSHBX

POPAX

执行后(SP)=H,(AX)=H,(BX)=H

3.读懂下列程序,在横线上分别填入

(1)LOOPAGAIN

(2)LOOPEAGAIN

(3)LOOPNEAGAIN

指出程序执行后,AX,BX,CX,DX的内容。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,1

MOVBX,2

MOVDX,3

MOVCX,4

AGAIN:

INCAX

ADDBX,AX

SHRDX,1

MOVAH,4CH

INT21H

CODEENDS

ENDSSTART

三.实验报告要求

1.写出实验内容1,2,3中所有问题的正确答案。

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

 

实验4DOS系统功能调用

一、实验要求:

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

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

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

二、实验内容:

1.INT21H的DOS功能调用中关于基本字符、字符串输入和输出功能的主要有4种。

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

格式:

MOVDL,<欲显示的字符的ASCII>

MOVAH,02H

INT21H

功能:

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

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

格式:

MOVAX,SEG<欲显示的字符串的首地址>

MOVDS,AX

LEADX,<欲显示字符串的地址>

MOVAH,09H

INT21H

功能:

将指定内存缓冲区中的字符串在屏幕上显示出来,缓冲区的字符串应以“$”为结束标志。

2.学习书上第135页例4.15,将程序补充完整,并运行,观查结果。

例4.15:

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

DI)中,并在屏幕上显示字符'Y'。

如果字符串中没有回车符,则在屏幕上显示字符'N'。

该字符串的首地址为STRING。

程序片段如下:

LEADI,STRING;(DI)←字符串首址

MOVAL,0DH;(AL)←回车符

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

CLD;清状态标志位DF

REPNESCASB;如未找到,重复扫描

JZMATCH;如找到,则转MATCH

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

JMPDSPY;转到DSPY

MATCH:

DECDI;(DI)←(DI)−1

MOVDL,'Y';(DL)←'Y'

DSPY:

MOVAH,02H

INT21H;显示字符

提示:

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

3.学习书上第111页例4.5,将程序补充完整,并将大数显示出来。

例4.5在数据段从MYDATA开始的存储单元中分别存放了两个8位无符号数,试比较它们的大小,并将大者传送到MAX单元。

程序片段如下:

LEABX,MYDATA;MYDATA偏移地址送BX

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

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

CMPAL,[BX];两个数比较

JNCDONE;如CF=0,则转DONE

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

DONE:

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

提示:

补充数据段和部分代码段。

将一位BCD数转换为ASCII码后才能被显示。

4.完成书后练习,214页第11题,运行,观查结果。

练习4.11:

试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NOMATCH”。

 

三.实验报告要求

1.完成实验内容2,3,4,写出完整程序和结论。

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

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

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

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

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