




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言课程实验报告实验名称课程设计2实验环境硬件平台:IntelCorei5-3210M操作系统:DOSBoxinWindows软件工具:MASM,VFloopy,MicrosoftVirtualPC2007实验内容编写一个可以自动启动计算机,不需要在现有操作系统环境中运行的程序。该程序功能如下:(1) 列出功能选项,让用户通过键盘进行选择,界面如下:1) resetpc;重新启动计算机2) startsystem;引导现有的操作系统3) clock;进入时钟程序4) setclock;设置时间(2) 用户输入“1”后重新启动计算机(提示:考虑ffff:0单元)。(3)用户输入“2”后引导现
2、有的操作系统(提示:考虑硬盘C的。道。面1扇区)。(4) 用户输入“3”后,执行动态显示当前日期、时间的程序。显示格式如下:年/月/日时:分:秒进入此项功能后,一直动态显示当前的时间,在屏幕上将出现时间按秒变化的效果(提示:循环读取CMO)S。实验步骤1. 系统启动初始化完成后最终调用19h,该中断读取软盘的第一扇区或硬盘的第一扇区到0:7c00开始的512个字节的内存空间中,并将cs:ip指向0:7c00执行。2. 第一个段为安装程序,负责将第二个段写入第一扇区,第三个段写入2-17扇区。3. 第二个段是主引导程序,存在于软盘第一扇区,由BIOS的19h中断读取到0:7c00开始的内存单元中
3、,并执行0:7c00的第一行代码。这一段的任务是将软盘2-17扇区的数据读入内存,并执行。(这里读入到了2000:0开始的内存中)。4. 第三个段是系统程序,存放所有引导所需的程序和子程序。5. 程序的汇编代码如下:assumecs:setupsg;安装程序;将引导所需的程序写入到软盘setupsgsegmentassumecs:setupsgsetup:;主引导程序安装到第一扇区movax,initsgmoves,axmovbx,0moval,1movch,0movcl,1movdl,0movdh,0movah,3int13h;子程序安装到从第2扇区开始的扇区movax,syssgmoves
4、,axmoval,15movcl,2movah,3int13h;安装结束,返回movax,4c00hint21hsetupsgends;主引导程序;包含所有子程序的直接定址表,扇区加载程序,菜单initsgsegmentassumecs:initsginit:callloadsysmovax,2000hpushaxmovax,0pushaxretfloadsys:movax,2000h;软盘数据读取到2000:0moves,axmovbx,0moval,15;读取的扇区数movch,0;0磁道movcl,2;2扇区movdl,0;0号驱动器movdh,0;0面movah,2int13hreti
5、nitsgends;子程序;包含所有菜单需要调用的子过程syssgsegmentassumecs:syssg;菜单显示功能menu:jmpnearptrmenushowmenudatadwoffsetmd0,offsetmd1,offsetmd2,offsetmd3,offsetmd4,offsetmd5md0db"Welcome",0md1db"1)resetpc",0md2db"2)startsystem",0md3db"3)clock",0md4db"4)setclock",0md5db&
6、quot;Copyright2010Haoran,rightsreserved.",0systabledwsys_restart,sys_disksys,sys_showclock,sys_setclockmenushow:movdh,5movdl,30movbp,0movax,csmovds,axmovcx,5menushow_s:pushcxmovsi,menudatabpmovcl,02hcallsys_showstraddbp,2adddh,2popcxloopmenushow_smovsi,offsetmd5movdh,23movdl,28movcl,02hcallsys_
7、showstr;处理用户输入sys_input:movah,0int16hmovbx,0movbl,almoval,30hsubbl,al;ascii转换为序列号subbl,1;1-4转换为0-3调用菜单功能cmpbx,0jbcyclecmpbx,3jacycleaddbx,bxcallwordptrsystablebx;cycle:jmpshortsys_input;重启计算机sys_restart:movax,0ffffhpushaxmovax,0hpushaxretf;从硬盘引导sys_disksys:callclsmovax,0h;硬盘数据读取到0:7c00moves,axmovbx,
8、7c00hmoval,1;读取的扇区数movch,0;0磁道movcl,1;1扇区movdl,80h;c盘movdh,0;0面movah,2int13hmovax,0hpushaxmovax,7c00hpushaxretf;显示时钟sys_showclock:callclsjmpshortclockreadclockdata:clockstrdwoffsetcl1,offsetcl2,offsetcl3clockcolordb02hcl1db'00/00/0000:00:00',0cl2db'pressESCreturnmenu!',0cl3db'pre
9、ssF1changecolor!',0cltabledb9,8,7,4,2,0clockread:movsi,0;si指向'yy/mm/ddhh:mm:ss'的首地址movdi,0;di指向9,8,7,4,2,0的首地址movcx,6;clockread_s:pushcxmoval,cltabledi;out70h,alinal,71hmovah,al;almovcl,4shrah,cl;ahandal,00001111b;aladdah,30h;addal,30h;movbyteptrcl1si,ahmovbyteptrcl1si+1,aladdsi,3incdi循环
10、次数从CMO阱读出年份的BC加中位读出的数据中为年份的十位数中为年份的个位数把数值转换为对应的ASCII码同上把读出的时间写入popcxloopclockread_sclockprint:movdh,6movdl,30movbp,0movax,csmovds,axmovcx,3clockprint_s:pushcxmovsi,clockstrbpmovcl,clockcolor0;将颜色值赋值给clcallsys_showstraddbp,2adddh,2popcxloopclockprint_smovah,1;调用16h中断的1号功能(非阻塞)int16hcmpal,1bh;判断是否为ESC
11、jeclockreturn;若是ESC回到菜单cmpah,3bh;判断是否为F1jechangecolorjmpshortclockreadclockreturn:callclsmovah,0;16h中断的1号功能不会清除键盘缓冲区,下次读取还会读出int16h;调用0号功能清除一次jmpnearptrmenuchangecolor:incclockcolormovah,0;16h中断的1号功能不会清除键盘缓冲区,下次读取还会读出int16h;调用0号功能清除一次jmpnearptrclockread;设置时钟sys_setclock:jmpshortsetclocksetclockdatad
12、b'Pleaseinputtimelike"yy/mm/ddhh:mm:ss"',0setsuccessdb'Setclocksuccessful!Pressanykeyreturn.',0setclock:callclsmovdh,6movdl,20movcl,02hmovax,csmovds,axmovsi,offsetsetclockdatacallsys_showstrcallgetstrcallsettimemovdh,10movdl,20movcl,02hmovax,csmovds,axmovsi,offsetsetsuccess
13、callsys_showstrmovah,0int16hcallclsjmpnearptrmenu;ds:si指向时间字符串settime:jmpshortsetingsettabledb9,8,7,4,2,0seting:movbx,0movcx,6settime_s:movdh,ds:siincsimovdl,ds:siaddsi,2moval,30hsubdl,alsubdh,alshldh,1shldh,1shldh,1shldh,1ordl,dhmoval,settablebxout70h,almoval,dlout71h,alincbxloopsettime_sret;子程序:接收
14、字符串getstr:pushaxgetstrs:movah,0int16hcmpal,20hjbnocharmovah,0callcharstackmovah,2movdh,8movdl,25callcharstackjmpgetstrsnochar:cmpah,0ehjebackspacecmpah,1chjeenterjmpgetstrsbackspace:movah,1callcharstackmovah,2callcharstackjmpgetstrsenter:moval,0movah,0callcharstackmovah,2callcharstackpopaxret;子程序:字符
15、串入栈,出栈和显示;参数:(ah)=功能号,0入栈,1出栈,2显示;ds:si指向字符栈空间,对于0号功能,(al)表示入栈字符;1号功能,(al)返回的字符,对于2号功能,(dh)(dl)字符串在屏幕显示的行列位置charstack:jmpshortcharstarttabledwcharpush,charpop,charshowtopdw0charstart:pushbxpushdxpushdipushescmpah,2jasretmovbl,ahmovbh,0addbx,bxjmpwordptrtablebxcharpush:movbx,topmovsibx,alinctopjmpsre
16、tcharpop:cmptop,0jesretdectopmovbx,topmoval,sibxjmpsretcharshow:movbx,0b800hmoves,bxmoval,160movah,0muldhmovdi,axadddl,dlmovdh,0adddi,dxmovbx,0charshows:cmpbx,topjnenoemptymovbyteptres:di,''movbyteptres:di+1,02hjmpsretnoempty:moval,sibxmoves:di,almovbyteptres:di+2,''movbyteptres:di+1
17、,02hincbxadddi,2jmpcharshowssret:popespopdipopdxpopbxret;显示0结尾的字符串;参数:dh二行号,dl二列号,cl=颜色,ds:si指向字符串首地址sys_showstr:pushaxpushcxpushdxpushsipushbppushesmovax,0b800hmoves,axmoval,80*2;80*2*行号muldhmovdh,0adddx,dx;列号*2addax,dxmovbp,axshowstr_s:movch,ds:sicmpch,0jeshowstr_returnmoves:bp,chincbpmoves:bp,cli
18、ncbpincsijmpshortshowstr_sshowstr_return:popespopbppopsipopdxpopcxpopaxret;清屏cls:movax,0b800hmovds,axmovbx,0movcx,24*80*2cls_s:movbyteptrds:bx,0addbx,2loopcls_smovbx,1resetcol:movbyteptrds:bx,07haddbx,2loopresetcolretsyssgends;安装过程的第一行指令endsetup6 .由于此程序涉及底层硬件的操作,而我们目前电脑的底层硬件及启动机制比实验内容要复杂得多。因此我们将其放在相对简单的虚拟机中运行。7 .首先我们需要用一个名为VFloopy的软件来建立一个虚拟软驱,并使其盘符为A,这样我们的程序就能将其内容安装到虚拟软驱里。8 .然后我们还需要建
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 恐怖剧本改编授权及网络电影制作合同
- 品牌特许经营区域独家授权合同
- 基层医疗卫生服务体系2025年基层医疗机构基层医疗服务质量提升策略研究报告
- 开创未来的工程法规考试试题及答案
- 2025年财务管理考试素养提升试题及答案
- 如何选材备战中级会计实务考试试题及答案
- 2025年游戏化营销在品牌传播中的用户参与度提升策略报告
- 中级会计实务考试布局攻略及试题及答案
- 台球承包合同协议书
- 盘点2025年中级会计实务考试重要章节试题及答案
- MOOC 能源与气候变化应对法-西南政法大学 中国大学慕课答案
- MOOC 国情分析与商业设计-暨南大学 中国大学慕课答案
- 工厂生产经营管理方案
- 2023年浙江省宁波市中考语文试卷
- 《光伏发电工程工程量清单计价规范》
- “新课标”下教学评一体化的英语单元整体教学设计
- 水电站水工基础知识课件
- 大学生劳动教育课件:树立新时代的劳动观
- 营养筛查及营养实施流程图课件
- 有机化学课后习题答案-李艳梅版
- 国企控股公司所属公司经理层成员任期制和契约化管理办法(试行)
评论
0/150
提交评论