微机原理实验指导书1117Word格式文档下载.docx

上传人:b****2 文档编号:812316 上传时间:2023-04-29 格式:DOCX 页数:50 大小:304.13KB
下载 相关 举报
微机原理实验指导书1117Word格式文档下载.docx_第1页
第1页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第2页
第2页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第3页
第3页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第4页
第4页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第5页
第5页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第6页
第6页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第7页
第7页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第8页
第8页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第9页
第9页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第10页
第10页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第11页
第11页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第12页
第12页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第13页
第13页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第14页
第14页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第15页
第15页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第16页
第16页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第17页
第17页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第18页
第18页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第19页
第19页 / 共50页
微机原理实验指导书1117Word格式文档下载.docx_第20页
第20页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理实验指导书1117Word格式文档下载.docx

《微机原理实验指导书1117Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书1117Word格式文档下载.docx(50页珍藏版)》请在冰点文库上搜索。

微机原理实验指导书1117Word格式文档下载.docx

0100单元开始输入指令。

2>

.U----反汇编

U[地址范围]

(如仅指定起始地址:

则从指定的地址开始,反汇编32个字节;

如未指定地址范围:

则将上一个U命令的最后一个单元地址加1作为起始地址。

-U0030↙

则反汇编CS:

0030单元开始的指令。

3>

.D----显示内存单元内容

(内容可为十六进制数或相应的ASCII码字符)

D[地址范围]

(显示指定内存单元中的十六进制数或相应的ASCII码字符)。

-D0010↙

则显示DS:

0010单元的内容。

4>

.E----修改内存单元内容

E始地址[字符串]

-EDS:

100AABB↙

则将AA、BB存入DS:

0100――DS:

0101单元。

5>

.R----检查修改寄存器内容

R[寄存器名]

-R↙

则显示所有寄存器内容、标志位状态及下一条指令。

-RAX↙

则显示AX寄存器内容。

如需修改,则输入1-4个十六进制数,再按回车。

如不需修改,直接按回车。

-RF↙

则显示八个标志位状态,如需修改,则输入此标志位的相应值,再按回车。

6>

.G----运行――连续运行或设断点运行

G[=起始地址][断点地址](断点地址必需是有效指令的第一个字节)

若缺省“=起始地址”,则以CS:

IP(现行地址)为起始地址,程序执行到断点处,显示断点处所有寄存器内容和八个标志位状态,以及下一条指令。

-G9↙

(断点地址为0009)若缺省“断定地址”,程序顺序执行完毕,显示:

Programterminatednormally(程序执行完毕)。

-G↙

若前面已设过断点,然后程序再顺序执行完毕。

7>

.T----跟踪――单步运行

T[=起始地址][N](指令条数)若缺省“=起始地址”,则以CS:

IP(现行地址)为起始地址,程序执行N条指令后,显示断点处所有寄存器内容和八个标志位状态,及下一条指令。

-T5↙

则执行5条指令。

-T↙

则只执行一条指令。

注意:

若调试程序中有过程调用(包括软中断调用INTN指令),则需使用P命令。

(如用T命令,程序进入调用子程序内。

-P↙

则执行一条指令或一个子程序。

8>

.Q----退出

-Q↙

退出DEBUG返回DOS状态。

1.3预习报告格式

1.实验目的与要求

2.实验内容

3.实验仪器

4.实验原理(软件实验画流程图,硬件实验画电路图)

5.实验步骤

6.实验源程序

7.实验现象或结果记录

1.4实验报告格式

7.实验总结(实验现象或实验结果;

实验过程遇到的问题如何解决?

实验体会,思考题解答等)

第二章软件实验

实验一Debug程序的使用

一、实验目的

1.学习使用DEBUG调试命令。

2.学习用DEBUG调试简单程序。

3.通过程序验证码制及其对标志位的影响。

4.通过调试熟悉和掌握个寄存器的作用与特点。

二、实验内容

用DEBUG调试简单程序。

三、实验仪器

微机一台

四、实验步骤

1.由DOS进入DEBUG调试环境。

(1)C:

>

DEBUG将调试程序装入内存

当机器控制权由DOS成功地转移给调试程序后,将显示“-”号,它是DEBUG的状态提示符,表示可以接受调试子命令了。

(2)-R显示CPU中各寄存器当前初始内容,请记录下列各项:

AX=

BX=

CX=

DX=

BP=

SI=

DI=

DS=

ES=

SS=

SP=

CS=

IP=

FLAG寄存器中的8个标志位状态值是:

OF

DF

IF

SF

ZF

AF

PF

CF

说明:

1)此时,调试工作区的四个段值相同,指向同一起点,表明公用一个64KB空间;

2)SS:

