微机原理实验.docx

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

微机原理实验.docx

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

微机原理实验.docx

微机原理实验

实验一8086指令利用

实验目的

通过实验把握以下知识:

1、8086指令:

MOV,ADD,ADC,SUB,SBB,DAA,XCHG

2、DEBUG命令:

A,D,E,F,H,R,T,U。

3、BCD码,ASCII码及用十六进制数表示二进制码的方式。

4、8086寄放器:

AX,BX,CX,DX,F,IP。

内容及步骤

一、DEBUG命令利用

一、键入DEBUG进入DEBUG操纵状态,显示提示符'-'。

二、用命令F10010F'A'将'A'的ASCII码填入内存。

3、用命令D10010F观看内存中的十六进制码及屏幕右边的ASCII字符。

4、用命令F11011F41重复上二项实验,观看结果并比较。

五、用命令E100303132……3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观看结果,看键入的十六进制数是什么字符的ASCII码?

六、用H命令检查以下各组十六进制数加减结果并和你的手算结果比较:

(1)34H,22H

(2)56H,78H(3)A5,79H(4)1284H,5678H(5)A758H,347FH

7、用R命令检查各寄放器内容,专门注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。

八、用R命令将AX,BX内容改写为1050H及23A8H。

二、8086经常使用指令练习

一、传送指令

1)用A命令在内存100H处键入以下内容:

-A0100↙

****:

0100MOVAX,1234↙

****:

0103MOVBX,5678↙

****:

0106XCHGAX,BX↙

****:

0108MOVAH,35↙

****:

010AMOVAL,48↙

****:

010DMOVDX,75AB↙

****:

010FXCHGAX,DX↙

****:

0111↙

-

注:

****为段寄放器CS的值,是由运算机生成的;↙为回车操作。

2)用U命令检查键入的程序并记录,专门注意左侧的机械码。

-U0100↙

3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄放器及IP的转变情形。

并注意标志位有无转变。

-T=0100↙

-T↙

-T↙

二、加减法指令:

1)用A命令在内存100H处键入以下内容:

MOVAH,34

MOVAL,22

ADDAL,AH

SUBAL,78

MOVCX,1284

MOVDX,5678

ADDCX,DX

SUBCX,AX

SUBCX,CX

2)用U命令检查键入的程序及对应的机械码。

3)用T命令逐条运行这些指令,检查并记录有关寄放器及标志位的情形。

试探:

这次运行仍是键入T,行不行?

如何办?

用R命令检查一下IP的内容。

注意T命令与IP的关系。

3、带进位加减法:

1)用A命令在内存200H处键入以下内容,并用U命令检查:

MOVAH,12

MOVAL,84

MOVCH,56

MOVCL,78

ADDAL,CL

ADCAH,CH

MOVDH,A7

MOVDL,58

SUBDL,7F

SBBDH,34

2)用T命令逐条运行这些指令,检查并记录寄放器及CF内容。

3)上面这段程序假设改用16位操作指令达到一样结果,怎么改?

试修改并运行之。

4、BCD码加减法

1)内容:

MOVAL,58

ADDAL,25

DAA

2)要求:

用A命令键入,U命令检查,T命令逐条运行并记录有关寄放器及AF内容。

实验报告要求

一、十六进制数加减法手算结果及实验结果

二、8086经常使用指令练习部份的逐条运行记录,试探结果及自编程序运行记录(列出自编程序)。

附:

动态调试器DEBUG利用

一、键入DEBUG进入DEBUG,显示提示符'-'。

二、退出DEBUG命令:

Q

3、显示内存命令:

D起始地址终止地址

4、修改内存命令:

E起始地址,持续修改键入空格键,键入回车键退出E命令。

五、检查寄放器命令:

R

六、修改寄放器命令:

R寄放器名

7、小汇编命令:

A起始地址,不输入指令键入回车键退出A命令。

八、反汇编命令:

U起始地址终止地址

九、文件命名命令:

N盘号:

文件名

10、读文件命令:

L内存地址

1一、写文件命令:

W内存地址

10、读扇区命令:

L内存地址盘号(0--A:

1--B:

)扇区号扇区数

1一、写扇区命令:

W内存地址盘号扇区号扇区数

1二、运行命令:

G=起始地址终止(断点)地址

13、单步命令:

T=起始地址运行指令数,进入子程序内部。

14、单步命令:

P=起始地址运行指令数,不进入子程序内部。

1五、内存搬家命令:

M起始地址终止地址目的地址

1六、十六进制数加法:

H数值数值

表1标志寄放器显示内容一览表

标志位显示

1

0

CF

CY

NC

ZF

ZR

NZ

SF

NG

PL

AF

AC

NA

OF

OV

NV

PF

