微机系统及原理实验报告.docx

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

微机系统及原理实验报告.docx

《微机系统及原理实验报告.docx》由会员分享,可在线阅读,更多相关《微机系统及原理实验报告.docx(33页珍藏版)》请在冰点文库上搜索。

微机系统及原理实验报告.docx

微机系统及原理实验报告

微机系统及应用实验

实验报告

实验一DEBUG的启动及其基本命令的使用

实验内容:

6:

设堆栈指针SP=2000H,AX=3000H,BX=5000H;请仿照例程的格式编一程序段将AX和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。

写出在DEBUG状态下编写、运行步骤6所要求的程序过程(要求包含源程序)以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

程序清单:

STACKSEGMENTSTACK

DB2003HDUP(0)

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVAX,STACK

MOVSS,AX

MOVSP,2000H

MOVAX,3000H

MOVBX,5000H

PUSHAX

MOVAX,BX

POPBX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

运行及调试:

进入调试后,运行正常。

进行反汇编调试:

通过追踪指令观察SP、AX、BX变化

可知对SP、AX、BX赋值正确。

将AX入栈后

用显示内存单元内容的命令D观察堆栈段中SP为1FFF,2000的内容

[1FFF]=00,[2000]=30说明已经AX=3000已经放入到堆栈段中。

结果可以看出:

AX=5000,BX=3000

结果完成正确!

 

实验二内存操作数及寻址方法

实验内容:

1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间存储单元,用字处理程序编辑程序,用masm.exe和link.exe对源程序进行汇编程和连接,用DEBUG调试程序。

2、用masm和link对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行。

用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。

程序清单如下:

DATASEGMENT

ORG0300H

ADB12H,23H,34H,45H,56H,67H,78H,89H,9AH

DATAENDS

PROGNAMSEGMENT

ASSUMECS:

PROGNAM,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,BX

MOVAX,0300H

MOVAX,[0300H]

MOVAX,[BX]

MOVSI,2

MOVAX,0001[BX]

MOVAX,[BX][SI]

MOVAX,0001[BX][SI]

MOVAH,4CH

INT21H

PROGNAMENDS

ENDSTART

对源程序文件汇编,生成目标文件

将目标文件LINK后,生成可执行文件如下:

进入debug调试

单步追踪执行:

AX=0B91,为数据段的首地址。

AX不变,将数据段的首地址送至DS。

执行MOVAX,BX

AX同BX,清零。

执行MOVAX,0300H

AX=0300

执行MOVAX,[0300H]

AX=0300

可知MOVAX,0300H与MOVAX,[0300H]得到同样结果

AX均为0000.

 

将原文中的指令清单改为

DATASEGMENT

ADB12H,23H,34H,45H,56H,67H,78H,89H,9AH

ORG0300H

BDB0BH,0CH

DATAENDS

PROGNAMSEGMENT

ASSUMECS:

PROGNAM,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,BX

MOVAX,0300H

MOVAX,[0300H]

MOVAX,[BX]

MOVSI,2

MOVAX,0001[BX]

MOVAX,[BX][SI]

MOVAX,0001[BX][SI]

MOVAH,4CH

INT21H

PROGNAMENDS

ENDSTART

单步执行后:

可知:

随着程序进行,AX发生变化。

 

实验三算术运算指令

实验内容

编写三个完整的汇编语言源程序,完成以下计算。

其中X、Y、Z、R、W均为存放16位带符号数单元的地址。

(1)Z←W+(Z-X)

(2)Z←W-(X+6)-(R+9)

(3)Z←(W*X)/(Y+6),R←余数

实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等

1、程序说明。

说明程序的功能、结构。

2、调试说明。

包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

3、写出源程序清单和执行结果。

(1)Z←W+(Z-X)

汇编程序清单

DATASEGMENT

XDW10

ZDW20

WDW10

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,Z

SUBAX,X

ADDAX,W

MOVZ,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

进入debug调试:

使用追踪指令T单步执行:

执行结果是将20放入AX中。

AX=0014H

执行结果AX=0014H-000AH=000A,结果正确。

