微机原理大作业.docx

上传人:b****8 文档编号:29506832 上传时间:2023-07-24 格式:DOCX 页数:26 大小:231.61KB
下载 相关 举报
微机原理大作业.docx_第1页
第1页 / 共26页
微机原理大作业.docx_第2页
第2页 / 共26页
微机原理大作业.docx_第3页
第3页 / 共26页
微机原理大作业.docx_第4页
第4页 / 共26页
微机原理大作业.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

微机原理大作业.docx

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

微机原理大作业.docx

微机原理大作业

第一次上机实验

一、实验目的

1.熟练掌握8086/8088的各种寻址方式及应用。

2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础。

二、实验仪器

586微机1台

三、实验内容

1.关于数据的寻址方式练习

8086/8088提供多种方式实现操作数寻址,大体可分为7种:

a.立即寻址

b.寄存器寻址

c.直接寻址

d.寄存器间接寻址

e.寄存器相对寻址

f.基址变址寻址

g.基址变址且相对寻址

四、实验数据及结果

指令

SRC寻址方式

SRC的地址

AX推算值

AX实际值

MOVAX,CX

寄存器寻址

0005H

0005H

MOVAX,500H

立即寻址

0500H

0500H

MOVAX,TABLE

直接寻址

15C5:

0004

0A5A4H

0A5A4H

MOVAX,ES:

[BX]

寄存器间接寻址

15C6:

0004

0C5C4H

0C5C4H

MOVAX,[BX+05H]

寄存器相对寻址

15C5:

0009

0AAA9H

0AAA9H

MOVAX,SS:

[BX]+03H

寄存器相对寻址

15C3:

0007

0B8B7H

0B8B7H

MOVAX,TABLE[BX]

寄存器相对寻址

15C5:

0008

0A9A8H

0A9A8H

MOVAX,07H[BX]

寄存器相对寻址

15C5:

000B

0ACABH

0ACABH

MOVAX,[BP]

寄存器相对寻址

15C3:

0003

0B4B3H

0B4B3H

MOVAX,TABLE[BP]

寄存器相对寻址

15C5:

0007

0A8A7H

0A8A7H

MOVAX,08H[BP]

寄存器相对寻址

15C3:

0008

0BCBBH

0BCBBH

MOVAX,[BP+06H]

寄存器相对寻址

15C3:

0009

0BAB9H

0BAB9H

MOVAX,DS:

[BP+03H]

寄存器相对寻址

15C5:

0006

0A7A6H

0A7A6H

MOVAX,[BP]+05H

寄存器相对寻址

15C3:

0008

0B9B8H

0B9B8H

MOVAX,ES:

[SI+03H]

寄存器相对寻址

15C6:

0005

0C6C5H

0C6C5H

MOVAX,[DI+06H]

寄存器相对寻址

15C5:

0007

0A8A7H

0A8A7H

MOVAX,[DI]+05H

寄存器相对寻址

15C5:

0006

0A7A6H

0A7A6H

MOVAX,TABLE[SI]

寄存器相对寻址

15C5:

0006

0A7A6H

0A7A6H

MOVAX,[SI]

寄存器间接寻址

15C5:

0002

0A3A2H

0A3A2H

MOVAX,TABLE[DI]

寄存器相对寻址

15C5:

0005

0A6A5H

0A6A5H

MOVAX,[SI]+05H

寄存器相对寻址

15C5:

0007

0A8A7H

0A8A7H

MOVAX,[BX][DI+01H]

基址变址且相对寻址

15C5:

0006

0A7A6H

0A7A6H

MOVAX,[BX][SI]+03H

基址变址且相对寻址

15C5:

0009

0AAA9H

0AAA9H

MOVAX,TABLE[BX][SI]

基址变址且相对寻址

15C5:

000A

0ABAAH

0ABAAH

MOVAX,ES:

[BX][DI]

基址变址寻址

15C6:

0005

0C6C5H

0C6C5H

MOVAX,[BP][DI+02H]

基址变址且相对寻址

15C3:

0006

0B7B6H

0B7B6H

MOVAX,TABLE[BP][DI]

基址变址且相对寻址

15C6:

0008

0A9A8H

0A9A8H

MOVAX,ES:

[BP][SI]

基址变址寻址

15C6:

