微机原理与系统设计上机报告.docx

上传人:b****5 文档编号:7522975 上传时间:2023-01-24 格式:DOCX 页数:41 大小:873.34KB
下载 相关 举报
微机原理与系统设计上机报告.docx_第1页
第1页 / 共41页
微机原理与系统设计上机报告.docx_第2页
第2页 / 共41页
微机原理与系统设计上机报告.docx_第3页
第3页 / 共41页
微机原理与系统设计上机报告.docx_第4页
第4页 / 共41页
微机原理与系统设计上机报告.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

微机原理与系统设计上机报告.docx

《微机原理与系统设计上机报告.docx》由会员分享,可在线阅读,更多相关《微机原理与系统设计上机报告.docx(41页珍藏版)》请在冰豆网上搜索。

微机原理与系统设计上机报告.docx

微机原理与系统设计上机报告

微机原理与系统设计上机报告

 

学号:

*******

姓名:

**

指导老师:

**

时间:

2016年11月

 

西安电子科技大学

内容一Debug程序的使用

一、实验目的

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

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

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

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

二、实验内容

用DEBUG调试简单程序。

三、实验仪器

微机一台

四、实验步骤

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

(1)DEBUG将调试程序装入内存

注意:

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

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

AX=0000

BX=0000

CX=0000

DX=0000

BP=0000

SI=0000

DI=0000

DS=13E0

ES=13E0

SS=13E0

SP=FFEE

CS=13E0

IP=0100

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

OF

DF

IF

SF

ZF

AF

PF

CF

NV

UP

EI

PL

NZ

NA

PO

NC

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无

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]

ADDAX,BX

MOV[0128],AX

INT20

DW2222

DW8888

DW0

设置断点分段运行程序

-G=CS:

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

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

-G完成程序

观看内存内容

-DCS:

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

-UCS:

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

实验现象记录:

观察与记录指定范围的内存内容;通过反汇编,观察与记录指定范围的内存内容及对应指令。

例3-ACS:

0192

MOVDX,19B

MOVAH,9

INT21

INT20

DB‘HELLO,WORLD!

$’

-P命令单步执行

实验现象记录:

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

思考:

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

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

-D109C01A7(如下图)

ASCⅡ码为:

454C4C4F2C574F524C442124;

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

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

-ACS:

0100

MOVAL,74

ADDAL,70

MOVAL,7A

ADDAL,94

MOVAL,43

ADCAL,65

INT20

-P命令单步执行

实验现象记录:

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

AX及标志位变化如下图:

例5

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

如下图:

2.编辑下列程序

-ACS:

0100

MOVAL,05

MOVBL,09

MULBL

AAM

INT20

-P命令执行单步执行

实验现象记录:

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

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

-ACS:

0100

MOVAX,0200

MOVDX,1E4F

CALLAX;调用子程序

MOVDX,167C

ADDDH,DL

MOV[0300],DX

INT20

;********下面是子程序段********

-ACS:

0200

PUSHAX

MOVAX,010B

POPAX

RET

 

实验现象记录:

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

IP0201SPFFEC堆栈区域内容13DE:

FFEC

0204FFEC13DE:

FFEC

0205FFEE13DE:

FFEE

2)程序运行完毕后DS:

[0300]中的内容为0000

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

[0300]中内容为4F6D

内容二汇编语言上机环境及基本步骤

一、实验目的:

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

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

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

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

二、实验内容:

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

三、实验仪器

微机一台

四、实验步骤:

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

从WINDOWS进入DOS环境:

C:

\>

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

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

C:

\>E:

回车

E:

\>CDzhangsan↙回车

键入EDIT并回车:

E:

\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,再汇编。

E:

\zhangsan>MASMSW1;↙

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

Assembling:

SW1.asm

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

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

E:

\zhangsan>DIRSW1.*

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

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

E:

\zhangsan>LINKSW1;↙

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

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

E:

\zhangsan>DIRSW1.*↙

5.运行SW1.EXE文件

E:

\zhangsan>SW1↙

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

“Thisisasampleprogram.”。

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

但有的程序没有直接显示结果;对于较复杂程序难免会出现错误,直接观察很难找到错误所在,这样就要借用调试程序进行调试。

实验现象记录:

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

五、实验源程序

DATASEGMENT

DA1DB'Thisisasimpleprogram.'

DB0DH,0AH,'$'

DATAENDS

STACKSEGMENT

ST1DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,STACK

MOVSS,AX