PE

PO

DF

DN

UP

IF

EI

DI

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

实验目的

通过实验把握以下知识:

一、DEBUG命令:

G,N,W,L及Q。

二、8086系统中数据在内存中的寄存方式和内存操作数的几种寻址方式。

3、8086指令:

INC,DEC,LOOP,INT3,INT20H,寄放器SI,DI。

4、8086汇编语言伪操作:

BYTEPTR,WORDPTR。

五、求累加和程序和多字节加减法程序。

实验内容和步骤

一、内存操作数及各类寻址方式利用

程序内容:

MOVAX,1234

MOV[1000],AX

MOVBX,1002

MOVBYTEPTR[BX],20

MOVDL,39

INCBX

MOV[BX],DL

DECDL

MOVSI,3

MOV[BX+SI],DL

MOV[BX+SI+1],DL

MOVWORDPTR[BX+SI+2],2846

操作步骤

1)用A命令键入上述程序,并用T命令逐条运行。

2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数寄存法。

试探:

有关指令中BYTEPTR及WORDPTR伪操作不加行不行?

试一试。

二、求累加和程序:

程序内容:

MOVBX,1000

MOVCX,10

SUBAX,AX

LOP:

ADDAL,[BX]

ADCAH,0

INCBX

J:

LOOPLOP

INT3

操作步骤:

1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令NAA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:

CX改成程序长度值(即最后一条指令后面的地址减去开始地址)。

4)用命令W100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序。

假设调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。

7)用E命令在内存地址1000H处键入16个数字

8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是不是符合你的估量值。

9)用T命令运行一步,观看程序方向(IP值)和CX值是不是与你的估量一样,假设不一样,检查程序是不是有错。

10)重复GJ与T,再检查AX是不是正确。

11)用G命令使程序运行到终止,检查AX值是不是正确。

三、多字节加法程序。

程序内容:

MOVDI,1000

MOVCX,8

MOVSI,2000

CLC

LOP:

MOVAL,[SI]

ADC[DI],AL

INCSI

INCDI

LOOPLOP

INT20

操作步骤:

1)用A命令键入此程序。

2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

3)用G命令运行此程序,并用D命令检查其结果(寄存在哪里?

),是不是正确?

实验三数据串传送和查表程序

实验目的

通过实验把握以下知识:

一、堆栈。

堆栈指示器SP和堆栈操作指令PUSH和POP。

二、段寄放器和物理地址计算。

3、查表法和查表指令XLAT。

4、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP。

五、循环指令ROL、逻辑与指令AND和清方向位指令CLD。

六、伪操作指令DB。

实验内容及步骤

一、利用查表方式把DX的内容(十六进制数)转换成ASCII码

一、用A命令键入以下程序:

MOVBX,1000

MOVDI,2000

MOVCX,4

LOP:

PUSHCX

MOVCL,4

ROLDX,CL

POPCX

MOVAL,DL

ANDAL,0F

XLAT

CLD

STOSB

LOOPLOP

INT20

2、用A命令在1000H处键入以下ASCII码并用D命令检查之:

DB‘09ABCDEF’

用D命令检查时注意左侧的ASCII码值和右边的字符。

3、用R命令给DX送一个四位的十六进制数(例7F8E)。

4、用T命令逐条运行这程序到LOOP指令处,观看并记录每次运行结果,专门是SP和堆栈内容(用D命令检查)。

五、用G命令将此程序运行到终止,并用D命令检查2000H处所转换的结果。

可注意屏幕右边的ASCII字符与DX是不是一致。

二、数据串搬家程序:

一、用A命令键入以下程序:

MOVSI,1000

MOVDI,1500

MOVCX,0F

LOP:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPLOP

INT20

二、用A命令DB伪指令在1000H键入以下字符串:

DB‘IBM_PCCOMPUTER'

3、用G命令运行此程序,并用D命令检查目的地址处的字符与源串是不是一致。

4、假设此程序中的目的地址改成1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地址去?

修改程序以做到这一点。

三、段寄放器概念及字符串传送指令练习

一、用A命令键入以下程序:

MOVSI,0

MOVDI,0

MOVAX,1000

MOVDS,AX

MOVAX,1500

MOVES,AX

MOVCX,0F

CLD

REPMOVSB

INT20

二、用A命令DB伪指令在1000:

0000处键入字符串'IBM_PCCOMPUTER',并用D命检查之。

3、用D命令检查0F00:

1000处内容,看是不是一样,什么缘故?

4、用G命令运行此程序,检查目的地址1500:

0000处内容。

并记下DS与ES值。

DS=1000ES=1500

五、修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?

)仍和原先一样。

ES=DS=1000

实验四屏幕字符显示程序

实验目的

通过实验把握以下知识:

一、8086指令:

JMP,ROR,XOR,HLT。

二、利用DOS功能挪用INT21H的2号和9号功能进行屏幕显示的方式。

3、IBM-PC机的ASCII码表及操纵字符。

4、利用^Break(CTRL+BREAK)退出程序的方式及局限性。

实验内容及步骤

一、利用INT2109H号功能挪用显示字符串

一、用A命令在100H处键入以下程序:

MOVAH,9

MOVDX,110

INT21

INT20

二、用A命令在110H处键入以下字符串的ASCII码:

DB'Thisisasample!

$'

3、用N命令和W命令将此程序(包括数据区)存入文件名为的磁盘文件中。

(存入前BX:

CX必需置为文件长度值)。

4、用Q命令退出DEBUG。

五、在DOS命令下键入AA,运行此程序,即在屏幕上显示'Thisisasample!

'字符串,假设不显现,用DEBUG检查程序有无错误。

二、利用INT21H2号功能显示字符

一、用A命令在100H处键入以下程序:

XORDL,DL

MOVCX,100

LOP:

MOVAH,2

INT21

INCDL

PUSHCX

MOVCX,8

DELY:

PUSHCX

MOVCX,0

J:

LOOPJ

POPCX

LOOPDELY

POPCX

LOOPLOP

INT20

二、用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。

认真观看每一个字符,和IBM-PCASCII码表对照,看07H-0DH处操纵字符显示结果与表上有何不同?

3、按CTRL+BREAK退出此程序,假设一次不行可多做几回。

三、自编一个程序,要求显示AX的内容,即能显示AX=xxxx。

调试时AX的内容可用R命令赋值,也可用MOV指令赋值。

实验五条件转移指令

实验目的

通过实验把握以下知识:

一、8086指令:

JZ,JNZ,JC,JNC,CMP,SHR。

二、程序:

用字符搜索法确信字符串长度。

3、程序:

十六进制数化为ASCII码的一样方式。

实验内容及步骤

一、用字符搜索法确信字符串长度

一、用A命令在100H开始的内存处键入以下程序:

JMPSTART

DB'Thisistheprogramtomeasure'

DB'thelengthofastring!

$'

START:

MOVBX,102

MOVAL,24

XORCL,CL

LOP:

CMPAL,[BX]

JZEXIT

INCBX

INCCL

JMPLOP

EXIT:

INT3

二、用G命令运行此程序,并检查CL的统计长度是不是与你自己统计的实际长度是不是一样?

注:

MOVAL,24中24H为$的ASCII码。

二、十六进制数转化为ASCII码的一样方式(显示内存内容)

1、用A命令在100H处键入以下程序:

MOVSI,0

MOVBL,10

LOP:

MOVDL,[SI]

MOVCL,4

SHRDL,CL

CMPDL,0A

JCJ1

ADDDL,7

J1:

ADDDL,30

MOVAH,2

INT21

MOVDL,[SI]

ANDDL,0F

CMPDL,0A

JCJ2

ADDDL,7

J2:

ADDDL,30

MOVAH,2

INT21

MOVDL,20

MOVAH,2

INT21

INCSI

DECBL

JNZLOP

INT20

二、用N,W命令将此程序用文件名存入磁盘。

3、用Q命令退出DEBUG。

4、在DOS命令状态下直接运行命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,假设有错误,用DEBUG检查之。

五、自编程序:

修改上面程序,使除以十六进制数形式显示内存内容外,还能在其右边显示该十六进制码所对应的ASCII字符,07-0D的操纵字符用'.'代替。

三、综合程序(选做):

测量一字符串长度,并用十六进制数显示之

程序内容:

JMPSTART

DB'Thisisaprogramtomeasurethelengthofastring。

'

DB0D,0A

DB'thelengthofthestringis:

$'

START:

MOVAH,9

MOVDX,102

INT21

MOVBX,101

MOVAL,24

MOVDH,FF

LOP:

INCBX

INCDH

CMPAL,[BX]

JNZLOP

MOVCH,2

MOVCL,4

LOP1:

ROLDH,CL

MOVDL,DH

ANDDL,0F

ADDDL,30

CMPDL,3A

JCJ

ADDDL,7

J:

MOVAH,2

INT21

DECCH

JNZLOP1

INT20

键入此程序,存入文件中并在DOS命令状态下直接运行之,假设未显现预期结果,用DEBUG检查有否错误?

实验六汇编语言程序上机进程

实验目的

1、把握经常使用工具软件EDIT,MASM和LINK的利用。

2、伪指令:

SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。

3、利用INT21H的1号功能实现键盘输入的方式。

4、了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方式。

实验内容

DATASEGMENT

