微机原理实验报告.docx

上传人:b****4 文档编号:5100021 上传时间:2022-12-13 格式:DOCX 页数:31 大小:311.27KB
下载 相关 举报
微机原理实验报告.docx_第1页
第1页 / 共31页
微机原理实验报告.docx_第2页
第2页 / 共31页
微机原理实验报告.docx_第3页
第3页 / 共31页
微机原理实验报告.docx_第4页
第4页 / 共31页
微机原理实验报告.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

微机原理实验报告.docx

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

微机原理实验报告.docx

微机原理实验报告

 

物理与信息工程学院

微机原理

 

实验一

1.写出完成下列功能的指令序列

(1)传送20H到AL寄存器MOVAL,20H

(2)将(AL)*2MOVAL,02HMULAL

(3)传送25H到BL寄存器MOVBL,25H

(4)(AL)*BLMULBL

问最后结果(AX)=?

AX=0940H

2.分别写出完成下列指令要求的指令

(1)将BX的低4位清零ANDBX,F0H

(2)将AX的高4位置1ORAX,F0H

(3)将DX的低4位取反;XORDX,0FH

(4)将CX的中间八位清零ANDCX,0FF0H

(5)将AX中与BX中的对应位不相同的位均置1XORAX,BX

3.上机运行下面指令序列,分析运行后(AX)=?

movax,4312

movcl,8

sarax,cl

decax

movcx,8

mulcx

ax=210.9h

4.4.设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300-304H连续单元装入0AH 0BH 0CH 0DH 0EH。

在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令原源地址的形成过程?

当数据传送完毕时,AX中的内容是什么?

实验二

1.编程:

求两个数的平均值。

这两个数分别放在X单元和Y单元中,而平均值放在Z单元中。

程序实验报告已给出,在此只给出运行结果:

3.编写程序:

求1+2+3+……+100的和

程序如下:

datasegment

numberdw0001h

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movbx,number

movax,0

movcx,64h

next:

addax,bx

incbx

loopnext

movah,4ch

int21h

codeends

endstart

实验结果:

1+2+3+……+100=5050

(5050)10=(13BA)16

实验三

1.从键盘输入两个1位十进制数,求这两个数的和,并将结果显示在屏幕上。

程序如下:

DATASEGMENT

INFOR1DB'PLEASEINPUTTHEFIRSTDATA(<10):

$'

INFOR2DB0AH,0DH,'PLEASEINPUTTHESECONDDATA(<10):

$'

INFOR3DB0AH,0DH,'THERESULTIS:

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINFOR1

MOVAH,09H

INT21H

MOVAH,01H

INT21H

ANDAL,0FH

ANDAL,0FH

MOVBL,AL

MOVDX,OFFSETINFOR2

MOVAH,09H

INT21H

MOVAH,01H

INT21H

ANDAL,0FH

SUBAL,30H

MOVAH,0

XORAH,AH

ADDAL,BL

AAA

PUSHAX

MOVDX,OFFSETINFOR3

MOVAH,09H

INT21H

POPAX

PUSHAX

PUSHAX

MOVDL,AH

ADDDL,30H

MOVAH,02H

INT21H

POPAX

MOVDL,AL

ADDDL,30H

MOVAH,02H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验结果:

2.从键盘输入0~9中任意一个自然数,将其立方值在屏幕上显示出来。

程序如下:

 

datasegment

tabledw0,1,8,27,64,125,216,343,512,729

bufdb'pleaseinputanumber(0~9):

',0dh,0ah,'$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,offsetbuf

movah,9h

int21h

movah,01

int21h

andax,0fh

addax,ax

movbx,offsettable

movah,0

addbx,ax

movax,[bx]

movax,4c00h

int21h

codeends

endstart

实验结果:

9*9*9=(729)10=(02D9)16

5*5*5=(125)10=(007D)16

实验四

1.编程实现符号函数。

程序如下:

DATASEGMENT

XDB-25

YDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,X

CMPAL,0

JGNEXT1

JLNEXT2

MOVY,0

JMPEXIT

NEXT1:

MOVY,1

JMPEXIT

NEXT2:

MOVY,-1

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验结果:

输入CD的值为-25时的结果