SP指向堆栈顶单元,SP为FFFE或FFEE,正好是本段的最高可用地址,表明堆栈自动使用最高地址,栈区由底向上生长;

3)CS:

IP为约定的调试工作区地点(IP=0100),可由此装入待调试程序代码,或汇编键入的程序小段,工作区由低址往下使用;

4)DEBUG用符号给出标志寄存器中8个标志位的当前状态,其含义如下表所示。

标志位含义

‘1’的对应符号

‘0’的对应符号

OF溢出

OV有

NV无

DF方向

DN递减

UP递增

IF中断

EI允许

DI禁止

SF符号

NG负

PL正

ZF全零

ZR零

NZ非零

AF辅助进位

AC有

NA无

PF奇偶性

PE偶

PO奇

CF进位

CY有

NC无

(3)结束程序,返回DOS。

-Q

2.用DEBUG调试简单程序

例1-ACS:

0106

MOVAX,1234

MOVBX,2345

MOVCX,0

ADDAX,BX

MOVCX,AX

INT20

运行程序

(注:

执行程序时IP应指向要执行的指令,需要修改时

-RIP

当前值

输入需要值该处为0106

当然也可以在T或G命令中指出程序起始地址)

-R显示各寄存器当前内容及首条指令

-T3跟踪执行三条赋值传送指令,记录寄存器及标志位变化

-T2跟踪执行相加及送和数指令,记录寄存器及标志位变化

-G执行软件中断指令INT20,机器将显示“程序正常终止”的信息,并显示“-”,表明仍处在DEBUG的调试控制状态下,注意未用T命令,因为我们不想进入到20H中断处理程序中去,P命令也可实现相同操作

实验现象记录:

记录每条指令执行后各相关寄存器值及标志位状态

例2-ACS:

116

MOVAX,[0124]

MOVBX,[0126]

MOV[0128],AX

DW2222

DW8888

DW0

设置断点分段运行程序

-G=CS:

11611D从指定入口运行程序,至断点11D停,可见两个数已取至AX,BX,但还没有求和

-G122从上一断点运行至新断点停,已完成求和并存入指定结果单元

-G完成程序

观看内存内容

-DCS:

11612A显示本程序小段目标代码和数据单元内容

-UCS:

11612A反汇编指定范围的内存内容-

通过反汇编,记录程序执行前指定范围的内存内容,并记录每条指令执行后各相关寄存器值及指定范围的内存内容)

例3-ACS:

0192

MOVDX,19B

MOVAH,9

INT21

DB‘HELLO,WORLD!

$’

-P命令单步执行

观察每条指令执行后各寄存器的变化,记录DX,AX的变化。

思考:

根据程序输入情况,考虑‘HELLO,WORLD!

$’在内存中的ASCⅡ码和地址范围

-D

ASCⅡ码为:

例4自己设计一段小程序验证补码的加法、进位、溢出的概念;

参考程序(可对数据进行修改):

-ACS:

0100

MOVAL,74

ADDAL,70

MOVAL,7A

ADDAL,94

MOVAL,43

ADCAL,65

-P命令单步执行

记录每条指令执行后AX及标志位变化

例5

1.使用R命令,实现AX=0108,BX=F1AA

-R-R

2.编辑下列程序

XCHGAL,BH

SUBAX,BX

AAS

-P命令执行单步执行

记录每条指令执行后,AX、BX以及标志位的变化。

例6执行下列程序,用P命令或T命令跟踪

MOVAX,0200

MOVDX,1E4F

CALLAX

MOVDX,167C

ADDDH,DL

MOV[0300],DX

