版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安邮电大学汇编语言程序设计竞赛报告专业班级通工1206学生姓名王炜学号03121167时间2014年11月24日 1、 设计题目 小型多任务管理系统2、 设计内容应用8086cpu汇编语言,设计任务管理系统,对多个任务进行管理和调度,能够实现任务间的切换,保存上下文信息。运行任务时可从屏幕处看到任务结果。3、 需求分析1、系统完整功能在屏幕显示3个子窗口,他们的行列坐标如下: 左窗口用于实现当键入任意字母时,可将其全部转换为小写字母;右窗口用于实现当键入任意字母时,可将其全部转换为大写字母;下窗口用于显示功能提示信息。光标首先定位于左窗口第一行行首(5,10)处,可根据左右键的输入改变光标定
2、位,以便分时使用左右窗口。当光标处于左(右)窗口处,键入任意字母同步显示在光标位置处,若按Enter键,其转换结果将显示在窗口中央处,按任意键清屏,光标回到第一行行首(5,10)处,可重新输入字母进行转换。按ESC键返回到DOS界面。2、 系统测试截图4、 概要设计1、 方案设计系统思路简单明确,主要运用BISO调用,用到宏定义较为方便的处理问题。把一些基本功能编写成宏,在宏调用可高效的执行程序。系统主要分为光标定位、清屏、接受字符并判断、在屏幕上显示字符、屏幕上显示转换结果等模块。结构框图 2、 模块功能说明(1) 多窗口显示:在代码段中调用四次宏scroll,分别设置好总窗口,左窗口,右窗
3、口,下窗口。(2) 光标定位:用int10h的3号中断得到光标位置,通过与窗口的坐标比较确定光标位置(3) 清屏:用scroll刷新需要清屏的窗口(4) 显示字符:左右窗口分别用int10h的0E号中断显示光标处字符,用int16h的9号中断显示leftbuf和rightbuf的字符。窗口用int16h的9号中断显示data段的mainbuf字符。(5) 接受字符并判断:用int16h的0号中断接受字符,通过判断扫描码确定字符。5、 详细设计及运行结果1、程序运行流程2、 程序中使用的功能调用INT 10H:02H功 能:用文本光标设置光标位置入口参数:AH =02HBH=页号DH/DL=行/
4、列出口参数:无03H功 能:在文本坐标下,光标各种信息入口参数:AH = 03HBH=页号出口参数:CH=光标起始行CL=光标结束行DH/DL=行/列06H功 能:屏幕初始化入口参数:AH = 03HAL= 0 初始化窗口BH=卷入行属性CH=光标起始行CL=光标结束行CH/CL=左上角行/列号DH/DL=右上角行/列号出口参数:无0EH功 能:显示字符入口参数:AH = 0EHAL=字符BH=页码BL=前景色出口参数:无INT 16H:00H功 能:从键盘读字符入口参数:AH =00H出口参数:AH =扫描码AL=字符码3、 程序及必要注释scroll macro ulrow,ulcol,l
5、rrow,lrcol,att,function ;设置或上卷窗口(由function决定) MOV bh,0 MOV ah,6h MOV al,function MOV ch,ulrow MOV cl,ulcol MOV dh,lrrow MOV dl,lrcol MOV bh,att int 10h endm pos_curse macro xx,yy ;设置光标在 (x,y)位置 MOV bh,0 MOV ah,2 mov dh,xx MOV dl,yy int 10h endm get_char macro clx,cly,crx,cry local again,toleft,torig
6、ht,inleft,inright,judge,runleft,runright,showleft again: mov ah,00H ;从键盘读字符,al为ASCII码,ah为扫描码 int 16H cmp ah,01H ;esc,则跳转到主程序的exit je temp1 jne temp2temp1: jmp exittemp2: cmp ah,4BH ;若为键,跳转到left je toleft cmp ah,4DH ;若为键,则跳转到right je toright cmp ah,1CH ;若为Enter键,跳转到judge je judge ;若为普通字符 mov ah,0EH ;
7、在当前光标位置处显示字符 int 10H mov ah,03H ;读取光标位置 int 10H ;dh是行,dl是列 cmp dl,28H ;与左右窗口之间的列坐标位置比较 jb inleft ;小于40,表示在左窗口 ja inrighttoleft: pos_curse 5,cly jmp again toright: pos_curse 5,cry jmp againinleft: inc cly or al,00100000B mov ds:si+06H,al inc si pos_curse 5,cly jmp again inright: inc cry and al,110111
8、11B mov ds:di+16H,al inc di pos_curse 5,cry jmp again judge: mov ah,03H ;读取光标位置 int 10H ;dh是行,dl是列 cmp dl,28H ;与左右窗口之间的列坐标位置比较 jb runleft ;小于40,表示在左窗口 ja runright runleft: mov byte ptr ds:si+06H,'$' mov si,0 ;此处调用左窗口程序 pos_curse 0AH,0FH lea dx, leftbuf mov ah, 9 int 21h ; output string at ds
9、:dx mov ah, 1 ;等待按键 int 21h scroll 5h,0ah,0fh,1eh,1fh,0 ;重置左窗口 mov cly,0AH jmp toleft runright: mov byte ptr ds:di+16H,'$' mov di,0 ;此处调用右窗口程序 pos_curse 0AH,37H lea dx, rightbuf mov ah, 9 int 21h mov ah, 1 ;等待按键 int 21h scroll 5h,32h,0fh,46h,1fh,0 mov cry,32H jmp toright endm data segment lx
10、 db 05H ;初始时刻左窗口左上角(5,10) ly db 0AH rx db 05H ;初始时刻右窗口左上角(5,50) ry db 32H dwx db 12H ;初始时刻下窗口左上角(18,15) dwy db 0FH leftbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;06H rightbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;16H mainbuf1 db 'Transform capital letters and lower case letters!$' ;12345678901234
11、567890123456789012345678901234567890 mainbuf2 db 'You can press <- or -> to change between left-win$' mainbuf3 db '-dows and right-windows If you want to exit,you c$' mainbuf4 db '-an press Esc.Now press any key to see the result$' data endsstack segmentdw 8 dup(0);暂存寄存
12、器stack endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax ;设置堆栈段地址和偏移地址 mov ax,stackmov ss,axmov sp,10h ;初始化窗口 urow ucol lrow lcol att scroll 0,0,18h,4fh,70h,0 ;function为0 设置三个窗口 scroll 5h,0ah,0fh,1eh,1fh,0 scroll 5h,32h,0fh,46h,1fh,0 scroll 12h,0fh,16h,41h,1fh,0 ;显示界面语句 pos_curse 1
13、2H,0FH lea dx,mainbuf1 mov ah,09H int 21H pos_curse 13H,0FH lea dx,mainbuf2 mov ah,09H int 21H pos_curse 14H,0FH lea dx,mainbuf3 mov ah,09H int 21H pos_curse 15H,0FH lea dx,mainbuf4 mov ah,09H int 21H pos_curse lx,ly get_char lx,ly,rx,ry exit: mov ax,4C00H int 21H code ends end start4、 运行结果 6、 调试情况,
14、设计技巧及体会1、 任务完成情况设计系统主要是功能是在多窗口条件下完成多项任务,与预期效果基本一致。但这些指令并非学习过程中用到过的,许多指令功能不清楚,需要一点一点地查阅,还要从众多指令中选择正确的指令实现要求的功能,在相关指令使用过程中还要注意其使用方法。在经过多次调试之后,可以在任意窗口中自由键入字符,按左右键来回切换以便使用左右窗口的不同功能。在窗口中按下Enter键即可显示转换结果,继续按任意键清屏,重新使用系统功能。2、 心得体会此次竞赛设计并不简单,在程序编写过程中使用到多方面知识,在程序执行过程中,寄存器中的值会发生变化,有些值需要保存,有些值需要根据条件做适当更改,都需要严格控制;在条件判断、程序跳转时,在何时执行哪段程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省随州市部分高中2025-2026学年高一上学期期末联考历史答案
- 2025-2026学年黑龙江省绥化十中九年级(上)期末数学试卷(含答案)
- 职业暴露应急预案考试试题及答案
- 初中师德培训课件
- 陕西省西安市雁塔区高新区第一中学2025~2026学年上学期期末考试八年级历史试题(原卷版+解析版)
- 钢结构表面处理技术要点
- 地源热泵系统技术应用方法
- 2026届辽宁省名校联盟高三1月期末考试历史试题(含答案)
- 市政给排水考试及答案
- 绍兴转业考试题目及答案
- 湖北中烟2024年招聘考试真题(含答案解析)
- 2026年常州机电职业技术学院单招综合素质考试题库及答案1套
- 2026年税务师执业规范考试题目含答案
- 2026年江苏农林职业技术学院单招职业适应性测试模拟测试卷必考题
- 广东省广州市八区联考2024-2025学年高一上学期期末教学质量监测数学试卷(含答案)
- 选举法知识课件
- 蒸汽管道安装现场施工方案
- 2024年中考英语真题分类汇编-记叙文阅读理解(含答案)
- 道路清扫保洁服务方案投标文件(技术方案)
- GB/T 2820.5-2025往复式内燃机驱动的交流发电机组第5部分:发电机组
- 苏教版语文《唐诗宋词选读》选修(教材上全部诗歌,已全部校对无误)
评论
0/150
提交评论