MESSAGEDB'THISISASAMPLEPROGRAMOFKEYBOARDANDDISPLAY'

DB0DH,0AH,'PLEASESTRIKETHEKEY!

',0DH,0AH,'$'

DATAENDS

STACKSEGMENTPARASTACK'STACK'

DB50DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESSAGE

MOVAH,9

INT21H

AGAIN:

MOVAH,1

INT21H

CMPAL,1BH

JEEXIT

CMPAL,61H

JCND

CMPAL,7AH

JAND

ANDAL,B

ND:

MOVDL,AL

MOVAH,2

INT21H

JMPAGAIN

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验步骤

1、利用文字编辑工具(经常使用EDIT或记事本)将源程序输入,其扩展名为.ASM。

2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。

假设汇编时提示有错,用文字编辑工具修改源程序后从头汇编,直至通过。

3、用TYPE命令显示产生的.LST文件。

4、用LINK将.OBJ文件连接成可执行的.EXE文件。

五、在DOS状态下运行LINK产生的.EXE文件。

即在屏幕上显示题目并提示你按键。

每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。

按ESC键可返回DOS。

假设未显现预期结果,用DEBUG检查程序。

实验七分支程序

实验目的

一、把握利用间接转移指令JMPBX实现多岔分支的方式。

二、宏替换指令MACRO及ENDM。

3、符号扩展指令CBW。

实验内容

DISPMACROMSG

LEADX,MSG

MOVAH,9

INT21H

MOVAH,4CH

INT21H

ENDM

STACKSEGMENTSTACK

DB256DUP(0)

STACKENDS

DATASEGMENT

PARMDB16DUP(?

BRTABLEDWOFFSETBRA,OFFSETBRB,OFFSETBRC

DWOFFSETBRD,OFFSETBRE,OFFSETBRF

MSGADB'ILIKEMYIBM-PC!

$'

MSGBDB'HOWAREYOU!

$'

MSGCDB'PROGRAMDESIGN$'

MSGDDB'THISISASAMPLE$'

MSGEDB'WELLCOMEUSEMYCOPUTER!

$'

MSGFDB'THEASSEMBLERLANGUAGEOF8086$'

ERRMSDB'ERROR!

!

INVALIDPARAMETER!

!

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVES,AX

MOVSI,80H

LEADI,PARM

MOVCX,16

CLD

REPMOVSB

MOVDS,AX

CMPPARM,2

JCERR

MOVAL,PARM+2

SUBAL,30H

JCERR

CMPAL,6

JNCERR

LEABX,BRTABLE

CBW

ADDAX,AX

ADDBX,AX

JMP[BX]

ERR:

DISPERRMS

BRA:

DISPMSGA

BRB:

DISPMSGB

BRC:

DISPMSGC

BRD:

DISPMSGD

BRE:

DISPMSGE

BRF:

DISPMSGF

CODEENDS

ENDSTART

实验步骤

1、输入并汇编此程序。

要求生成一个.LST文件。

用TYPE命令检查.LST文件,观看宏替换命令产生的指令集。

2、将OBJ文件连接成EXE文件(假设为。

3、用命令DEBUGXXX(XXX为任意字符串)将带参数调入DEBUG用D命令观看DS:

0080处的命令行,记录80H处的内容和字符个数的关系。

4、退出DEBUG。

直接带参数运行此程序:

AAn(n=0--5)

依次观看并记录n从0到5时的运行结果。

会显现不兼容无法显示问题。

这时用alt+enter进入全屏模式方可看到结果

实验八多重循环程序

实验目的

一、把握多重循环程序和排序程序设计方式。

二、把握带符号数的比较转移指令:

JL,JLE,JG,JGE

3、伪指令EQU及操作符'$'的利用。

实验内容

STACKSEGMENTSTACK

DB256DUP(0)

STACKENDS

DATASEGMENT

ARRAYDW1234H,5673H,7FFFH,8000H,0DFFH

DW0AB5H,0369H,005FH,5634H,9069H

COUNTEQU$-ARRAY

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,SS:

STACK

START:

MOVCX,COUNT

SHRCX,1

DECCX

MOVBL,-1

AGAIN:

MOVDX,CX

ANDBL,BL

JEEXIT

XORBL,BL

XORSI,SI

AGAIN1:

MOVAX,ARRAY[SI]

CMPAX,ARRAY[SI+2]

JLENCHG

XCHGARRAY[SI+2],AX

MOVARRAY[SI],AX

MOVBL,-1

NCHG:

INCSI

INCSI

DECDX

JNZAGAIN1

LOOPAGAIN

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验步骤

1、输入,汇编并连接此程序。

2、在DEBUG下运行此程序,记录运行

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

当前位置:首页 > 求职职场 > 职业规划

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

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