-ACS:

0200

PUSHAX

MOVAX,010B

POPAX

RET

1)跟踪执行程序,观察在子程序调用过程中

IPSP堆栈区域内容

2)程序运行完毕后DS:

[0300]中的内容为

3)如果去掉POPAX,程序执行后DS:

[0300]中内容为

实验二.汇编语言上机环境及基本步骤

一、实验目的:

1.掌握编写汇编源程序的基本格式。

2.熟悉汇编语言上机环境。

3.掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。

4.掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。

二、实验内容:

在屏幕上显示并打印字符串“Thisisasampleprogram.”

四、实验步骤:

1.在E盘以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE复制到该目录下,编辑的源文件也保存到该目录下。

从WINDOWS进入DOS环境:

C:

\>

2.用EDIT编辑SW1.ASM源文件。

(1).从当前目录进入自己的目录下,

E:

回车

CDzhangsan↙回车

键入EDIT并回车:

\zhangsan>

EDIT

根据菜单提示进行各种操作。

(2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。

说明:

也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。

(3).编辑新文件:

a、在EDIT编辑器中输入汇编源程序。

b、检查输入有无错误。

c、打开文件菜单FILE选择另存为SAVEAS┅输入文件名为:

SW1.ASM保存。

注意:

保存到你自己的文件夹中

d、若需要修改此文件,用FILE菜单选择打开OPEN输入文件名SW1.ASM,即可修改。

修改后注意重新再存盘。

(4).编辑汇编源程序

a、在EDIT(或记事本)中输入源程序。

b、检查。

c、存盘。

可保存为SW1.ASM

3.用汇编程序MASM将SW1.ASM文件汇编,生成SW1.OBJ目标文件。

(1).一般简单程序只需生成.OBJ文件,可键入简化命令:

E:

\zhangsan>

MASMSW1;

若有错误,则显示错误行号及错误性质,如:

SW1.ASM(5):

errorA2006:

undefinedsymbor:

xxxx

(2).若有错重新进入EDIT进行修改。

修改后并再存盘,退出编辑,回到DOS,再汇编。

\zhangsan>

(3).没有任何错误时,显示:

Assembling:

SW1.asm

表示汇编成功,生成SW1.OBJ文件。

(4).用DIR命令查看应有SW1.OBJ:

DIRSW1.*

4.用连接程序LINK将SW1.OBJ文件连接,生成SW1.EXE可执行文件。

(1).一般仅生成SW1.EXE文件,可键入简化命令:

LINKSW1;

若有错误,则显示错误信息,则应返回编辑、修改、存盘,再汇编、连接直到连接成功,生成SW1.EXE可执行文件。

(2).用DIR命令查看应有SW1.EXE:

DIRSW1.*↙

5.运行SW1.EXE文件

\zhangsan>SW1↙

执行SW1.EXE文件,屏幕应显示:

“Thisisasampleprogram.”。

由连接程序生成的.EXE,在DOS下,直接键入文件名(不要扩展名.EXE)就可以把文件装入内存,并立即执行。

但有的程序没有直接显示结果;

对于较复杂程序难免会出现错误,直接观察很难找到错误所在,这样就要借用调试程序进行调试。

记录调试过程中出现的问题及修改措施,并记录程序执行结果。

五、实验源程序

;

********定义数据段*********

DATASEGMENT

DA1DB‘Thisisasampleprogram.’

DB0DH,0AH,’$’

DATAENDS

********定义堆栈段*********

STACKSEGMENT

ST1DB100DUP(?

STACKENDS

********定义代码段*********

CODESEGMENT

MAINPROCFAR

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,STACK;

送堆栈段地址

MOVSS,AX

PUSHDS;

返回DOS作准备

MOVAX,0

PUSHAX

MOVAX,DATA;

送数据段段地址

MOVDS,AX

MOVAH,9;

DOS9号功能调用,显示字符串

MOVDX,OFFSETDA1

INT21H

RET

MAINENDP

CODEENDS

ENDSTART

六、思考题

1试用另外一种方式返回DOS操作系统。

2在屏幕上显示并打印字符串“MynameisXXX!

”XXX为自己姓名汉语拼音。

实验三两个多位十进制数相加的实验

1.学习数据传送和算术运算指令的用法。

2.熟悉在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的过程。

将两个多位十进制数相加,要求被加数均以ASCⅡ码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

四、实验原理

程序流程图:

五、实验步骤

1.编辑、汇编、连接生成可执行文件LW.EXE;

2.在DOS状态下启动该程序;

3.在DEBUG状态下调试研究程序工作过程.

六、实验源程序(LW.ASM)

CRLFMACRO

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

ENDM

DATASEGMENT

DATA1DB33H,39H,31H,37H,34H

DATA2DB36H,35H,30H,38H,32H

STADB20DUP(?

TOPEQULENGTHSTA

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,TOP

MOVSP,AX

MOVSI,OFFSETDATA2

MOVBX,05

CALLDISPL

CRLF

MOVSI,OFFSETDATA1

MOVDI,OFFSETDATA2

CALLADDA

MOVAX,4C00H

DISPLPROCNEAR

DS1:

MOVAH,02

MOVDL,[SI+BX-1]

DECBX

JNZDS1

DISPLENDP

ADDAPROCNEAR

MOVDX,SI

MOVBP,DI

AD1:

SUBBYTEPTR[SI+BX-1],30H

SUBBYTEPTR[DI+BX-1],30H

JNZAD1

MOVSI,DX

MOVDI,BP

MOVCX,05

CLC

AD2:

MOVAL,[SI]

MOVBL,[DI]

ADCAL,BL

AAA

MOV[SI],AL

INCSI

INCDI

LOOPAD2

AD3:

ADDBYTEPTR[SI+BX-1],30H

ADDBYTEPTR[DI+BX-1],30H

JNZAD3

ADDAENDP

CODEENDS

ENDSTART

实验四循环结构程序设计

一、实验目的

1.掌握循环程序的结构及执行过程;

2.掌握循环控制指令的功能;

3.掌握循环程序设计方法与调试方法。

1.单重循环程序设计。

已知当前数据段中DATA1和DATA2开始分别存放若干字节数据,数据个数相同,编制程序检查数据块中的数据是否相同,若相同,则在屏幕上显示1;

否则显示0。

1.编辑、汇编、连接生成可执行文件;

六、实验源程序

参考程序

************EXAM.ASM*****************

DSEGSEGMENT

DATA1DB‘ABCDEFG3’

DATA2DB‘ABCDEF4G’

CNTDW8

DSEGENDS

CSEGSEGMENT

CSEG,DS:

DSEG

MOVAX,DSEG

MOVDL,31H;

1的ASCII码送DL

LEASI,DATA1

LEADI,DATA2

MOVCX,CNT

DECSI

DECDI

AGAIN:

INCSI

INCDI

MOVAL,[SI]

CMPAL,[DI]

LOOPZAGAIN

JZDISP

DECDL

DISP:

MOVAH,2

MOVAH,4CH;

返回DOS

CSEGENDS

2.双重循环程序设计

见教材p179例题4-72

实验五子程序设计

1.掌握子程序的结构和设计方法;

2.掌握子程序的调用和返回指令的用法及执行情况;

3.掌握在子程序调用时堆栈的变化情况;

4.掌握主程序与子程序间参数传递的方法;

5.掌握现场的保护与恢复方法。

已知当前数据段中BUF开始分别存放若干二进制字节数据,编制程序将这些数据分别转换为十六进制数据在屏幕上显示出来,要求十六进制转换ASCII码用子程序实现。

CONV.ASM

DATASEGMENT

BUFDB0ABH,0CDH,0DEH,01H,02H,03H

DB3AH,4BH,5CH,6FH

*****************************

MOVCX,10

LEABX,BUF

MOVAL,[BX]

CALLHEX2ASC;

调用十六进制转换ASCII码子程序

******显示ASCII码*******

PUSHCX

MOVCX,DX

MOVDL,CH;

显示高位

MOVDL,CL;

显示低位

MOVDL,'

'

;

显示空格

MOVAH,2

POPCX

INCBX

LOOPAGAIN

********************************

返回dos

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2