微机原理大作业代码.docx
- 文档编号:7832858
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:21
- 大小:19.80KB
微机原理大作业代码.docx
《微机原理大作业代码.docx》由会员分享,可在线阅读,更多相关《微机原理大作业代码.docx(21页珍藏版)》请在冰豆网上搜索。
微机原理大作业代码
微机原理与接口技术大作业
一.实验目的
1.掌握汇编语言设计方法。
2.掌握与综合设计的方法与能力。
3.掌握工程实践能力。
二.实验内容
三.具体设计与程序
四.运行结果
五.总结与体会
对这次程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。
通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。
在设计的过程中遇到很多问题这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
四、程序代码
STACKSEGMENTSTACK
DB256DUP(?
)
TOPLABELWORD
STACKENDS
DATASEGMENT
TABLEDWG1,G2,G3,G4,G5
STRING1DB'1.Changesmalllettersintocapitallettersofstring;',0DH,0AH,'$'
STRING2DB'2.Findthemaximumofstring;',0DH,0AH,'$'
STRING3DB'3.Sortfordatas;',0DH,0AH,'$'
STRING4DB'4.ShowTime;',0DH,0AH,'$'
STRING5DB'5.Exit.',0DH,0AH,'$'
STRINGNDB'Inputthenumberyouselect(1-5):
$'
IN_STRDB'Inputthestring(includingletters&numbers,lessthan60letters):
',0DH,0AH,'$'
PRESTRDB'Originalstring:
$'
NEWSTRDB'Newstring:
$'
OUT_STRDB'Thestringis$'
MAXCHRDB'Themaximumis$'
IN_NUMDB'Inputthenumbers(0-255,nomorethan20numbers):
',0DH,0AH,'$'
OUT_NUMDB'Sortednumbers:
',0DH,0AH,'$'
IN_TIMDB'Correctthetime(HH:
MM:
SS):
$'
HINTSTRDB'PressESC,gobacktothemenu;orpressanykeytoplayagain!
$'
KEYBUFDB61
DB?
DB61DUP(?
)
NUMBUFDB?
DB20DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVSP,OFFSETTOP
MAIN:
CALLFARPTRMENU;设置显示器
AGAIN:
MOVAH,2
MOVBH,0;页号
MOVDL,41;列号
MOVDH,10;行号
INT10H;光标位置设置
MOVAH,1
INT21H
CMPAL,'1'
JBAGAIN
CMPAL,'5'
JAAGAIN
SUBAL,'1';N-1
SHLAL,1;(N-1)*2
CBW;AL->AX
LEABX,TABLE
ADDBX,AX
JMPWORDPTR[BX]
G1:
CALLFARPTRCHGLTR
MOVAH,8
INT21H
CMPAL,1BH
JZMAIN
JMPG1
G2:
CALLFARPTRMAXLTR
MOVAH,8
INT21H
CMPAL,1BH
JZMAIN
JMPG2
G3:
CALLFARPTRSORTNUM
MOVAH,8
INT21H
CMPAL,1BH
JZMAIN
JMPG3
G4:
CALLFARPTRTIMCHK
MOVAH,8
INT21H
CMPAL,1BH
JZMAIN
JMPG4
G5:
MOVAH,4CH
INT21H
MENUPROCFAR;显示主界面
;设置显示器方式
MOVAH,0
MOVAL,3;
MOVBL,0;
INT10H;清屏
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,5;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING1
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,6;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING2
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,7;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING3
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,8;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING4
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,9;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRING5
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,10;行号
INT10H;光标位置设置
MOVAH,9
LEADX,STRINGN
INT21H
RET
MENUENDP
CHGLTRPROCFAR;将输入字符串中小写字母便换成大写字母
RECHG:
;设置显示器方式
MOVAH,0
MOVAL,3
MOVBL,0
INT10H;清屏
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,5;行号
INT10H;输入提示光标位置设置
MOVAH,9
LEADX,IN_STR
INT21H;输入字符串提示
MOVAH,2
MOVDL,5;列号
MOVDH,6;行号
INT10H;输入字符串光标位置设置
MOVAH,0AH
LEADX,KEYBUF
INT21H;输入字符串
CMPKEYBUF+1,0
JZRECHG;判断输入字符串是否为空串
LEABX,KEYBUF+2
MOVAL,KEYBUF+1
CBW
MOVCX,AX
ADDBX,AX
MOVBYTEPTR[BX],'$';在输入字符串尾加结束标志$
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,7;行号
INT10H;源字符串提示光标位置设置
MOVAH,9
LEADX,PRESTR
INT21H;输出源字符串提示
MOVAH,9
LEADX,KEYBUF+2
INT21H;输出源字符串
LEABX,KEYBUF+2
LCHG:
CMPBYTEPTR[BX],61H
JBNOCHG
ANDBYTEPTR[BX],0DFH
NOCHG:
INCBX
LOOPLCHG;将字符串中小写字母转换成大写字母
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,8;行号
INT10H;新字符串提示光标位置设置
MOVAH,9
LEADX,NEWSTR
INT21H;输出新字符串提示
MOVAH,9
LEADX,KEYBUF+2
INT21H;输出新字符串
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,9;行号
INT10H;提示信息光标位置设置
MOVAH,9
LEADX,HINTSTR
INT21H;输出提示信息
RET
CHGLTRENDP
MAXLTRPROCFAR;在输入字符串中找出最大值
REMAX:
;设置显示器方式
MOVAH,0
MOVAL,3
MOVBL,0
INT10H;清屏
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,5;行号
INT10H;输入提示光标位置设置
MOVAH,9
LEADX,IN_STR
INT21H;输入字符串提示
MOVAH,2
MOVDL,5;列号
MOVDH,6;行号
INT10H;输入字符串光标位置设置
MOVAH,0AH
LEADX,KEYBUF
INT21H;输入字符串
CMPKEYBUF+1,0
JZREMAX;判断输入字符串是否为空串
LEABX,KEYBUF+2
MOVAL,KEYBUF+1
CBW
MOVCX,AX
ADDBX,AX
MOVBYTEPTR[BX],'$';在输入字符串位加结束标志$
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,7;行号
INT10H;源字符串提示光标位置设置
MOVAH,9
LEADX,OUT_STR
INT21H;输出字符串提示
MOVAH,9
LEADX,KEYBUF+2
INT21H;输出字符串
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,8;行号
INT10H;新字符串提示光标位置设置
MOVAH,9
LEADX,MAXCHR
INT21H;输出字符串中最大值提示
MOVDL,0
LEABX,KEYBUF+2
LCMP:
CMP[BX],DL
JBNOLCHG
MOVDL,[BX]
NOLCHG:
INCBX
LOOPLCMP;找出字符串中最大字符,放入DL
MOVAH,2
INT21H;输出字符串中最大字符
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,9;行号
INT10H;提示信息光标位置设置
MOVAH,9
LEADX,HINTSTR
INT21H;输出提示信息
RET
MAXLTRENDP
SORTNUMPROCFAR;对输入数据组排序
RESORT:
;设置显示器方式
MOVAH,0
MOVAL,3
MOVBL,0
INT10H;清屏
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,5;行号
INT10H;输入提示光标位置设置
MOVAH,9
LEADX,IN_NUM
INT21H
MOVAH,2
MOVDL,5;列号
MOVDH,6;行号
INT10H;输入数据组光标位置设置
MOVAH,0AH
LEADX,KEYBUF
INT21H;输入数据组字符串
CALLCIN_INT;字符串转换成数据串
CMPAL,0
JZRESORT;判断数据串是否有错
CMPNUMBUF,0
JZRESORT;判断数据串是否为空
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,7;行号
INT10H;输出提示光标位置设置
MOVAH,9
LEADX,OUT_NUM
INT21H;输出数据串提示
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,8;行号
INT10H;输出数据组光标位置设置
CALLFARPTRMPSORT;数据组排序
CALLFARPTRINT_OUT;数据组的输出
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,9;行号
INT10H;提示信息光标位置设置
MOVAH,9
LEADX,HINTSTR
INT21H;输出提示信息
RET
SORTNUMENDP
CIN_INTPROCNEAR;读入整型数
;入口参数:
无
;出口参数为:
AL(有无错误标志,0为有,1为无)
MOVCL,KEYBUF+1
LEASI,KEYBUF+2
MOVCH,0;数据组数据个数置0
MOVDH,10
MOVAL,0;当前数据x=0
MOVDL,0;有无数据标志置0,即无数据
FNDNUM:
CMPBYTEPTR[SI],''
JZADDNUM;判断当前字符是否为空格
CMPBYTEPTR[SI],'0'
JBERRNUM
CMPBYTEPTR[SI],'9'
JAERRNUM;判断当前字符是否在'0'-'9'之间
MOVDL,1;有无数据标志置1,即有数据
MULDH
XORBH,BH
MOVBL,[SI]
ADDAX,BX
SUBAX,'0';计算出当前数据x
CMPAH,0
JAERRNUM;判断x是否越界
JMPNEXT
ADDNUM:
CMPDL,1
JNZNEXT;判断是否有数据
INCCH;数据组数据个数加1
CALLADDNEW
MOVDL,0
MOVAL,0;清零
NEXT:
INCSI
DECCL
CMPCL,0
JNZFNDNUM;依次检查各字符
CMPDL,1
JNZTOTAL;判断是否有未加入的数据
INCCH
CALLADDNEW
TOTAL:
MOVNUMBUF,CH;置数据组数据个数
MOVAL,1;输入数据无错误
JMPCRTNUM
ERRNUM:
MOVAL,0;输入数据有错误
CRTNUM:
RET
CIN_INTENDP
ADDNEWPROCNEAR;增加新数
;入口参数:
CH(数据组数据个数)、AL(当前数据x)
;出口参数:
无
PUSHAX
LEABX,NUMBUF
MOVAL,CH
CBW
ADDBX,AX
POPAX
MOV[BX],AL
RET
ADDNEWENDP
MPSORTPROCFAR;数据组排序
MOVAL,NUMBUF
CMPAL,1
JBENOSORT;若只有一个元素,停止排序
CBW
MOVCX,AX
LEASI,NUMBUF;SI指向数据组首地址
ADDSI,CX;SI指向数据组末地址
DECCX;外循环次数
LP1:
;外循环开始
PUSHCX
PUSHSI
MOVDL,0;交换标志置0
LP2:
;内循环开始
MOVAL,[SI]
CMPAL,[SI-1]
JAENOXCHG
XCHGAL,[SI-1];交换操作
MOV[SI],AL
MOVDL,1;交换标志置1
NOXCHG:
DECSI
LOOPLP2
POPSI
POPCX
CMPDL,1
JNZNOSORT;判断交换标志
LOOPLP1
NOSORT:
RET
MPSORTENDP
INT_OUTPROCFAR;输出数据组
MOVAL,NUMBUF
CBW
MOVCX,AX
MOVBL,10H
LEASI,NUMBUF+1
PRINT:
MOVAL,[SI]
CALLOUTNUM
INCSI
MOVAH,2
MOVDL,''
INT21H
LOOPPRINT
RET
INT_OUTENDP
OUTNUMPROCNEAR;将十进制数以十六进制输出
;入口参数:
AL(待转换的数据),BL(转换进制数16)
;出口参数:
无
MOVAH,0
DIVBL
PUSHAX
CMPAH,10
JBPNUM
ADDAH,7
PNUM:
ADDAH,30H
MOVDL,AH
POPAX
PUSHDX
CMPAL,0
JZOUTN
CALLOUTNUM
OUTN:
POPDX
MOVAH,2
INT21H
RET
OUTNUMENDP
TIMCHKPROCFAR;设定并显示时间
;设置显示器方式
MOVAH,0
MOVAL,3;
MOVBL,0;
INT10H;清屏
MOVAH,2
MOVBH,0;页号
MOVDL,5;列号
MOVDH,6;行号
INT10H;设置提示光标位置设置
MOVAH,9
LEADX,IN_TIM
INT21H;时间串提示
MOVAH,0AH
LEADX,KEYBUF
INT21H;输入时间串
MOVBL,10
MOVAL,KEYBUF+2
SUBAL,'0'
MULBL
ADDAL,KEYBUF+3
SUBAL,'0'
CMPAL,0
JBINVALID
CMPAL,24
JAEINVALID;判断时有效性
MOVCH,AL
MOVAL,KEYBUF+5
SUBAL,'0'
MULBL
ADDAL,KEYBUF+6
SUBAL,'0'
CMPAL,0
JBINVALID
CMPAL,60
JAEINVALID;判断分有效性
MOVCL,AL
MOVAL,KEYBUF+8
SUBAL,'0'
MULBL
ADDAL,KEYBUF+9
SUBAL,'0'
CMPAL,0
JBINVALID
CMPAL,60
JAEINVALID;判断秒有效性
MOVDH,AL
MOVDL,0
MOVAH,2DH
INT21H;置系统时间
INVALID:
CALLTIME
RET
TIM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 作业 代码