输入CD的值为25时的结果

 

实验五

1.从自然数1开始累加,直到累加和大于1000为止,统计被累加自然数的个数,并把统计的个数送入n单元,并把累加和送入sum单元。

程序如下:

datasegment

ndw?

sumdw?

xdb'nis:

$'

ydb0Ah,0Dh,'sumis:

$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movah,9

movdx,offsetx

int21h

movax,0

movbx,0

movcx,0

movdx,0

again:

addbx,1

addax,bx

addcx,1

cmpax,3e8h

jbeagain

movn,cx

movsum,ax

movsi,ax

movax,cx

movbl,10

divbl

movbh,ah

movdl,al

callzg

movdl,bh

callzg

movah,9

movdx,offsety

int21h

movax,si

movdx,0

movbx,1000

divbx

movbx,dx

movdl,al

callzg

movax,bx

movbl,100

divbl

movbh,ah

movdl,al

callm

moval,bh

movah,0

movbl,10

divbl

movbh,ah

movdl,al

callzg

movdl,bh

callzg

movah,4ch

int21h

zgproc

ordl,30h

movah,2

int21h

ret

mendp

codeends

endstart

实验结果:

编程序统计学生的数学成绩,分别归类90~99分,80~89分,70~79分,60~69分及60分以下,并将各段的人数送入内存单元中。

程序如下:

DATASEGMENT

BUFDB95,91,64,85,79,66,35

S9DB?

S8DB?

S7DB?

S6DB?

S5DB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,7

LEASI,BUF

AGAIN:

MOVAL,[SI]

CMPAL,90

JBNEXT

INCS9

JMPEXIT

NEXT:

CMPAL,80

JBNEXT1

INCS8

JMPEXIT

NEXT1:

CMPAL,70

JBNEXT2

INCS7

JMPEXIT

NEXT2:

CMPAL,60

JBNEXT3

INCS6

JMPEXIT

NEXT3:

INCS5

EXIT:

INCSI

LOOPAGAIN

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验结果:

实验六

1.编程计算N个(N<50)连续偶数之和(2+4+6+……)。

程序如下:

datasegment

bufdb10

db?

