微机原理实验指导书.docx

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

微机原理实验指导书.docx

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

微机原理实验指导书.docx

微机原理实验指导书

昆明理工大学

微机原理及程序设计

实验指导书

 

 

昆明理工大学信息工程与自动化学院

自动化系

2012年9月

实验一两个多位十进制数相加的实验

一、实验目的

1、学习数据传送和算术运算指令的用法。

2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。

二、实验内容

将两个多位十进制数相加。

要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图

显示被加数和加数

被加数和加数以ASCII码表示的数字串形

式转化为由十六进制表示的数字串形式

计数值5→CX

清除最低位进位

执行ADC带进位相加

AAA调整

结果送被加数区

调整偏移量

N

CX-1=0?

Y

十六进制的结果转化为ASCII码表示的数字串

显示结果

结束

 

四、程序清单

CRLFMACRO

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

ENDM

DATASEGMENT

DATA1DB33H,39H,31H,37H,34H

DATA2DB36H,35H,30H,38H,32H

DATAENDS

STACKSEGMENT

STADB20DUP(?

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,TOP

MOVSP,AX

MOVSI,OFFSETDATA2

MOVBX,05

CALLDISPL

CRLF

MOVSI,OFFSETDATA1

MOVBX,05

CALLDISPL

CRLF

MOVDI,OFFSETDATA2

CALLADDA

MOVSI,OFFSETDATA1

MOVBX,05

CALLDISPL

CRLF

MOVAX,4C00H

INT21H

DISPLPROCNEAR

DS1:

MOVAH,02

MOVDL,[SI+BX-1]

INT21H

DECBX

JNZDS1

RET

DISPLENDP

ADDAPROCNEAR

MOVDX,SI

MOVBP,DI

MOVBX,05

AD1:

SUBBYTEPTR[SI+BX-1],30H

SUBBYTEPTR[DI+BX-1],30H

DECBX

JNZAD1

MOVSI,DX

MOVDI,BP

MOVCX,05

CLC

AD2:

MOVAL,[SI]

MOVBL,[DI]

ADCAL,BL

AAA

MOV[SI],AL

INCSI

INCDI

LOOPAD2

MOVSI,DX

MOVDI,BP

MOVBX,05

AD3:

ADDBYTEPTR[SI+BX-1],30H

ADDBYTEPTR[DI+BX-1],30H

DECBX

JNZAD3

RET

ADDAENDP

CODEENDS

ENDSTART

五、实验要求

1.读懂源程序,写出源程序注释。

2.把源程序修改为任意两个六位十进制相加。

并思考如果最高位有进位怎么办?

实验二两个数相乘的实验

一、实验目的

掌握乘法指令和循环指令的用法。

二、实验内容

实现十进制数的乘法。

被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。

三、程序框图

乘数→BL

BL中数由ASCII码转化为十六进制

SI指向被乘数

计数值5→CX

取被乘数[SI]单元与BL相乘

AAM调整

结果低位与前次计算的进位[DI]相加

AAA调整

结果→[DI]

DI+1指向下一单元

本次计算的进位→[DI]

N

CX-1=0?

Y

显示结果

结束

 

四、程序清单

DATASEGMENT

DATA1DB32H,39H,30H,35H,34H

DATA2DB33H

RESULTDB6DUP(00H)

DATAENDS

STACKSEGMENT

STADB20DUP(?

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,TOP

MOVSP,AX

MOVSI,OFFSETDATA2

MOVBL,[SI]

ANDBL,00001111B

MOVSI,OFFSETDATA1

MOVDI,OFFESTRESULT

MOVCX,05

LOOP1:

MOVAL,[SI]

ANDAL,00001111B

INCSI

MULBL

AAM

ADDAL,[DI]

AAA

MOV[DI],AL

INCDI

MOV[DI],AH

LOOPLOOP1

MOVCX,06

MOVSI,OFFSETRESULT

DISPL:

MOVAH,02

MOVDL,[SI+5]

ADDDL,30H

INT21H

DECSI

LOOPDISPL

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五、实验要求

1.读懂程序,写出程序注释。

2.修改程序,实现6位数乘2位数的功能。

 

实验三BCD码相乘的实验

一、实验目的

掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。

二、实验内容

实现BCD码的乘法,要求被乘数和乘数均以组合的BCD码形式存放,各占一个内存单元,乘积存放在另外两个内存单元中。

由于没有组合BCD码乘法指令,所以程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。

三、程序框图

显示乘数1和乘数2

乘数1→计数器BL中

部分积DX清0

Y

BL=0?

N

进位位清0

显示结果

乘数2与部分积低位相加

结束

DAA调整

结果→DL

部分积高位进行进位位调整

DAA调整

结果→DH

计数器BL的值减1

DAS调整,并将结果送BL

四、程序清单

DISPLMACRO

ADDDL,30H

MOVAH,02

INT21H

ENDM

CRLFMACRO

MOVDL,0DH

MOVAH,02

INT21H

MOVDL,0AH

MOVAH,02

INT21H

ENDM

DATASEGMENT

DATA1DB01001000B

DATA2DB01110101B

RESULTDW?

DATAENDS

STACKSEGMENTSTACK

STADB20DUP(?

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,TOP

MOVSP,AX

MOVDI,OFFSETRESULT

MOVSI,OFFSETDATA1

MOVAH,[SI]

MOVCL,04

SHRAH,CL

MOVDL,AH

DISPL

MOVAL,[SI]

MOVBL,AL

ANDAL,00001111B

MOVDL,AL

DISPL

CRLF

MOVSI,OFFSETDATA2

MOVAH,[SI]

MOVCL,04

SHRAH,CL

MOVDL,AH

DISPL

MOVAL,[SI]

ANDAL,00001111B

MOVDL,AL

DISPL

CRLF

XORDX,DX

S1:

CMPBL,0

JZS2

CLC

MOVAL,[SI]

ADCAL,DL

DAA

MOVDL,AL

MOVAL,00H

ADCAL,DH

DAA

MOVDH,AL

MOVAL,BL

DECAL

DAS

MOVBL,AL

JMPS1

S2:

MOV[RESULT],DX

MOVSI,DX

MOVCL,4

SHRDH,CL

MOVDL,DH

DISPL

MOVDX,SI

ANDDH,00001111B

MOVDL,DH

DISPL

MOVDX,SI

MOVCL,4

SHRDL,CL

DISPL

MOVDX,SI

ANDDL,00001111B

DISPL

CRLF

S3:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五、实验要求

1.读懂源程序,写出程序注释。

2.修改程序使其不显示被乘数和乘数。

 

实验四字符匹配程序

一、实验目的

掌握提示信息的使用方法及键盘输入信息的用法。

二、实验内容

编写程序,实现两个字符串比较。

如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NOMATCH”。

三、程序框图

段寄存器及堆栈初始化

显示“请输入字符串1”

使用INT21H的0A号子功能,

接收键入的字符串

显示“请输入字符串2”

指针SI指向串1的首字符

SI指向的字符串和串2中所有字符作比较

Y

相等?

N

SI+1,指向串1中下一字符

N

串1中的字符已取完?

Y

显示“NOMATCH”显示“MATCH”

返回DOS

 

四、程序清单

CRLFMACRO

MOVAH,02H

MOVDL,0DH

INT21H

MOVAH,02H

MOVDL,0AH

INT21H

ENDM

DATASEGMENT

MESS1DB'MATCH',0DH,0AH,'$'

MESS2DB'NOMATCH',0DH,0AH,'$'

MESS3DB'INPUTSTRING1:

',0DH,0AH,'$'

MESS4DB'INPUTSTRING2:

',0DH,0AH,'$'

MAXLEN1DB81

ACTLEN1DB?

STRING1DB81DUP(?

MAXLEN2DB81

ACTLEN2DB?

STRING2DB81DUP(?

DATAENDS

STACKSEGMENTSTACK

STADB50DUP(?

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

MOVSP,TOP

MOVAH,09H

MOVDX,OFFSETMESS3

INT21H

MOVAH,0AH

MOVDX,OFFSETMAXLEN1

INT21H

CRLF

MOVAH,09H

MOVDX,OFFSETMESS4

INT21H

MOVAH,0AH

MOVDX,OFFSETMAXLEN2

INT21H

CRLF

CLD

MOVSI,OFFSETSTRING1

MOVCL,[SI-1]

MOVCH,00H

KKK:

MOVDI,OFFSETSTRING2

PUSHCX

MOVCL,[DI-1]

MOVCH,00H

MOVAL,[SI]

MOVDX,DI

REPNZSCASB

JZGGG

INCSI

POPCX

LOOPKKK

MOVAH,09H

MOVDX,OFFSETMESS2

INT21H

JMPPPP

GGG:

MOVAH,09H

MOVDX,OFFSETMESS1

INT21H

PPP:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五、实验要求

1.读懂源程序,写出程序注释。

2.修改源程序,使其实现,当两个字符串中所有字符都匹配(注意字符串的长度和顺序)时才显示“MATCH”,否则显示“NOMATCH”。

 

实验五排序实验

一、实验目的

掌握用汇编语言编写排序程序的思路和方法。

二、实验内容

从首地址为1000H开始存放50个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在该区域中。

三、程序框图

入口

段寄存器和堆栈初始化

显示“请输入段址”

调GETNUM,键入段址送ES

显示“请输入偏移量”

调GETNUM,键入偏移量SI

DS也指向附加段

外循环次数SORTNUM-1送CX

偏移指针BX清0

A

从[SI+BX]单元取数AL

交换单元指针AH=BL

CX入栈

计算内循环次数送CX

内循环控制变量DX初始化

 

DX值+1

比较AL与DX指示单元的值

N

AL较大?

Y

DX指示单元的值赋给AL,并修改指针AH

N

CX-1=0?

Y

交换[SI+BX]单元和AH指针指示的单元的值

偏移指针BX+1

CX出栈

N

ACX-1=0?

Y

显示“SORTOK!

循环调DISP1,将排序后的数依次显示出来

返回DOS

四、程序清单

CRLFMACRO

MOVAH,02H

MOVDL,0DH

INT21H

MOVAH,02H

MOVDL,0AH

INT21H

ENDM

DATASEGMENT

ORG160H

DATA1DB0ah,09h,08h,07h,06h,05h,04h,03h,02h,01h

SORTNUMEQU10

MESS1DB'INPUTSEGMENTVALUE:

$'

MESS2DB'INPUTOFFSETVALUE:

$'

MESS3DB'SORTOK!

',0DH,0AH,'$'

ERRORDB'INPUTERROR!

',0DH,0AH,'$'

DATAENDS

STACKSEGMENT

STADW32DUP(?

TOPDW?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVSP,TOP

MOVAH,09H

MOVDX,OFFSETMESS1

INT21H

CALLGETNUM

MOVES,DX

CRLF

MOVAH,09H

MOVDX,OFFSETMESS2

INT21H

CALLGETNUM

MOVSI,DX

PUSHES

POPDS;DS=ES

MOVCX,SORTNUM

DECCX

XORBX,BX

III:

MOVAL,[SI+BX]

MOVAH,BL

PUSHCX

MOVCX,SORTNUM

SUBCX,BX

DECCX

MOVDX,BX

JJJ:

INCDX

PUSHBX

MOVBX,DX

CMPAL,[SI+BX]

JBEUUU

MOVAL,[SI+BX]

MOVAH,DL

UUU:

POPBX

LOOPJJJ

MOVCL,[SI+BX]

MOV[SI+BX],AL

MOVDL,AH

PUSHBX

MOVBX,DX

MOV[SI+BX],CL

POPBX

INCBX

POPCX

LOOPIII

PUSHDS

MOVAX,DATA

MOVDS,AX

MOVAH,09H

MOVDX,OFFSETMESS3

INT21H

POPDS

MOVCX,SORTNUM

VVV:

MOVAL,[SI]

CALLDISP1

CRLF

INCSI

LOOPVVV

MOVAX,4C00H

INT21H

DISP1PROCNEAR

PUSHCX

MOVBL,AL

MOVDL,BL

MOVCL,04

ROLDL,CL

ANDDL,0FH

CALLDISPL

MOVDL,BL

ANDDL,0FH

CALLDISPL

POPCX

RET

DISP1ENDP

DISPLPROCNEAR

ADDDL,30H

CMPDL,3AH

JBDDD

ADDDL,27H

DDD:

MOVAH,02H

INT21H

RET

DISPLENDP

GETNUMPROCNEAR

PUSHCX

XORDX,DX

GGG:

MOVAH,01H

INT21H

CMPAL,0DH

JZPPP

CMPAL,20H

JZPPP

SUBAL,30H

JBKKK

CMPAL,0AH

JBGETS

CMPAL,11H

JBKKK

SUBAL,07H

CMPAL,0FH

JBEGETS

CMPAL,2AH

JBKKK

CMPAL,2FH

JAKKK

SUBAL,20H

GETS:

MOVCL,04

SHLDX,CL

XORAH,AH

ADDDX,AX

JMPGGG

KKK:

MOVAH,09H

MOVDX,OFFSETERROR

INT21H

PPP:

PUSHDX

CRLF

POPDX

POPCX

RET

GETNUMENDP

CODEENDS

ENDSTART

五、实验要求

1.读懂程序,写出程序注释。

2.修改程序,使其实现从大到小的排序

 

实验六接收年、月、日信息显示的程序

一、实验目的

掌握响铃符方法,并且掌握年、月、日的输入方法。

二、实验内容

先显示“WHATISTHEDATA(MM/DD/YY)?

”并响铃一次,然后接收键盘输入的月/日/年信息,并显示。

三、程序框图

入口

段寄存器和堆栈初始化

显示“WHATISTHEDATA”

输出响铃字符

调GETNUM,接收键入的月值,日值及年值

调DISP显示年值

输出字符“—”

调DISP显示月值

输出字符“—”

调DISP显示日值

返回DOS

四、程序清单

CRLFMACRO

MOVAH,02H

MOVDL,0DH

INT21H

MOVAH,02H

MOVDL,0AH

INT21H

ENDM

DATASEGMENT

MESSDB'WHATISTHEDATA(MM/DD/YY)?

',0DH,0AH,'$'

ERRORDB'INPUTERROR!

',0DH,0AH,'$'

DATAENDS

STACKSEGMENT

STADW32DUP(?

TOPDW?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVSP,TOP

MOVAH,09H

MOVDX,OFFSETMESS

INT21H

MOVAH,02H

MOVDL,07H

INT21H

CALLGETNUM

PUSHDX

CALLGETNUM

PUSHDX

CALLGETNUM

MOVAX,DX

CALLDISP

MOVAH,02H

MOVDL,’–’

INT21H

POPDX

POPAX

CALLDISPP

MOVAH,02H

MOVDL,’–’

INT21H

MOV

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

当前位置:首页 > 初中教育 > 语文

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

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