MOVAX,DATA

MOVDS,AX

MOVAH,9

MOVDX,OFFSETDA1

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

内容三顺序程序设计

一、实验目的

1)掌握使用指令编程及调试的方法;

2)掌握指令对状态标志位的影响及其测试方法;

3)学会运用顺序程序解决实际问题的方法。

 

二、实验设备

PC机一台

三、实验内容及步骤

1.

(1)题目计算X+Y=Z,将结果Z存入某存贮单元。

本实验程序是2个16位,即32位运算,利用累加器AX,先求低16位和,并存入低地址存贮单元,后求高16位和,再存入高地址存贮单元。

由于低位和可能向高位有进位,因而高位相加语句须用ADC指令,则低位相加有进位时CF=l,高位字相加时,同时加上CF中的1。

 参考程序如下:

STACKSEGMENT

DW64DUP(?

STACKENDS

DATASEGMENT

XLDW?

;请在此处给X低位赋值

XHDW?

;请在此处给X高位赋值

YLDW?

;请在此处给Y低位赋值

YHDW?

;请在此处给Y高位赋值

ZLDW?

ZHDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,XL

ADDAX,YL

MOVZL,AX

MOVAX,XH

ADCAX,YH

MOVZH,AX

INT03H

CODEENDS

ENDSTART

(2)实验步骤

1)输入实验程序并检查无误,经汇编、连接后生成EXE文件。

2)用DEBUG的U命令查看MOVAX,XXXX(DATA)语句,即得到数据段基址DS:

XXXX,用E命令EXXXX:

0000给XL,XH,YL,YH赋值存入十六进制数A0651500和9EB72100。

3)用G命令运行以上程序。

4)用DXXXX:

0008显示计算结果:

3E1D3700

5)反复试几组数,考查程序的正确性。

2.写出计算y=a*b+c-18的程序,其中a、b、c分别为3个带符号的8位二进制数。

同1一样,写出上机过程,观察现象,记录结果

内容四分支程序设计

一、实验目的

1)学习分支程序的设计与调试方法;

2)掌握分支程序的指令和基本结构。

二、实验设备

PC机一台

 

三、实验内容及步骤

1.求某数X的绝对值,并送回原处

同上,写出上机过程,观察现象及记录结果

2.写出将一位十六进制数转换成对应的ASXII码的程序(只考虑大写字母)。

同上,写出上机过程,观察现象及记录结果

3.参看课本例3,在DS数据段偏移地址为DATA开始的顺序20个单元中,存放着某班80个同学的微型机原理考试成绩。

现欲编程序统计≥90分、80分~89分,70分~79分60分~69分和<60分的人数,并将统计的结果放在当前数据段偏移地址为BUFFER的顺序单元中。

同上,写出上机过程,观察现象及记录结果

STACKSEGMENT

DW64DUP(?

STACKENDS

DATASEGMENT

CJDB20DUP(?

BUFFERDB5DUP(0)

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0000H

MOVBX,0000H

MOVAH,00H

MOVCX,20

LEASI,CJ

LEADI,BUFFER

GOON:

MOVAL,[SI]

CMPAL,90

JCNEXT1

INCDH

JMPSTOR

NEXT1:

CMPAL,80

JCNEXT2

INCDL

JMPSTOR

NEXT2:

CMPAL,70

JCNEXT3

INCBH

JMPSTOR

NEXT3:

CMPAL,60

JCNEXT4

INCBH

JMPSTOR

NEXT4:

INCBL

STOR:

INCSI

LOOPGOON

MOV[DI],DH

MOV[DI+1],DL

MOV[DI+2],BH

MOV[DI+3],BL

MOV[DI+4],AH

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

内容五循环程序设计

一、实验目的

1)学习循环程序的设计与调试方法;

2)掌握循环程序的基本结构。

二、实验设备

PC机一台

 

三、实验内容及步骤

1.

(1)题目:

求某数据区内负数的个数。

设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。

为统计数据区内负数的个数,需要逐个检查区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即可得到所包含负数的个数。

参考程序:

STACKSEGMENT

DW64DUP(?

STACKENDS

DATASEGMENT

ORG3000H

DATA1DB16DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDI,OFFSETDATA1;设数据区首地址

MOVCL,[DI];送数据个数

XORCH,CH;CH清零

MOVBL,CH;BL清零

INCDI;指针指向第一个数据

A1:

MOVAL,[DI]

TESTAL,80H;数据首位是否为1

JEA2

INCBL;负数个数累加

A2:

INCDI

LOOPA1

MOV[DI],BL;存结果

INT03H

CODEENDS

ENDSTART

(2)实验步骤

1)输入实验程序并检查无误,经汇编、连接后生成EXE文件。