db10dup(?

dataends

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movah,0ah

movdx,offsetbuf

int21h

movcl,buf+1

movch,0

movsi,offsetbuf+2

movax,0

again:

movbl,10

mulbl

subbyteptr[si],30h

addal,[si]

adcah,0

incsi

loopagain

callqh

callxs

movah,4ch

int21h

ret

mainendp

qhprocnear

movcx,ax

movax,0

movdx,0

again1:

adddx,2

addax,dx

loopagain1

ret

qhendp

xsprocnear

movdx,0

movbx,1000

divbx

movbx,dx

movdl,al

callp

movax,bx

movbl,100

divbl

movbh,ah

movdl,al

callp

moval,bh

movah,0

movbl,10

divbl

movbh,ah

movdl,al

callp

movdl,bh

callp

ret

xsendp

pprocnear

ordl,30h

movah,2

int21h

ret

pendp

codeends

endstart

实验结果:

四个偶数的和:

2+4+6+8=20

实验七

代码转换:

设计将十六位二进制数转换成4位压缩型BCD码的算法。

实验程序:

datassegment

datasends

stackssegment

stacksends

codessegment

assumecs:

codes,ds:

datas,ss:

stacks

start:

movax,datas

movds,ax

movax,1345h

cwd

movbx,1000

divbx

movcx,dx

movdl,al

calldisp

moval,bh

movbl,10

movah,0

divbl

movbh,ah

movdl,al

calldisp

movdl,bh

calldisp

movah,4ch

int21h

ret

dispprocnear

ordl,30H

movah,2

int21h

ret

dispendp

codesends

endstart

实验结果:

一、PC机内部8259中断实验

datasegment

countdw1

messdb'thebellisring!

',0dh,0ah,'$'

dataends

stacksegment

db100dup(?

stackends

codesegment

mainprocfar

assumecs:

code,ds:

data,ss:

stack

start:

movax,stack

movss,ax

pushds

subax,ax

pushax

movax,data

movds,ax

moval,1ch

movah,35h

int21h

pushes

pushbx

pushds

movdx,offsetring

movax,segring

movds,ax

moval,1ch

movah,25h

int21h

popds

moval,10110110b

out43h,al

movax,533h

out42h,al

moval,ah

out42h,al

inal,21h

andal,0feh

out21h,al

sti

d:

movah,0

int16h

cmpal,1bh

jnzd

popdx

popds

moval,1ch

movah,25h

int21h

ret

mainendp

ringprocnear

pushds

pushax

pushcx

pushdx

movax,data

movds,ax

sti

deccount

jnzexit

movdx,offsetmess

movah,09

int21h

movdx,2000h

inal,61h

andal,0fch

sound:

xoral,03h

out61h,al

movcx,9600h

wait1:

loopwait1

decdx

jnesound

movcount,91

exit:

cli

popdx

popcx

popax

popds

iret

ringendp

codeends

endstart

实验结果:

程序写完后保存,然后直接运行。

该实验每隔10秒响铃一次,外部响铃,内部显示如上图所示

8254可编程定时中断实验

实验程序:

datasegment

messagedb'thisisa8254',0ah,0dh,'$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

cli

moval,72h

movah,35h

int21h

pushes

pushbx

pushds

movax,segint_proc

movds,ax

movdx,offsetint_proc

movax,2572h

int21h

popds

inal,0a1h

andal,0fbh

out0a1h,al

inal,21h

andal,0fbh

out21h,al

moval,00110100b

movdx,3003h

outdx,al

movaX,5000h

movdx,3000h

outdx,al

moval,ah

outdx,al

LL:

MOVAH,0

INT16H

JZLL

MOVAH,0

INT16H

CMPAL,1BH

JNZLL

INAL,0A1H

ORAL,04H

OUT0A1H,AL

INAL,21H

ORAL,04H

OUT21H,AL

CLI

POPDX

POPDX

MOVAL,72H

MOVAH,25H

INT21H

MOVAH,4CH

INT21H

INT_PROCPROC

PUSHDX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESSAGE

MOVAH,09H

INT21H

MOVAL,20H

OUT20H,AL

OUT0A0H,AL

POPAX

POPDX

IRET

INT_PROCENDP

CODEENDS

ENDSTART

实验结果:

8255并行接口实验

1.使8255的端口A口为输出,B口为输入,完成拨动开关到数据灯的数据传送。

codesegment

assumecs:

code

start:

movdx,3003h

moval,10000010b

outdx,al

movdx,3001h

inal,dx

movdx,3000h

outdx,al

movah,4ch

int21h

codeends

endstart

1.使8255的B口为输出,实现8位数据灯左移循环显示,单行。

codesegment

assumecs:

code

start:

movdx,3003h

moval,10000000b

outdx,al

movdx,3001h

moval,01111111b

l:

outdx,al

movcx,3000h

a:

movbx,2000h

b:

decbx

jnzb

loopa

roral,1

jmpl

movah,4ch

int21h

codeends

endstart

2.使8255的B口为输出,实现8位数据灯左移循环显示,单行。

codesegment

assumecs:

code

start:

movdx,3003h

moval,10000000b

outdx,al

l:

movdx,3000h

callxu

movcx,3000h

a:

movbx,2000h

b:

decbx

jnzb

loopa

movdx,3001h

callxu

jmpl

movah,4ch

int21h

xuprocnear

movcx,8

moval,01111111b

outdx,al

ll:

pushcx

movcx,3000h

c:

movbx,2000h

d:

decbx

jnzd

loopc

popcx

roral,1

outdx,al

loopll

moval,11111111b

outdx,al

ret

xuendp

codeends

endstart

jmpl

movah,4ch

int21h

codeends

endstart

3.使8255的B口为输出,实现8位数据灯左移循环显示,两行。

codesegment

assumecs:

code

start:

movdx,3003h

moval,10000000b

outdx,al

l:

movdx,3000h

callxu

movcx,3000h

a:

movbx,2000h

b:

decbx

jnzb

loopa

movdx,3001h

callxu

jmpl

movah,4ch

int21h

xuprocnear

movcx,8

moval,01111111b

outdx,al

ll:

pushcx

movcx,3000h

c:

movbx,2000h

d:

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

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

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

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