西安电子科技大学微机原理大作业.docx

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

西安电子科技大学微机原理大作业.docx

《西安电子科技大学微机原理大作业.docx》由会员分享,可在线阅读,更多相关《西安电子科技大学微机原理大作业.docx(31页珍藏版)》请在冰点文库上搜索。

西安电子科技大学微机原理大作业.docx

西安电子科技大学微机原理大作业

西安电子科技大学微机原理大作业

 

微机原理大作业

 

第一次上机

一、实验目的

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

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

二、实验仪器

586微机1台

三、实验内容

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

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

a.立即寻址

b.寄存器寻址

c.直接寻址

d.寄存器间接寻址

e.寄存器相对寻址

f.基址变址寻址

g.基址变址且相对寻址

掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。

指令

SRC寻址方式

SRC的地址

AX推算值

AX实际值

MOVAX,CX

寄存器寻址

0005

0005

MOVAX,500H

立即寻址

0500

0500

MOVAX,TABLE

直接寻址

1541:

0004

A5A4

A5A4

MOVAX,ES:

[BX]

寄存器间接寻址

1542:

0004

C5C4

C5C4

MOVAX,[BX+05H]

寄存器相对寻址

1541:

0009

AAA9

AAA9

MOVAX,SS:

[BX]+03H

寄存器相对寻址

153F:

0007

B8B7

B8B7

MOVAX,TABLE[BX]

寄存器相对寻址

1541:

0008

A9A8

A9A8

MOVAX,07H[BX]

寄存器相对寻址

1541:

000B

ACAB

ACAB

MOVAX,[BP]

寄存器间接寻址

153F:

0003

B4B3

B4B3

MOVAX,TABLE[BP]

寄存器相对寻址

1541:

0007

A8A7

A8A7

MOVAX,08H[BP]

寄存器相对寻址

153F:

000B

BCBB

BCBB

MOVAX,[BP+06H]

寄存器相对寻址

153F:

0009

BAB9

BAB9

MOVAX,DS:

[BP+03H]

寄存器相对寻址

1541:

0006

A7A6

A7A6

MOVAX,[BP]+05H

寄存器相对寻址

153F:

0008

B9B8

B9B8

MOVAX,ES:

[SI+03H]

寄存器相对寻址

1542:

0005

C6C5

C6C5

MOVAX,[DI+06H]

寄存器相对寻址

1541:

0007

A8A7

A8A7

MOVAX,[DI]+05H

寄存器相对寻址

1541:

0006

A7A6

A7A6

MOVAX,TABLE[SI]

寄存器相对寻址

1541:

0006

A7A6

A7A6

MOVAX,[SI]

寄存器间接寻址

1541:

0002

A3A2

A3A2

MOVAX,TABLE[DI]

寄存器相对寻址

1541:

0005

A6A5

A6A5

MOVAX,[SI]+05H

寄存器相对寻址

1541:

0007

A8A7

A8A7

MOVAX,[BX][DI+01H]

基址变址且相对寻址

1541:

0006

A7A6

A7A6

MOVAX,[BX][SI]+03H

基址变址且相对寻址

1541:

0009

AAA9

AAA9

MOVAX,TABLE[BX][SI]

基址变址且相对寻址

1541:

000A

ABAA

ABAA

MOVAX,ES:

[BX][DI]

基址变址寻址

1542:

0005

C6C5

C6C5

MOVAX,[BP][DI+02H]

基址变址且相对寻址

153F:

0006

B7B6

B7B6

MOVAX,TABLE[BP][DI]

基址变址且相对寻址

1541:

0008

A9A8

A9A8

MOVAX,ES:

[BP][SI]

基址变址寻址

1542:

0005

C6C5

C6C5

MOVAX,[BP][SI+05H]

基址变址且相对寻址

153F:

000A

BBBA

BBBA

MOVAX,03H[BP][DI]

基址变址且相对寻址

153F:

0007

B8B7

B8B7

MOVAX,[BP][SI]

基址变址寻址

153F:

0005

B6B5

B6B5

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

基址变址且相对寻址

153F:

0009

BAB9

BAB9

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

基址变址且相对寻址

1541:

000D

AEAD

AEAD

第二次上机

一、实验目的

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

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

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

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

二、实验仪器

586微机1台

三、实验内容

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

STACKSEGMENTSTACK'STACK'