执行结果显示:

AX=0014H,即为20,正确。

然后将结果保存至Z存储字中。

最后观察数据组中的数据;

显示为X=10,Z=20,W=10。

程序运行结果正确

(2)Z←W-(X+6)-(R+9)

汇编程序清单:

DATASEGMENT

WDW100

XDW20

RDW30

ZDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,W

MOVBX,X

ADDBX,6

SUBAX,BX

MOVBX,R

ADDBX,9

SUBAX,BX

MOVZ,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

对程序进行汇编后调试:

单步执行:

此时,对DS的段基址赋值为数据组的首地址

此时,对AXBX分别赋值为100,20

(3)Z←(W*X)/(Y+6),R←余数

汇编程序清单:

DATASEGMENT

XDW10H

ZDW?

WDW10H

YDW3H

RDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,W

IMULX

MOVBX,Y

ADDBX,6

IDIVBX

MOVZ,AX

MOVR,DX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

编译执行结果如下:

单步执行结果如下:

执行结果可得:

商的整数部分z所指向的字单元内容为001CH,余数本分R指向的字单元内容为0004H。

实验四查表程序设计

实验内容:

用查表的方法将一位十六进制数转换成与它相应的ASCII码,并将结果存放到ASCI单元中。

汇编程序清单:

DATASEGMENT

TABLEDB30H,31H,32H,33H,34H,35H,36H,37H

DB38H,39H,41H,42H,43H,44H,45H,46H

HEXDB0AH

ASCIDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETTABLE

MOVAL,HEX

XLAT

MOVASCI,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

对程序进行编译进入debug调试

使用t追踪指令观察数据变化

ASCI所指向的字节单元的内容正是十六进制数0AH的ASCII值41。

实验五系统功能调用

实验内容:

试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

汇编程序清单:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAH,1

INT21H

SUBAL,20H

MOVDL,AL

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

对源程序编译并进入debug状态

调试结果正确。

实验六分支程序设计:

实验内容

假设有一组数据:

5,-4,0,3,100,-51,请编一程序,判断:

每个数大于0,等于0,还是小于0;并输出其判断结果。

即:

1当x>0

y=0当x=0

-1当x<0

 

汇编程序清单:

DATASEGMENT

TABLEDB5,-4,0,3,100,-51

GDB'1',13,10,'$'

ZDB'0',13,10,'$'

LDB'-1',13,10,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEASI,TABLE

MOVCL,6

COMP:

CMPBYTEPTR[SI],0

JGGREAT

JZEQUAL

LEADX,L

JMPSHORTDISP

GREAT:

LEADX,G

JMPSHORTDISP

EQUAL:

LEADX,Z

DISP:

MOVAH,9

INT21H

INCSI

LOOPCOMP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

对源程序进行编译并进入调试状态

分布调试:

从结果可知:

经过第一次循环,DX所代表的要输出的字符串的地址0006H即为数据段中Z字符串的EA,所以输出内容为1。

且SI自增1,CL减1。

以下循环原理同上。

全部运行的:

程序运行正确。

思考题:

程序中的原始数据是以怎样的形式存放在数据区中的?

请用DEBUG调试程序观察并分析。

答:

程序中的原始数据是以补码的十六进制的形式存放在数据区中的。

实验七循环程序设计

实验内容与要求

1.编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。

其程序的流程图如图7.1所示。

2.将从3000H内存单元开始的100个字节存储单元全部清0。

本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。

程序框图

图7.1程序框图

实验步骤

实验内容一:

1)按程序流程图编制实验程序。

2)输入源程序。

3)汇编、连接程序,执行程序,检查结果。

实验内容二:

1)输入源程序并检查无误。

2)对内存单元3000H开始的100个存储单元用E命令输入任意数。

3)程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。

4)用D命令检查执行结果。

实验内容1的程序清单:

DATASEGMENT

STRDB5DUP(0)

DB'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,1

MOVBL,2

LOP:

MOVAL,BL

INCBL

MULBL

ADDDX,AX

CMPAX,200

JBELOP

MOVAX,DX

