微机原理及应用实验报告.docx
- 文档编号:8685385
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:12
- 大小:17.23KB
微机原理及应用实验报告.docx
《微机原理及应用实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理及应用实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
微机原理及应用实验报告
实验时间:
2011/5/25
地点:
宿舍
人员:
(627)
一、实验目的
(1)熟悉指令系统,加强三种基本程序结构的训练;
(2)会采用过程或宏完成子功能,并理解过程或宏的执行。
二、实验设备与软件
硬件:
PC机一台;软件:
EMU8086或MASMforwindows。
三、实验内容
实现分别按提示从键盘输入A,B,D三个数并要求回显,三个数据分别都是有符号的字数据,然后对其进行((A*B)+D)/A=?
运算,结果存放在S里面,最后显示出计算结果。
四、实验方案
该程序可分为四大板块,第一个板块由宏实现由键盘输入A,B,D的值;第二个板块由宏实现回显A,B,D的功能;第三个板块由宏实现对输入的字符串A,B,D转换成二进制数;第四个板块是实现((A*B)+D)/A=?
的运算,结果存放在S里面。
第五个板块是实现S由高到底逐位转换成ASCII码值并显示。
五、程序如下:
实验遵循由潜入深的过程,首先编写的无符号数的
;*********定义一个输入数据的宏*********
INPUTMACRONUM
LEADX,NUM
MOVAH,0AH
INT21H
MOVDL,AH
MOVAH,02H
INT21H
ENDM
;********定义一个显示输入提示的宏*********
DISPMACROXIAOXI
LEADX,XIAOXI
MOVAH,09H
INT21H
ENDM
;*******定义一个将ASCII码转换为二进制的宏*****
CHANGEMACROASCD,BUF
LOCALNEXT,EXIT
LEASI,ASCD
XORBX,BX
MOVBL,BUF[1]
;CMPBL,0
;JZEXIT
NEXT:
MOVAL,[SI+BX-1]
;CMPAL,0
;JBEXIT
;CMPAL,9
;JAEXIT
ANDAX,0FH
MULMULTIPLE
ADDBINAY,AX
MOVAX,MULTIPLE
MULQUAN
MOVMULTIPLE,AX
DECBX
CMPBX,0
JNZNEXT
EXIT:
NOP
ENDM
;*********数据段定义******************
DATASSEGMENT
BUF1DB6,?
ASC1DB6DUP(?
)
BUF2DB6,?
ASC2DB6DUP(?
)
BUF3DB6,?
ASC3DB6DUP(?
)
BINAYDW0
MULTIPLEDW1
QUANDW10
ADW?
BDW?
DDW?
SDW?
mDW?
DISP1DB'A=','$'
DISP2DB0DH,0AH,'B=','$'
DISP3DB0DH,0AH,'D=','$'
DISP4DB0DH,0AH,'S=((A*B)+D)/A=','$'
DATASENDS
;***********代码段定义********************
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
;*********实现第一个数A的输入、回显及转换****
DISPDISP1
INPUTBUF1
CHANGEASC1,BUF1
MOVAX,BINAY
MOVA,AX
;********实现第二个数B的输入、回显及转换*****
DISPDISP2
INPUTBUF2
CHANGEASC2,BUF2
MOVAX,BINAY
MOVB,AX
;********实现第三个数D的输入、回显及转换*****
DISPDISP3
INPUTBUF3
CHANGEASC3,BUF3
MOVAX,BINAY
MOVD,AX
;实现((A*B)+D)/A,并把结果存入S中
MOVAX,A
IMULB
MOVCX,DX
MOVBX,AX
MOVAX,D
CWD
ADDAX,BX
ADCDX,CX
IDIVA
MOVS,AX
DISPDISP4
;实现二进制S转换成十进制,然后输入
XORDX,DX
movax,s
movbx,10000
divbx
MOVM,DX
movDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAX,M
XORDX,DX
MOVBX,1000
DIVBX
MOVM,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAX,M
XORDX,DX
MOVBX,100
DIVBX
MOVM,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
XORAX,AX
MOVAX,M
XORDX,DX
MOVBX,10
DIVBX
MOVM,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAX,M
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
然后在此基础上开始修改为有符号数的程序
;*********定义一个输入数据的宏*********
INPUTMACRONUM
LEADX,NUM
MOVAH,0AH
INT21H
MOVDL,AH
MOVAH,02H
INT21H
ENDM
;********定义一个显示输入提示的宏*********
DISPMACROXIAOXI
LEADX,XIAOXI
MOVAH,09H
INT21H
ENDM
;*******定义一个将ASCII码转换为二进制的宏*****
CHANGEMACROASC
LOCALNEXT,NEXT1,NEXT2,STORE,LP,EXIT
MOVAL,ASC[2];取第一个字符
MOVCL,0;正负标志
XORBX,BX
MOVBL,ASC[1];实际输入的字符串长度
NEXT:
CMPBL,0
JZEXIT
CMPAL,'+'
JNZNEXT1
JMPnext2
NEXT1:
CMPAL,'-'
JNZEXIT
MOVCL,0FFH;置负数标志
jmpnext2
NEXT2:
LEASI,ASC
MOVAL,[BX+SI-1];取字符串的一个字符
CMPAL,'0'
JBEXIT
CMPAL,'9'
JAEXIT
SUBAL,30H
MULMULTIPLE
ADDBINAY,AX
MOVAX,MULTIPLE
MULquan
MOVMULTIPLE,AX
DECBX
CMPBX,0
JNZNEXT2
STORE:
CMPCL,0
JZLP
NEGAX
LP:
MOVBINAY,AX
EXIT:
nop
CHANGEENDM
;*********数据段定义******************
DATASSEGMENT
BUF1DB6,?
6DUP(?
)
BUF2DB6,?
6DUP(?
)
BUF3DB6,?
6DUP(?
)
BINAYDW0
MULTIPLEDW1
ADW?
BDW?
DDW?
SDW?
mDW?
quandw10
DISP1DB'A=','$'
DISP2DB0DH,0AH,'B=','$'
DISP3DB0DH,0AH,'D=','$'
DISP4DB0DH,0AH,'S=((A*B)+D)/A=','$'
DATASENDS
;***********代码段定义********************
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
;*********实现第一个数A的输入、回显及转换****
DISPDISP1
INPUTBUF1
CHANGEBUF1
MOVAX,BINAY
MOVA,AX
;********实现第二个数B的输入、回显及转换*****
DISPDISP2
INPUTBUF2
CHANGEBUF2
MOVAX,BINAY
MOVB,AX
;********实现第三个数D的输入、回显及转换*****
DISPDISP3
INPUTBUF3
CHANGEBUF3
MOVAX,BINAY
MOVD,AX
;实现((A*B)+D)/A,并把结果存入S中
MOVAX,A
IMULB
MOVCX,DX
MOVBX,AX
MOVAX,D
CWD
ADDAX,BX
ADCDX,CX
IDIVA
MOVS,AX
DISPDISP4
;实现二进制S转换成十进制,然后输入
XORDX,DX
movax,s
movbx,10000
divbx
MOVM,DX
movDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAX,M
XORDX,DX
MOVBX,1000
DIVBX
MOVM,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAX,M
XORDX,DX
MOVBX,100
DIVBX
MOVM,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
XORAX,AX
MOVAX,M
XORDX,DX
MOVBX,10
DIVBX
MOVM,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAX,M
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
六、实验总结
通过此程序,我明白了在对调用DOS0A功能输入的时候并须先定义缓冲数据区,从定义区的第三个单元才开始存输入的字符,对后面将字符转换成数的过程,数组下标很重要。
在字符的转换过程中,可以控制下标的变量用循环的方式逐位转换,最后累计得到结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 应用 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)