0005

0C6C5H

0C6C5H

MOVAX,[BP][SI+05H]

基址变址且相对寻址

15C3:

000A

0BBBAH

0BBBAH

MOVAX,03H[BP][DI]

基址变址且相对寻址

15C3:

0007

0B8B7H

0B8B7H

MOVAX,[BP][SI]

基址变址寻址

15C3:

0005

0B6B5H

0B6B5H

MOVAX,[BP+02H][DI+03H]

基址变址且相对寻址

15C3:

0009

0BAB9H

0BAB9H

MOVAX,TABLE[BP+02H][DI+03H]

基址变址且相对寻址

15C5:

000D

0AEADH

0AEADH

第二次上机实验

一、实验目的

1. 熟练掌握汇编语言程序设计的方法及上机步骤。

2. 掌握算术运算中,十进制数调整指令的应用。

3. 掌握子程序的设计方法。

4. 掌握DOS功能的调用方法。

二、实验仪器

586微机1台

三、实验内容

1.编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

编程要求与提示:

[1]两个加数均以组合十进制数形式存放在ADD1和ADD2为首址的存贮器单元。

[2]和以组合十进制数的形式存入SUM以下单元。

[3]将和送到屏幕显示部分功能的实现采用子程序的形式。

[4]实验步骤如下:

a.用全屏幕编辑软件建立源程序。

b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。

c.用link.exe连接程序对目标程序进行连接形成可执行文件。

d.用DEBUG对连接通过的可执行程序进行调试。

2.有一个首地址为A的N字数组,请编写程序使该数组中的数按从大到小的次序排列。

编程要求及提示:

[1]参加排序的数据及个数由学生自己定义。

[2]要将排序前的数组和排序后的数组在屏幕上显示出来。

[3]实验步骤:

a.用全屏幕编辑软件建立源程序。

b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。

c.用link.exe连接程序对目标程序进行连接形成可执行文件。

d.用DEBUG对连接通过的可执行程序进行调试。

四、源程序及运行结果

1.源程序:

STACKSEGMENTSTACK'STACK'

