微机原理实验指导书Word文档下载推荐.docx
- 文档编号:3171924
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:51
- 大小:266.29KB
微机原理实验指导书Word文档下载推荐.docx
《微机原理实验指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书Word文档下载推荐.docx(51页珍藏版)》请在冰点文库上搜索。
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
MOVDI,OFFSETDATA2
CALLADDA
MOVAX,4C00H
DISPLPROCNEAR
DS1:
MOVAH,02
MOVDL,[SI+BX-1]
DECBX
JNZDS1
RET
DISPLENDP
ADDAPROCNEAR
MOVDX,SI
MOVBP,DI
AD1:
SUBBYTEPTR[SI+BX-1],30H
SUBBYTEPTR[DI+BX-1],30H
JNZAD1
MOVSI,DX
MOVDI,BP
MOVCX,05
CLC
AD2:
MOVAL,[SI]
MOVBL,[DI]
ADCAL,BL
AAA
MOV[SI],AL
INCSI
INCDI
LOOPAD2
AD3:
ADDBYTEPTR[SI+BX-1],30H
ADDBYTEPTR[DI+BX-1],30H
JNZAD3
ADDAENDP
CODEENDS
ENDSTART
五、实验要求
1.读懂源程序,写出源程序注释。
2.把源程序修改为任意两个六位十进制相加。
并思考如果最高位有进位怎么办?
实验二两个数相乘的实验
掌握乘法指令和循环指令的用法。
实现十进制数的乘法。
被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。
乘数→BL
BL中数由ASCII码转化为十六进制
SI指向被乘数
计数值5→CX
取被乘数[SI]单元与BL相乘
AAM调整
结果低位与前次计算的进位[DI]相加
结果→[DI]
DI+1指向下一单元
本次计算的进位→[DI]
N
Y
结束
DATASEGMENT
DATA1DB32H,39H,30H,35H,34H
DATA2DB33H
RESULTDB6DUP(00H)
DATAENDS
STACKSEGMENT
STADB20DUP(?
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
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
CODEENDS
ENDSTART
1.读懂程序,写出程序注释。
2.修改程序,实现6位数乘2位数的功能。
实验三BCD码相乘的实验
一、实验目的
掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。
二、实验内容
实现BCD码的乘法,要求被乘数和乘数均以组合的BCD码形式存放,各占一个内存单元,乘积存放在另外两个内存单元中。
由于没有组合BCD码乘法指令,所以程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。
三、程序框图
显示乘数1和乘数2
乘数1→计数器BL中
部分积DX清0
BL=0?
N
进位位清0
显示结果
乘数2与部分积低位相加
结束
DAA调整
结果→DL
部分积高位进行进位位调整
DAA调整
结果→DH
计数器BL的值减1
DAS调整,并将结果送BL
四、程序清单
DISPLMACRO
ADDDL,30H
MOVAH,02
ENDM
MOVDL,0DH
MOVAH,02
INT21H
DATASEGMENT
DATA1DB01001000B
DATA2DB01110101B
RESULTDW?
DATAENDS
STACKSEGMENTSTACK
STADB20DUP(?
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
MOVDS,AX
MOVDI,OFFSETRESULT
MOVSI,OFFSETDATA1
MOVAH,[SI]
MOVCL,04
SHRAH,CL
MOVDL,AH
DISPL
MOVBL,AL
ANDAL,00001111B
MOVDL,AL
MOVSI,OFFSETDATA2
SHRAH,CL
MOVAL,[SI]
XORDX,DX
S1:
CMPBL,0
JZS2
CLC
MOVAL,[SI]
ADCAL,DL
DAA
MOVAL,00H
ADCAL,DH
MOVDH,AL
MOVAL,BL
DECAL
DAS
JMPS1
S2:
MOV[RESULT],DX
MOVSI,DX
MOVCL,4
SHRDH,CL
MOVDL,DH
ANDDH,00001111B
SHRDL,CL
ANDDL,00001111B
S3:
CODEENDS
ENDSTART
五、实验要求
1.读懂源程序,写出程序注释。
2.修改程序使其不显示被乘数和乘数。
实验四字符匹配程序
掌握提示信息的使用方法及键盘输入信息的用法。
编写程序,实现两个字符串比较。
如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NOMATCH”。
段寄存器及堆栈初始化
显示“请输入字符串1”
使用INT21H的0A号子功能,
接收键入的字符串
显示“请输入字符串2”
指针SI指向串1的首字符
SI指向的字符串和串2中所有字符作比较
Y
相等?
SI+1,指向串1中下一字符
串1中的字符已取完?
Y
显示“NOMATCH”显示“MATCH”
返回DOS
CRLFMACRO
MOVDL,0AH
DATASEGMENT
MESS1DB'
MATCH'
,0DH,0AH,'
$'
MESS2DB'
NOMATCH'
MESS3DB'
INPUTSTRING1:
'
MESS4DB'
INPUTSTRING2:
MAXLEN1DB81
ACTLEN1DB?
STRING1DB81DUP(?
MAXLEN2DB81
ACTLEN2DB?
STRING2DB81DUP(?
STADB50DUP(?
TOPEQULENGTHSTA
STACKENDS
DATA,ES:
STACK
MOVAX,DATA
MOVES,AX
MOVSP,TOP
MOVAH,09H
MOVDX,OFFSETMESS3
MOVAH,0AH
MOVDX,OFFSETMAXLEN1
MOVAH,09H
MOVDX,OFFSETMESS4
MOVDX,OFFSETMAXLEN2
CLD
MOVSI,OFFSETSTRING1
MOVCL,[SI-1]
MOVCH,00H
KKK:
MOVDI,OFFSETSTRING2
PUSHCX
MOVCL,[DI-1]
MOVCH,00H
MOVDX,DI
REPNZSCASB
JZGGG
POPCX
LOOPKKK
MOVDX,OFFSETMESS2
JMPPPP
GGG:
MOVDX,OFFSETMESS1
PPP:
MOVAX,4C00H
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指示单元的值
AL较大?
DX指示单元的值赋给AL,并修改指针AH
CX-1=0?
交换[SI+BX]单元和AH指针指示的单元的值
偏移指针BX+1
CX出栈
ACX-1=0?
显示“SORTOK!
”
循环调DISP1,将排序后的数依次显示出来
MOVDL,0DH
ENDM
ORG160H
DATA1DB0ah,09h,08h,07h,06h,05h,04h,03h,02h,01h
SORTNUMEQU10
INPUTSEGMENTVALUE:
INPUTOFFSETVALUE:
SORTOK!
ERRORDB'
INPUTERROR!
STACKSEGMENT
STADW32DUP(?
)
TOPDW?
MOVDX,OFFSETMESS1
CALLGETNUM
MOVES,DX
PUSHES
POPDS;
DS=ES
MOVCX,SORTNUM
DECCX
XORBX,BX
III:
MOVAL,[SI+BX]
MOVAH,BL
PUSHCX
SUBCX,BX
MOVDX,BX
JJJ:
INCDX
PUSHBX
MOVBX,DX
CMPAL,[SI+BX]
JBEUUU
MOVAH,DL
UUU:
POPBX
LOOPJJJ
MOVCL,[SI+BX]
MOV[SI+BX],AL
PUSHBX
MOVBX,DX
MOV[SI+BX],CL
POPBX
INCBX
LOOPIII
PUSHDS
POPDS
VVV:
CALLDISP1
LOOPVVV
DISP1PROCNEAR
MOVDL,BL
ROLDL,CL
ANDDL,0FH
MOVDL,BL
ANDDL,0FH
DISP1ENDP
DISPLPROCNEAR
ADDDL,30H
CMPDL,3AH
JBDDD
ADDDL,27H
DDD:
MOVAH,02H
RET
DISPLENDP
GETNUMPROCNEAR
MOVAH,01H
CMPAL,0DH
JZPPP
CMPAL,20H
SUBAL,30H
JBKKK
CMPAL,0AH
JBGETS
CMPAL,11H
SUBAL,07H
CMPAL,0FH
JBEGETS
CMPAL,2AH
CMPAL,2FH
JAKKK
SUBAL,20H
GETS:
SHLDX,CL
XORAH,AH
ADDDX,AX
JMPGGG
MOVDX,OFFSETERROR
PUSHDX
POPDX
GETNUMENDP
1.读懂程序,写出程序注释。
2.修改程序,使其实现从大到小的排序
实验六接收年、月、日信息显示的程序
掌握响铃符方法,并且掌握年、月、日的输入方法。
先显示“WHATISTHEDATA(MM/DD/YY)?
”并响铃一次,然后接收键盘输入的月/日/年信息,并显示。
入口
段寄存器和堆栈初始化
显示“WHATISTHEDATA”
输出响铃字符
调GETNUM,接收键入的月值,日值及年值
调DISP显示年值
输出字符“—”
调DISP显示月值
调DISP显示日值
返回DOS
CRLFMACRO
MOVAH,02H
MOVDL,0DH
INT21H
MOVDL,0AH
MESSDB'
WHATISTHEDATA(MM/DD/YY)?
ERRORDB'
STADW32DUP(?
TOPDW?
MOVES,AX
MOVSP,TOP
MOVAH,09H
MOVDX,OFFSETMESS
MOVDL,07H
CALLGETNUM
PUSHDX
MOVAX,DX
CALLDISP
MOVDL,’–’
POPDX
POPAX
CALLDISPP
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书