LEADI,STR+4

LOP2:

MOVCL,10

DIVCL

ADDAH,30H

MOV[DI],AH

ANDAX,00FFH

DECDI

CMPAL,0

JNELOP2

LEADX,STR

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

程序运行及结果:

实验内容1的程序清单:

DATASEGMENT

STRDB5DUP(0)

DB'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,1

MOVBL,2

LOP:

MOVAL,BL

INCBL

MULBL

ADDDX,AX

CMPAX,200

JBELOP

MOVAX,DX

LEADI,STR+4

LOP2:

MOVCL,10

DIVCL

ADDAH,30H

MOV[DI],AH

ANDAX,00FFH

DECDI

CMPAL,0

JNELOP2

LEADX,STR

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

程序运行及结果:

 

程序循环体如下图:

结束循环:

下部分程序为利用除10取余法将计算结果用十进制在屏幕上显示:

计算结果在DS的存储:

 

实验内容与要求

(2)将从3000H内存单元开始的100个字节存储单元全部清0。

本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。

实验步骤

实验内容二:

1)输入源程序并检查无误。

2)对内存单元3000H开始的100个存储单元用E命令输入任意数。

3)程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。

4)用D命令检查执行结果。

汇编程序清单:

CODESEGMENT

ASSUMECS:

CODE

START:

PUSHDS

MOVAX,0

PUSHAX

MOVBX,3000H

MOVCL,100

LOP:

MOVBYTEPTR[BX],0

INCBX

LOOPLOP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

运行及调试:

E命令修改:

T追踪:

 

实验九综合程序设计

实验内容:

设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。

试编制一个子程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。

编程提示:

1、成绩分等部分采用分支结构,统计所有成绩则用循环结构完成,显示统计结果采用DOS功能调用。

2、统计学生成绩和显示统计结果两部分内容用子程序结构来完成。

程序框图:

汇编程序清单:

DATASEGMENT

GRADEDB76,69,84,90,73,88,99,63,100,80

STR1DB'低于60分人数为:

'

X1DB30H,'$'

STR2DB'60-69分人数为:

'

X2DB30H,'$'

STR3DB'70-79分人数为:

'

X3DB30H,'$'

STR4DB'80-89分人数为:

'

X4DB30H,'$'

STR5DB'90-99分人数为:

'

X5DB30H,'$'

STR6DB'100分人数为:

'

X6DB30H,'$'

CRLF1DB13,10,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

MAINPROCFAR

MOVAX,DATA

MOVDS,AX

CALLCOMP

CALLDISP

MOVAH,4CH

INT21H

MAINENDP

COMPPROCNEAR

LEASI,GRADE

MOVCL,10

LOP:

CMPBYTEPTR[SI],60

JBNEXT1

CMPBYTEPTR[SI],70

JBNEXT2

CMPBYTEPTR[SI],80

JBNEXT3

CMPBYTEPTR[SI],90

JBNEXT4

CMPBYTEPTR[SI],100

JBNEXT5

INCX6

INCSI

LOOPLOP

RET

NEXT1:

INCX1

INCSI

LOOPLOP

RET

NEXT2:

INCX2

INCSI

LOOPLOP

RET

NEXT3:

INCX3

INCSI

LOOPLOP

RET

NEXT4:

INCX4

INCSI

LOOPLOP

RET

NEXT5:

INCX5

INCSI

LOOPLOP

RET

COMPENDP

DISPPROCNEAR

LEADX,STR1

MOVAH,9

INT21H

CALLCRLF

LEADX,STR2

MOVAH,9

INT21H

CALLCRLF

LEADX,STR3

MOVAH,9

INT21H

CALLCRLF

LEADX,STR4

MOVAH,9

INT21H

CALLCRLF

LEADX,STR5

MOVAH,9

INT21H

CALLCRLF

LEADX,STR6

MOVAH,9

INT21H

RET

DISPENDP

CRLFPROCNEAR

LEADX,CRLF1

MOVAH,9

INT21H

RET

CRLFENDP

CODEENDS

ENDMAIN

 

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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