2)用DEBUG的U命令查看MOVAX,XXXX(DATA))语句,即得到数据段基址DS:

XXXX,

3)用E命令输入数据如下:

EXXXX:

3000H3000H单元的内容为06(数据个数)

3001H单元开始的内容为12、88、82、90、22、33。

4)用G命令运行以上程序。

5)用D命令检查3007H单元是否显示结果03。

学习本题目。

2.

课堂讲的数据传送题,传送数据变为10个数,写出完整的程序并调试,

1)将ADRS开始存放的100个字节的数据传送到ADRD开始的连续内存中。

假设他们的段地址分别存放在DS和ES中。

STACKSEGMENT

DB256DUP(?

STACKENDS

DATASEGMENT

ADRSDB10DUP(?

ADRDDB10DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,ES

MOVAX,STACK

MOVSS,AX

LEASI,ADRS

LEADI,ADRD

MOVCX,100

NEXT:

MOVAL,[SI]

MOVES:

[DI],AL

INCSI

INCDI

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2)将ADRS开始存放的100个字节的数据传送到ADRD开始的连续内存中。

假设他们的段地址分别存放在DS和ES中。

如果传送过程中出现‘#’时,立即停止传送。

STACKSEGMENTSTACK

DW256DUP(?

TOPLABELWORD

STACKENDS

DATASEGMENT

ADRSDB100DUP(?

ADRDDB100DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVSP,OFFSETTOP

LEASI,ADRS

LEADI,ADRD

MOVCX,100

MOVAL,[SI]

CMPAL,'#'

JEPEND

AGAIN:

MOVES:

[DI],AL

INCSI

INCDI

MOVAL,[SI]

CMPAL,'#'

LOOPNEAGAIN

PEND:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

3.课堂讲的排序题,递减排列。

STACKSEGMENT

DW256DUP(?

TOPLABELWORD

STACKENDS

DATASEGMENT

DATBUFDB10DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVSP,OFFSETTOP

MOVCX,LENGTHDATBUF

MOVSI,CX

MOVBL,0FFH

LOOPA:

CMPBL,0FFH

JNZDONE

MOVBL,00

DECCX

JZDONE

PUSHSI

PUSHCX

LOOPB:

DECSIG

MOVAL,[SI]

CMPAL,[SI-1]

JAELA

XCHGAL,[SI-1]

MOV[SI],AL

MOVBL,0FFH

LA:

LOOPLOOPB

POPCX

POPSI

JMPLOOPA

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

;DATA=1427H,STACK=1407H,OFFSETTOP=200H,CX=000AH,

4.设DATBUF中存放有N个无符号数(或有符号数),编程实现求它们的最小值和最大值,将最小值放入DATMIN单元,最大值放入DATMAX单元。

DATASEGMENT

DATA1DB16DUP(?

DATMINDB?

DATMAXDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDI,OFFSETDATA1

MOVCL,[DI]

XORCH,CH

MOVBL,[DI+1]

MOVDATMIN,BL

MOVDATMAX,BL

MOVAL,01H

AGAIN:

INCDI

INCAL

CMPCL,AL

JSDONE

MOVBL,DATMIN

CMPBL,[DI+1]

JSA1

MOVBL,[DI+1]

MOVDATMIN,BL

JMPA1

A1:

MOVBL,DATMAX

CMPBL,[DI+1]

JNSAGAIN

MOVBL,[DI+1]

MOVDATMAX,BL

JMPAGAIN

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

写出以上题目的程序、上机调试过程及现象,并记录结果。

内容六子程序设计

一、实验目的

1)学习子程序程序的设计与调试方法;

2)掌握子程序程序的基本结构。

二、实验设备

PC机一台

 

三、实验内容及步骤

题目:

编写程序,统计一个字中的1的个数。

分别采用段内调用和段间调用实现。

STACKSEGMENTSTACK

DW256DUP(?

TOPLABELWORD

STACKENDS

DATASEGMENT

TWDW?

TWISDW?

DATAENDS

CODE1SEGMENT

ASSUMECS:

CODE1,DS:

DATA,SS:

STACK

MAIN:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVSP

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

当前位置:首页 > 求职职场 > 自我管理与提升

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

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