DW100HDUP(?

STACKENDS

DATASEGMENT

ADD1DD12678532H

ADD2DD21736543H

SUMDD?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

LEASI,ADD1

LEADI,ADD2

LEABX,SUM

MOVAL,[SI]

ADDAL,[DI]

DAA

MOV[BX],AL

MOVAL,[SI+1]

ADCAL,[DI+1]

DAA

MOV[BX+1],AL

MOVAL,[SI+2]

ADCAL,[DI+2]

DAA

MOV[BX+2],AL

MOVAL,[SI+3]

ADCAL,[DI+3]

DAA

MOV[BX+3],AL

MOVDL,00

ADCDL,00

CALLDISPSUM

MOVAH,4CH

INT21H

DISPSUMPROCNEAR

PUSHAX

PUSHBX

PUSHCX

PUSHSI

MOVSI,4

PUSHDX

MOVCX,5

LAB:

PUSHCX

PUSHBX

MOVAL,DL

MOVBL,DL

MOVCL,4

SHRAL,CL

ADDAL,30H

MOVAH,02

MOVDL,AL

INT21H

ANDBL,0FH

ADDBL,30H

MOVAH,02

MOVDL,BL

INT21H

POPBX

POPCX

DECSI

MOVDL,[BX][SI]

LOOPLAB

POPDX

POPSI

POPCX

POPBX

POPAX

RET

DISPSUMENDP

CODEENDS

ENDSTART

运行结果:

2.源程序

STACKSEGMENTSTACK

DB256DUP(?

STACKENDS

DATASEGMENT

DATA1DW4031H,3859H,0245H,1111H,0A231H,0FFFFH

STRING1DB'Originalnumbers:

',0DH,0AH,'$'

STRING2DB'Thenumbersfromlargetosmall:

',0DH,0AH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

LEADX,STRING1

MOVAH,09H

INT21H

MOVCX,6

LEASI,DATA1

L1:

MOVAX,[SI]

ADDSI,2

CALLDISPAX

CALLDISPCR

LOOPL1

MOVCX,5

LEASI,DATA1

ADDSI,10

LP1:

PUSHCX

PUSHSI

LP2:

MOVAX,[SI]

CMPAX,[SI-2]

JBENOXCHG

XCHGAX,[SI-2]

MOV[SI],AX

NOXCHG:

DECSI

DECSI

LOOPLP2

POPSI

POPCX

LOOPLP1

LEADX,STRING2

MOVAH,09H

INT21H

MOVCX,6

LEASI,DATA1

L2:

MOVAX,[SI]

ADDSI,2

CALLDISPAX

CALLDISPCR

LOOPL2

MOVAH,4CH

INT21H

DISPALPROC

PUSHAX

PUSHCX

PUSHDX

PUSHAX

MOVCL,4

SHRAL,CL

CALLCHANG

MOVAH,02H

MOVDL,AL

INT21H

POPAX

ANDAX,0FH

CALLCHANG

MOVAH,02H

MOVDL,AL

INT21H

POPDX

POPCX

POPAX

RET

DISPALENDP

CHANGPROC

CMPAL,10

JNGECHANG1

ADDAL,7

CHANG1:

ADDAL,30H

RET

CHANGEND

DISPAXPROC

XCHGAL,AH

CALLDISPAL

XCHGAH,AL

CALLDISPAL

RET

DISPAXENDP

DISPCRPROC

PUSHAX

PUSHDX

MOVAH,2

MOVDL,0AH

INT21H

MOVAH,2

MOVDL,0DH

INT21H

POPDX

POPAX

RET

DISPCRENDP

CODEENDS

ENDSTART

运行结果:

第三次上机实验

一、实验目的

1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法.

2.熟练掌握DOS常用功能的调用方法.

二、实验仪器

586微机1台

三、实验内容

编写如下程序,并在机器上调试成功。

程序采用菜单式选择,可以接收用户从键盘输入的四个命令(1-4),各命令功能分别为:

(1)按下“1”键,完成字符串小写字母变成大写字母。

用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。

用户按任一键,重做,按ESC键,返回主菜单。

(2)按下“2”键,完成找最大值(二选一)。

a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来;

b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。

用户按任一键,重做,按ESC键,返回主菜单。

(3)按下“3”键,完成排序(二选一)。

a.接收用户输入的可显示字符串,以回车结束。

程序按ASCII码值大小由大到小排序并输出显示;

b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。

用户按任一键,重做,按ESC键,返回主菜单。

(4)按下“4”键,结束程序运行,返回系统提示符。

四、源程序及运行结果

源程序:

DISPLMACROSTR

PUSHDX

PUSHAX

LEADX,STR

MOVAH,09H

INT21H

POPAX

POPDX

ENDM

ISCONTINUEMACROL

DISPS15,10,SMENU

MOVAH,08H

INT21H

CMPAL,1BH

JNEL

JMPMAIN

ENDM

CURSORMACROCURX,CURY

PUSHAX

PUSHBX

PUSHDX

MOVAH,02H

MOVDH,CURX

MOVDL,CURY

MOVBH,0

INT10H

POPDX

POPBX

POPAX

ENDM

DISPSMACROX,Y,STR

PUSHAX

PUSHBX

PUSHDX

MOVAH,02H

MOVBH,00H

MOVDH,X

MOVDL,Y

INT10H

LEADX,STR

MOVAH,09H

INT21H

POPDX

POPBX

POPAX

ENDM

SCROLLMACRON,ULR,ULC,LRR,LRC,ATT

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVAH,06H

MOVAL,N

MOVCH,ULR

MOVCL,ULC

MOVDH,LRR

MOVDL,LRC

MOVBH,ATT

INT10H

POPDX

POPCX

POPBX

POPAX

ENDM

PREPMACROT

LEASI,INBUF+1

LEADI,OUTBUF

SCROLL21,2,0,22,79,0FH

DISPS3,20,T

DISPS6,2,CAPION

DISPS8,2,INCAP

MOVAH,0AH

INT21H

MOVCH,0

MOVCL,[SI]

INCSI

ENDM

STACKSEGMENTSTACK'STACK'

DB100HDUP(?

TOPLABELWORD

STACKENDS

DATASEGMENT

BASEDWMAIN,LTC,FMV,SORTS,EXIT

WELCMDB'Welcometothisprogram!

$'

MMENUCDB'Pleaseinputthenumber!

$'

MMENU1DB'1-LowercaseLettersToCapitalLetters$'

MMENU2DB'2-FindTheMaximumfigure$'

MMENU3DB'3-Sort$'

MMENU4DB'4-Exit!

$'

SMENUDB'PressAnyKeyTorestart,Press"ESC"ToReturnToMainMenu!

$'

WROCAPDB'WRONG!

Youhavepress""key!

Pleaseinputanumberbetween1and4!

$'

CAPIONDB'PleaseInputYourStringsandEndWith"Enter"Key!

$'

INCAPDB'YourInputIs:

$'

INBUFDB100

DB?

DB100DUP(?

OUTCAPDB'MyOutputIs:

$'

OUTBUFDB100DUP(?

MAXCAPDB'ThecharofmaxASCIIis:

.$'

ERRINFDB'ERROR!

Pleasechecktheformatyouinput!

$'

TDINVDB'Invalidtimedata!

Inputagain!

$'

NODATCAPDB'Youhaveinputnothing!

$'

TIMEDB8DUP(':

'),12DUP('')

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

LEASP,TOP

LEADX,INBUF

CLC

MAIN:

SCROLL0,0,0,24,79,0

SCROLL25,0,0,24,79,50H

SCROLL21,2,0,22,79,0FH

DISPS8,20,MMENUC

DISPS10,20,MMENU1

DISPS12,20,MMENU2

DISPS14,20,MMENU3

DISPS16,20,MMENU4

ML:

CURSOR19,1DH

MOVAH,01H

INT21H

CMPAL,31H

JLERROR

CMPAL,35H

JGERROR

ANDAX,00FH

LEABX,BASE

SHLAL,1

ADDBX,AX

JMPWORDPTR[BX]

;CMPAL,'1'

;JELTC

;CMPAL,'2'

;JEFMV

;CMPAL,'3'

;JESORTS

;CMPAL,'4'

;JEEXIT

ERROR:

CMPAL,0DH

JEMCR

MOV[WROCAP+23],AL

MOV[WROCAP+24],''

JMPD

MCR:

MOVWORDPTR[WROCAP+23],'RC'

D:

DISPS20,5,WROCAP

JMPML

LTC:

CALLLLTOCL

ISCONTINUELTC

FMV:

CALLFMAXV

ISCONTINUEFMV

SORTS:

CALLSORT

ISCONTINUESORTS

EXIT:

SCROLL0,0,0,24,79,0

MOVAH,4CH

INT21H

LLTOCLPROC

REFLASHL:

PREPMMENU1

CMPCL,0

JEREFLASHL

LL1:

MOVAL,[SI]

CMPAL,'a'

JBMTOB;NOCHANGE

CMPAL,'z'

JAMTOB

SUBAL,20H;Convert

MTOB:

MOV[DI],AL

INCSI

INCDI

LOOPLL1

MOVBYTEPTR[DI],'$'

DISPS10,2,OUTCAP

DISPS10,17,OUTBUF

RET

LLTOCLENDP

FMAXVPROC

PUSHBX

REFLASHF:

PREPMMENU2

CMPCL,0

JEREFLASHF

MOVAL,0

FL1:

CMPAL,[SI]

JANEXT

MOVAL,[SI]

NEXT:

INCSI

LOOPFL1

MOV[MAXCAP+26],AL

DISPS10,2,MAXCAP

POPBX

RET

FMAXVENDP

SORTPROC

PREPMMENU3

DECCX

ADDSI,CX

MOVBYTEPTR[SI+1],'$'

LP1:

PUSHCX

PUSHSI

LP2:

MOVAL,[SI]

CMPAL,[SI-1]

JBENOXCHG

XCHGAL,[SI-1]

MOV[SI],AL

NOXCHG:

DECSI

LOOPLP2

POPSI

POPCX

LOOPLP1

DISPS10,2,OUTCAP

DISPS10,17,INBUF[2]

RET

SORTENDP

BCDASCPROCNEAR

PUSHBX

CBW

MOVBL,10

DIVBL

ADDAL,30H

MOVTIME[SI],AL

INCSI

ADDAH,30H

MOVTIME[SI],AH

INCSI

POPBX

RET

BCDASCENDP

CODEENDS

ENDSTART

运行结果:

按下“4”键后,返回系统提示符

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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