DW100HDUP(?

STACKENDS

DATASEGMENT

ADD1DD02121424H

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.有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

STACKSEGMENTSTACK

DB256DUP(?

STACKENDS

DATASEGMENT

DATA1DW7800H,6832H,0000H,87H,1275H,0EC34H

STRING1DB'inputnumber:

',0DH,0AH,'$'

STRING2DB'Thenumbersfromlargetosmallis:

',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

CHANGENDP

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-4),各命令功能分别为:

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

(2)按下“2”键,完成找最大值

(3)按下“3”键,完成排序

(4)按下“4”键,显示时间

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

;宏定义

;-------------------------------------------------------

;-------显示字符串-------

;-------------------------------------------------------

DISPLMACROSTR;Functiontodisplaystrings

PUSHDX

PUSHAX

LEADX,STR

MOVAH,09H

INT21H

POPAX

POPDX

ENDM

;-------------------------------------------------------

;-------判断用户是否选择继续-------

;-------------------------------------------------------

ISCONTINUEMACROL;Macrotojudgewhethertocontinue,Lisamark

DISPS15,10,SMENU

MOVAH,08H

INT21H

CMPAL,1BH

JNEL;若用JE会导致编译,跳不了那么远

JMPMAIN

ENDM

;-------------------------------------------------------

;-----设置光标宏----

;-------------------------------------------------------

CURSORMACROCURX,CURY

PUSHAX

PUSHBX

PUSHDX;DX必须保护,始终指向输入缓冲区

MOVAH,02H

MOVDH,CURX

MOVDL,CURY

MOVBH,0

INT10H

POPDX

POPBX

POPAX

ENDM

;-------------------------------------------------------

;-----定位字符串显示宏------

;-------------------------------------------------------

DISPSMACROX,Y,STR;将STR的内容显示到X,Y的位置

PUSHAX

PUSHBX

PUSHDX

MOVAH,02H

MOVBH,00H;显示页码,第0页

MOVDH,X;行(X坐标)

MOVDL,Y;列(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;N=上卷行数;N=0时,清窗口

MOVCH,ULR;左上角行号(X)

MOVCL,ULC;左上角列号(Y)

MOVDH,LRR;右下角行号

MOVDL,LRC;右下角列号

MOVBH,ATT;卷入行属性,颜色设置

INT10H

POPDX

POPCX

POPBX

POPAX

ENDM

;-------------------------------------------------------

;---------子程序预处理宏---------

;-------------------------------------------------------

PREPMACROT;预处理,显示子菜单标题(T),输入提示信息等

LEASI,INBUF+1

LEADI,OUTBUF

SCROLL21,2,0,22,79,0FH;清屏,内窗

DISPS3,20,T;显示子菜单标题(3行20列显示T)

DISPS6,2,CAPION;Promptforastringtochange

DISPS8,2,INCAP;Print"Yourinputis:

"

MOVAH,0AH

INT21H

MOVCH,0

MOVCL,[SI];获取输入字符串中,字符的个数

INCSI

ENDM

;-------------------------------------------------------

;---------堆栈段---------

;-------------------------------------------------------

STACKSEGMENTSTACK'STACK'

DB100HDUP(?

TOPLABELWORD

STACKENDS

;-------------------------------------------------------

;---------数据段---------

;-------------------------------------------------------

DATASEGMENT

BASEDWMAIN,LTC,FMV,SORTS,STM,EXIT;建立跳转表

WELCMDB'Welcometousethisprogram!

$'

MMENUIDB'---THISPROGRAMISDEVELOPEDBYZHOUPENGFEI!

---$'

MMENUDDB'---2014/11/16---$'

MMENUCDB'PleaseChoseAnItem,AndInputTheNumber!

$'

MMENU1DB'1-LowercaseLettersToCapitalLetters$'

MMENU2DB'2-FindTheMaximumValue$'

MMENU3DB'3-Sort$'

MMENU4DB'4-SetTime$'

MMENU5DB'5-Exit!

$'

SMENUDB'PressAnyKeyToRedo,Press"ESC"ToReturnToMainMenu!

$'

WROCAPDB'WRONG!

Youhavepress""key!

Pleaseinputanumberbetween1and5!

$'

CAPIONDB'PleaseInputYourStringsandEndWith"Enter"Key!

$'

INCAPDB'YourInputIs:

$'

INBUFDB100

DB?

DB100DUP(?

OUTCAPDB'MyOutputIs:

$'

OUTBUFDB100DUP(?

MAXCAPDB'ThecharofmaxASCIIis:

.$'

ERRINFDB'ERROR!

Pleasechecktheformatyouinput!

$'

TIMESETCDB'Now,youcansetthetime!

$'

TIMESETFDB'Format:

(012532)or(01:

25:

32),andendwithCR!

$'

TIMESETSDB'Succeed!

$'

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;设置菜单颜色,黑底白字//注意逗号应为半角字符,否则提示outofmemory

DISPS4,20,MMENUI;Displaythemainmenu

DISPS6,30,MMENUD

DISPS8,20,MMENUC

DISPS10,20,MMENU1

DISPS12,20,MMENU2

DISPS14,20,MMENU3

DISPS16,20,MMENU4

DISPS18,20,MMENU5

ML:

CURSOR19,1DH

MOVAH,01H;Recievethechoice

INT21H

CMPAL,31H

JLERROR

CMPAL,35H

JGERROR

ANDAX,00FH

LEABX,BASE

SHLAL,1;将AL乘2,因为跳转表地址是dw类型的,

ADDBX,AX

JMPWORDPTR[BX]

;CMPAL,'1'

;JELTC;Choose1,lowercaselettertocapitalletter

;CMPAL,'2'

;JEFMV;Choose2,findthemaximumvalue

;CMPAL,'3'

;JESORTS;Choose3,sort

;CMPAL,'4'

;JESTM;Choose4,showcurrenttime

;CMPAL,'5'

;JEEXIT;Choose5,exittheprogram

ERROR:

CMPAL,0DH;如果是回车的话,赋CR

JEMCR

MOV[WROCAP+23],AL;Otherchar

MOV[WROCAP+24],''

JMPD

MCR:

MOVWORDPTR[WROCAP+23],'RC'

D:

DISPS20,5,WROCAP;Showthewronginformation

JMPML

LTC:

CALLLLTOCL

ISCONTI

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

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

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

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