微机原理与接口技术软件试验报告.docx
- 文档编号:19438149
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:18
- 大小:22.95KB
微机原理与接口技术软件试验报告.docx
《微机原理与接口技术软件试验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术软件试验报告.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术软件试验报告
微机原理与接口技术软件试验报告
一.目的
1.进一步掌握子程序的设计
2.进一步掌握分支程序的设计
3.掌握循环程序的设计;
4.掌握中断程序设计方法;
5.练习数据格式的转换;
6.使用DEBUG调试复杂程序;
3.掌握使用DOS系统功能调用进行输入/输出.
二.内容
设计一个除法器。
被除数可以为任意一个16位带符号十进制数,除数可为任意一个8位带符号十进制数.
三.作业要求
1.利用DOS1号功能调用,顺序从键盘输入被除数、除运算符“/”及除数与回车.要求:
✓输入的数若为负数,则前面应冠以“-”号,如-65;
✓输入时若出现以下任一种情况,则显示“Inputerror!
”(之后程序须提示重新输入):
⏹输入的被除数在范围
之外.
⏹被除数之后紧跟的不是除运算符“/”.
⏹输入的除数在范围
之外.
2.若正确输入,则屏幕应显示除法运算的结果,即商及余数.
例如若输入:
56/9
则屏幕下一行应显示:
56/9=6,remainder=2.
此时,如果所输入的除数值为(你所在班级的最后两位数字+你在该班内的班内序号),则程序显示完运算结果后结束并返回DOS.否则,如果程序开始运行以来已连续5次进行了正确的输入并给出结果,则程序结束并返回DOS;否则程序继续提示输入.
3.如果被除数为0,则显示错误信息:
“Dividedby0!
”,之后立即返回DOS.
4.除法运算操作须使用除法指令IDIV(除数为0时可以例外),当结果(商)超出范围
时,显示错误信息:
“Overflow!
”,之后立即返回DOS.
***注:
应通过是否引起0号中断来判断除法运算是否溢出,且0号除法溢出中断服务程序必须放在代码段偏移地址为0100H开始的地方.
5.显示运算结果的商或余数前,必须先进行带符号补码表示的数到对应的十进制ASCII码数字串的转换.该转换工作必须写成一个子程序,且该子程序有如下要求:
;子程序功能:
将一个(字节)带符号补码表示的数转换成对应的十进制ASCII码数字串,并以'$'结束
;入口参数:
AL=待转换的带符号数(一个字节长,最高位为符号位)
;出口参数:
DI=存放相应结果ASCII码串的首地址
;例如:
若入口参数AL=93H,则子程序返回时,DS:
DI所指处将存有如下字符串:
'-109$'.
注:
该作业必须最迟在实验验收前一周上交.
四.实验要求
(现场演示,程序编辑除外)
1.编辑前述作业三完成的8086汇编源程序,然后进行汇编及连接以生成可执行文件.
2.执行程序,演示如下各种输入情况:
(a)被除数与除数均为正数
(b)被除数与除数均为负数
(c)被除数与除数的符号位不同
(d)输入如下特殊情况:
-128/1;12345/11;23/0;1134/127;1145/128;32768/12345;-32769/126.
(e)输入的除数值为:
你所在班级的最后两位数字+你在该班内的班内序号.
3.调用DEBUG软件对该可执行文件进行调试,并顺序完成如下所提要求或回答相关问题:
(a)设置相关断点,在输入完被除数并转换成等效的带符号二进制数后停下,指出所输入的被除数存放位置.
(b)设置相关断点,在输入完除数并转换成等效的带符号二进制数后停下,指出所输入的除数存放位置.
(c)设置相关断点,在执行除法运算指令IDIV之前停下,解释当前堆栈内容.
(d)输入合适的被除数与除数以便能引起0号除法溢出中断,在执行到溢出中断服务程序的第一条指令前停下,检查并解释当前堆栈内容.
DATASEGMENT
input1DB50DUP(?
)
input2DB50DUP(?
)
COUNT1DB?
;计算被除数负号输入次数
COUNT2DB?
;计算除数负号输入次数
COUNTDB?
;计算/输入次数
C5DB?
;5次
SUM1DW?
;存放被除数的大小
SUM2DB?
;存放除数的大小
cbeiDW?
;被除数位数
cchuDW?
;除数位数
f1DB?
;bei
f2DB?
;-
f3DB?
;chu
YICHUDB?
;溢出标志位
CZDB?
;位数
SEGDATADW?
OFFDATADW?
STRING1DB'Inputerror!
',0DH,0AH,'$'
STRING2DB0DH,0AH,'Dividedby0!
',0DH,0AH,'$'
STRING3DB0DH,0AH,'Overflow!
',0DH,0AH,'$'
STRING4DB'Pleaseinputagain!
',0DH,0AH,'$'
STRING5DB0DH,0AH,'OVER',0DH,0AH,'$'
STRSHOWDB40DUP('$')
STRINDB50DUP('$')
STRHELPDB0DH,0AH,'$';换行
STRHELP1DB',remainder=','$'
STR5DB'Times=5','$'
DATAENDS
STACKSEGMENTSTACK'STACK'
DB1000DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
ORG100H
INT00PROCFAR
POPCX
ADDCX,2
PUSHCX
MOVSEGDATA,SEGSTRING3
MOVOFFDATA,OFFSETSTRING3
CALLFARPTRDISP
MOVYICHU,1
IRET
INT00ENDP
DISPPROCFAR;显示子程序
PUSHAX
PUSHDX
PUSHDS
MOVAH,09H;显示字符串
MOVDX,SEGDATA
MOVDS,DX
MOVDX,OFFDATA
INT21H
POPDS
POPDX
POPAX
RET
DISPENDP
SHOWPROCFAR
MOVCZ,0
MOVDI,OFFSETSTRSHOW
CMPAL,0
BJ1:
JSBJ3
JNSBJ4
BJ3:
JNOFU;最高位是1,次高位是1
JOZHENG;最高位是1,次高位是0
BJ4:
JOFU;最高位是0,次高位是1
JMPZHENG;最高位是0,次高位是0
FU:
NEGAL;负数的绝对值
PUSHDX
MOVDL,2DH;-号
MOV[DI],DL
POPDX
INCDI
ZHENG:
MOVAH,0
MOVBL,0AH
DIVBL;AL...AH
MOVDH,AH
MOVDL,0
ADDDH,30H
PUSHDX
INCCZ
CMPAL,0;若商为不零,继续重复
JNZZHENG
MOVCL,CZ
MOVCH,0
LOOP10:
POPDX
MOV[DI],DH
INCDI
LOOPLOOP10
PUSHDX
MOVDL,24H
MOV[DI],DL
POPDX
RET
SHOWENDP
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVC5,5H
LOOPA:
MOVCOUNT1,1
MOVCOUNT2,1
MOVCOUNT,1
MOVSUM1,0
MOVSUM2,0
MOVf1,1;bei
MOVf2,1;-
MOVf3,1;chu
MOVSI,OFFSETinput1
MOVDI,OFFSETinput2
MOVcbei,0
MOVcchu,0
MOVYICHU,0
MOVBX,OFFSETSTRIN
INPUT:
MOVAH,1
INT21H
CMPAL,1BH;检测是否按下ESC退出键
JNZA1
JMPOUTALL2
A1:
CMPAL,2DH;若不是-号,跳到A
JNZA
;-号的处理
CMPf1,1
JZG
CMPf2,0
JZD
E:
MOVSEGDATA,SEGSTRHELP
MOVOFFDATA,OFFSETSTRHELP
CALLDISP
MOVSEGDATA,SEGSTRING1
MOVOFFDATA,OFFSETSTRING1
CALLDISP
MOVSEGDATA,SEGSTRING4
MOVOFFDATA,OFFSETSTRING4
CALLDISP
JMPSTART
G:
CMPCOUNT1,1;被除数是否只有一个-
JNZE
DECCOUNT1
MOV[BX],AL
INCBX
JMPINPUT
D:
CMPf3,1
JNZE
CMPCOUNT2,1;000
JNZE
DECCOUNT2
MOV[BX],AL
INCBX
JMPINPUT
E3:
JMPE
A:
CMPAL,2FH;若不是/号,跳到B
JNZB
;/的处理
CMPf1,0
JNZE3
CMPf2,1
JNZE3
CMPf3,1
JNZE3
CMPCOUNT,1
JNZE3
DECCOUNT
DECf2
MOV[BX],AL
INCBX
JMPINPUT
B:
CMPAL,0DH;若不是回车,跳到F
JNZF
;回车的处理
CMPf1,0
JNZE2
CMPf2,0
JNZE2
CMPf3,0
JNZE2
PUSHDX
MOVDL,3DH;=号
MOV[BX],DL
INCBX
MOVDL,24H;$
MOV[BX],DL
POPDX
JMPOUT1
F:
CMPAL,30H;判断输入的是不是数字
JLE2
CMPAL,39H
JGE2
CMPf2,1
JNZchushu
beichu:
MOVf1,0
MOV[SI],AL
INCSI
MOV[BX],AL;
INCBX
INCcbei
JMPINPUT
chushu:
MOVf3,0
MOV[DI],AL
INCDI
MOV[BX],AL
INCBX
INCcchu
JMPINPUT
;JMPOUT1
E2:
JMPE3
OUT1:
CMPcbei,5
JGE2
JLI;被除数小于5位,在合理范围内,跳到I
H:
MOVSI,OFFSETinput1;输入的被除数是5位
MOVAL,[SI]
SUBAL,30H
CMPAL,3;判断5位被除数是否超出范围
JGE2
JLI
MOVAL,[SI+1]
SUBAL,30H
CMPAL,2
JGE2
JLI
MOVAL,[SI+2]
SUBAL,30H
CMPAL,7
JGE2
JLI
MOVAL,[SI+3]
SUBAL,30H
CMPAL,6
JGE2
JLI
MOVAL,[SI+4]
SUBAL,30H
CMPAL,7
JLEI
CMPAL,8
JGE2
CMPCOUNT1,0
JNZE2
I:
CMPcchu,3
JGE1
JLJ;除数小于3位,在合理范围内,跳到J
MOVDI,OFFSETinput2;输入的除数是3位
MOVAL,[DI]
SUBAL,30H
CMPAL,1;判断3位除数是否超出范围
JGE1
JLJ
MOVAL,[DI+1]
SUBAL,30H
CMPAL,2
JGE1
JLJ
MOVAL,[DI+2]
SUBAL,30H
CMPAL,7
JLEJ
CMPAL,8
JGE1
CMPCOUNT2,0
JNZE1
JZJ
E1:
JMPE2
J:
MOVCX,cbei
MOVSI,OFFSETinput1
LOOP1:
MOVBL,[SI];求出输入被除数的值
SUBBL,30H
MOVBH,0
MOVAX,SUM1
PUSHCX
MOVCL,3
SHLAX,CL
SHLSUM1,1
ADDSUM1,AX
ADDSUM1,BX
POPCX
INCSI
LOOPLOOP1
;CMPSUM1,0
;JZOUT0
MOVCX,cchu
MOVDI,OFFSETinput2
LOOP2:
MOVBL,[DI];求出输入除数的值
SUBBL,30H
MOVAH,SUM2
PUSHCX
MOVCL,3
SHLAH,CL
SHLSUM2,1
ADDSUM2,AH
ADDSUM2,BL
POPCX
INCDI
LOOPLOOP2
CMPSUM2,0;除数为零时,显示“Dividedby0!
”
JZOUT0
JMPOUTDOS
OUT0:
MOVSEGDATA,SEGSTRING2
MOVOFFDATA,OFFSETSTRING2
CALLDISP
JMPOUTALL
OUTDOS:
CMPCOUNT1,0
JNZK;被除数为正数
NEGSUM1;被除数为负数,求补
K:
CMPCOUNT2,0
JNZL;除数为正数
NEGSUM2;除数为负数,求补
L:
STI;允许中断
MOVAL,0
MOVAH,35H
INT21H
PUSHES
PUSHBX
PUSHDS
MOVAX,SEGINT00
MOVDS,AX
MOVDX,OFFSETINT00
MOVAL,0
MOVAH,25H
INT21H
POPDS
MOVAX,SUM1;计算出商和余数
MOVBL,SUM2
IDIVBL;AL?
?
?
AH
POPDX
POPCX
PUSHDS
PUSHAX
MOVDS,CX
MOVAL,0
MOVAH,25H
INT21H
POPAX
POPDS
CMPYICHU,1
JZOUTALL1
MOVSEGDATA,SEGSTRHELP
MOVOFFDATA,OFFSETSTRHELP
CALLDISP
MOVSEGDATA,SEGSTRIN
MOVOFFDATA,OFFSETSTRIN
CALLDISP
PUSHAX;显示商
CALLSHOW
POPAX
MOVSEGDATA,SEGSTRSHOW
MOVOFFDATA,OFFSETSTRSHOW
CALLDISP
MOVSEGDATA,SEGSTRHELP1
MOVOFFDATA,OFFSETSTRHELP1
CALLDISP
PUSHAX
MOVAL,AH;显示余数
CALLSHOW
POPAX
JMPY
OUTALL1:
JMPOUTALL
Y:
MOVSEGDATA,SEGSTRSHOW
MOVOFFDATA,OFFSETSTRSHOW
CALLDISP
CMPSUM2,32H;若输入的除数为50,则返回DOS
JZOUTALL
MOVSEGDATA,SEGSTRHELP
MOVOFFDATA,OFFSETSTRHELP
CALLDISP
DECC5
CMPC5,0
JZT5
JMPLOOPA
T5:
MOVSEGDATA,SEGSTR5
MOVOFFDATA,OFFSETSTR5
CALLDISP
JMPOUTALL
OUTALL2:
MOVSEGDATA,SEGSTRING5
MOVOFFDATA,OFFSETSTRING5
CALLDISP
OUTALL:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 软件 试验报告
![提示](https://static.bdocx.com/images/bang_tan.gif)