微机原理与系统设计上机报告大学论文Word下载.docx

上传人:b****1 文档编号:361570 上传时间:2023-04-28 格式:DOCX 页数:47 大小:825.93KB
下载 相关 举报
微机原理与系统设计上机报告大学论文Word下载.docx_第1页
第1页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第2页
第2页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第3页
第3页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第4页
第4页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第5页
第5页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第6页
第6页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第7页
第7页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第8页
第8页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第9页
第9页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第10页
第10页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第11页
第11页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第12页
第12页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第13页
第13页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第14页
第14页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第15页
第15页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第16页
第16页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第17页
第17页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第18页
第18页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第19页
第19页 / 共47页
微机原理与系统设计上机报告大学论文Word下载.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理与系统设计上机报告大学论文Word下载.docx

《微机原理与系统设计上机报告大学论文Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理与系统设计上机报告大学论文Word下载.docx(47页珍藏版)》请在冰点文库上搜索。

微机原理与系统设计上机报告大学论文Word下载.docx

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]

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Ⅱ码和地址范围

-D109C01A7(如下图)

ASCⅡ码为:

454C4C4F2C574F524C442124;

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

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

-ACS:

0100

MOVAL,74

ADDAL,70

MOVAL,7A

ADDAL,94

MOVAL,43

ADCAL,65

-P命令单步执行

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

AX及标志位变化如下图:

例5

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

如下图:

2.编辑下列程序

MOVAL,05

MOVBL,09

MULBL

AAM

-P命令执行单步执行

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

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

MOVAX,0200

MOVDX,1E4F

CALLAX;

调用子程序

MOVDX,167C

ADDDH,DL

MOV[0300],DX

;

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

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).从当前目录进入自己的目录下,

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'

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(?

XLDW?

请在此处给X低位赋值

XHDW?

请在此处给X高位赋值

YLDW?

请在此处给Y低位赋值

YHDW?

请在此处给Y高位赋值

ZLDW?

ZHDW?

DATA

MOVAX,DATA

MOVDS,AX

MOVAX,XL

ADDAX,YL

MOVZL,AX

MOVAX,XH

ADCAX,YH

MOVZH,AX

INT03H

CODEENDS

(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)掌握分支程序的指令和基本结构。

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

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

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

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

现欲编程序统计≥90分、80分~89分,70分~79分60分~69分和<

60分的人数,并将统计的结果放在当前数据段偏移地址为BUFFER的顺序单元中。

CJDB20DUP(?

BUFFERDB5DUP(0)

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

NEXT2:

CMPAL,70

JCNEXT3

INCBH

NEXT3:

CMPAL,60

JCNEXT4

NEXT4:

INCBL

STOR:

INCSI

LOOPGOON

MOV[DI],DH

MOV[DI+1],DL

MOV[DI+2],BH

MOV[DI+3],BL

MOV[DI+4],AH

内容五循环程序设计

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

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

1.

(1)题目:

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

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

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

参考程序:

ORG3000H

DATA1DB16DUP(?

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;

存结果

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中。

DB256DUP(?

ADRSDB10DUP(?

ADRDDB10DUP(?

DATA,ES:

MOVAX,ES

MOVAX,STACK

MOVSS,AX

LEASI,ADRS

LEADI,ADRD

MOVCX,100

NEXT:

MOVES:

[DI],AL

LOOPNEXT

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

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

STACKSEGMENTSTACK

DW256DUP(?

TOPLABELWORD

ADRSDB100DUP(?

ADRDDB100DUP(?

CODESEGMENT

MOVAX,DATA

MOVSP,OFFSETTOP

CMPAL,'

#'

JEPEND

AGAIN:

LOOPNEAGAIN

PEND:

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

DATBUFDB10DUP(?

MOVCX,LENGTHDATBUF

MOVSI,CX

MOVBL,0FFH

LOOPA:

CMPBL,0FFH

JNZDONE

MOVBL,00

DECCX

JZDONE

PUSHSI

PUSHCX

LOOPB:

DECSIG

CMPAL,[SI-1]

JAELA

XCHGAL,[SI-1]

MOV[SI],AL

LA:

LOOPLOOPB

POPCX

POPSI

JMPLOOPA

DONE:

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

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

DATMINDB?

DATMAXDB?

MOVDI,OFFSETDATA1

MOVCL,[DI]

XORCH,CH

MOVBL,[DI+1]

MOVDATMIN,BL

MOVDATMAX,BL

MOVAL,01H

INCDI

INCAL

CMPCL,AL

JSDONE

MOVBL,DATMIN

CMPBL,[DI+1]

JSA1

JMPA1

MOVBL,DATMAX

JNSAGAIN

JMPAGAIN

MOVAH,4CH

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

内容六子程序设计

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

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

题目:

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

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

TWDW?

TWISDW?

CODE1SEGMENT

CODE1,DS:

MAIN:

MOVSS,A

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

当前位置:首页 > 解决方案 > 学习计划

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

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