西安邮电大学汇编语言程序设计竞赛报告_第1页
西安邮电大学汇编语言程序设计竞赛报告_第2页
西安邮电大学汇编语言程序设计竞赛报告_第3页
西安邮电大学汇编语言程序设计竞赛报告_第4页
西安邮电大学汇编语言程序设计竞赛报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安邮电大学汇编语言程序设计竞赛报告专业班级学生姓名通工 1206王炜学号031211672014 年 11月 24 日一、设计题目小型多任务管理系统、 设计内容应用 8086cpu 汇编语言, 设计任务管理系统, 对多个任务进行 管理和调度,能够实现任务间的切换,保存上下文信息。运行任 务时可从屏幕处看到任务结果。三、需求分析1、系统完整功能在屏幕显示 3 个子窗口,他们的行列坐标如下:左窗口用于实现当键入任意字母时, 可将其全部转换为小写字 母;右窗口用于实现当键入任意字母时,可将其全部转换为大写 字母;下窗口用于显示功能提示信息。光标首先定位于左窗口第一行行首( 5,10 )处,可根据左

2、右键 的输入改变光标定位,以便分时使用左右窗口。 当光标处于左(右) 窗口处,键入任意字母同步显示在光标位置处,若按 Enter 键, 其转换结果将显示在窗口中央处,按任意键清屏,光标回到第一 行行首( 5,10 )处,可重新输入字母进行转换。按 ESC键返回到 DOS界面。2、系统测试截图四、概要设计1、方案设计系统思路简单明确, 主要运用 BISO调用,用到宏定义较为 方便的处理问题。 把一些基本功能编写成宏, 在宏调用可高效 的执行程序。 系统主要分为光标定位、 清屏、接受字符并判断、 在屏幕上显示字符、屏幕上显示转换结果等模块。结构框图2、模块功能说明(1)多窗口显示:在代码段中调用四

3、次宏 scroll ,分别设置好总窗口,左窗 口,右窗口,下窗口。(2)光标定位:用 int10h 的 3 号中断得到光标位置, 通过与窗口的坐标比 较确定光标位置(3)清屏:用 scroll 刷新需要清屏的窗口(4)显示字符:左右窗口分别用 int10h 的 0E 号中断显示光标处字符,用 int16h 的 9 号中断显示 leftbuf 和 rightbuf 的字符。窗口用int16h 的 9 号中断显示 data 段的 mainbuf 字符。 5)接受字符并判断:用 int16h 的 0 号中断接受字符,通过判断扫描码确定字符五、详细设计及运行结果1、程序运行流程2、程序中使用的功能调用

4、INT 10H:02H 功 能: 入口参数:出口参数:03H 功 能: 入口参数 :用文本光标设置光标位置AH =02HBH=页号DH/DL= 行 / 列无出口参数:在文本坐标下,光标各种信息AH = 03HBH=页号CH=光标起始行CL=光标结束行DH/DL= 行 / 列06H功能:屏幕初始化入口参数:AH = 03HAL= 0 初始化窗口BH=卷入行属性CH=光标起始行CL=光标结束行CH/CL= 左上角行 / 列号 DH/DL= 右上角行 / 列号出口参数 :无0EH功能:显示字符入口参数:AH = 0EH AL=字符 BH=页码 BL=前景色INT 16H:出口参数:无00H功能:从键

5、盘读字符入口参数:AH =00H出口参数:AH = 扫描码AL=字符码3、程序及必要注释scroll macro ulrow,ulcol,lrrow,lrcol,att,function ; 设置或上卷窗口 (由 function 决定 )MOV bh,0MOV ah,6hMOV al,functionMOV ch,ulrowMOV cl,ulcolMOV dh,lrrowMOV dl,lrcolMOV bh,attint 10hendmpos_curse macro xx,yyMOV bh,0MOV ah,2;设置光标在 (x,y)位置mov dh,xxMOV dl,yyint 10hend

6、mget_char macro clx,cly,crx,cry local again,toleft,toright,inleft,inright,judge,runleft,runright,showleftagain:mov ah,00H ;从键盘读字符, al为 ASCII 码, ah为扫描码 int 16H cmp ah,01H ;esc,则跳转到主程序的 exit je temp1 jne temp2temp1:jmp exittemp2:cmp ah,4BH ;若为键,跳转到 leftje toleftcmp ah,4DH ;若为键,则跳转到 rightje torightcmp

7、ah,1CH ;若为 Enter 键,跳转到 judge je judge;若为普通字符mov ah,0EH ;在当前光标位置处显示字符 int 10H mov ah,03H ;读取光标位置 int 10H ;dh是行, dl 是列 cmp dl,28H ;与左右窗口之间的列坐标位置比较 jb inleft ;小于 40,表示在左窗口 ja inrighttoleft:pos_curse 5,clyjmp againtoright:pos_curse 5,cryjmp againinleft:inc clyor al,00100000Bmov ds:si+06H,alinc sipos_cur

8、se 5,cly jmp againinright:inc cryand al,11011111B mov ds:di+16H,al inc dipos_curse 5,cry jmp againjudge:mov ah,03H ;读取光标位置int 10H ;dh是行, dl 是列cmp dl,28H;与左右窗口之间的列坐标位置比较jb runleft;小于 40,表示在左窗口ja runrightrunleft:mov byte ptr ds:si+06H,$ mov si,0;此处调用左窗口程序 pos_curse 0AH,0FH lea dx, leftbuf mov ah, 9 in

9、t 21h ; output string at ds:dxmov ah, 1;等待按键int 21hscroll 5h,0ah,0fh,1eh,1fh,0 ; 重置左窗口 mov cly,0AH jmp toleftrunright:mov byte ptr ds:di+16H,$ mov di,0;此处调用右窗口程序 pos_curse 0AH,37H lea dx, rightbuf mov ah, 9 int 21hmov ah, 1;等待按键int 21hscroll 5h,32h,0fh,46h,1fh,0第 7 页mov cry,32H jmp torightendmdata s

10、egmentlxdb05H;初始时刻左窗口左上角(5,10)lydb0AHrxdb05H;初始时刻右窗口左上角(5,50)rydb32Hdwx db12H;初始时刻下窗口左上角(18,15)dwy db0FHleftbuf 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 ;16Hmainbuf1 db Transform capital letters and lower case letters!$ ;123456789012345678901234567890123456

11、789012345 67890mainbuf2 db You can press 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 ends;暂存寄存器stack segment dw 8 dup(0)stack endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,

12、ax;设置堆栈段地址和偏移地址 mov ax,stack mov ss,ax mov sp,10h;初始化窗口 urow ucol lrow lcol attscroll 0,0,18h,4fh,70h,0;function 为 0 设置三个窗口scroll 5h,0ah,0fh,1eh,1fh,0scroll 5h,32h,0fh,46h,1fh,0scroll 12h,0fh,16h,41h,1fh,0;显示界面语句 pos_curse 12H,0FH lea dx,mainbuf1 mov ah,09H int 21Hpos_curse 13H,0FH lea dx,mainbuf2 m

13、ov ah,09H int 21Hpos_curse 14H,0FH lea dx,mainbuf3 mov ah,09H int 21Hpos_curse 15H,0FH lea dx,mainbuf4 mov ah,09H int 21H pos_curse lx,ly get_char lx,ly,rx,ryexit: mov ax,4C00H int 21Hcode ends end start4、运行结果六、 调试情况,设计技巧及体会1、任务完成情况 设计系统主要是功能是在多窗口条件下完成多项任务,与 预期效果基本一致。 但这些指令并非学习过程中用到过的, 许 多指令功能不清楚, 需要一点一点地查阅, 还要从众多指令中 选择正确的指令实现要求的功能, 在相关指令使用过程中还要 注意其使用方法。 在经过多次调试之后, 可以在任意窗口中自 由键入字符,按左右键来回切换以便使用左右窗口的不同功 能。在窗口中按下 Enter 键即可显示转换结果, 继续按任意键 清屏,重新使用系统功能。第 10 页2、心得体会此次竞赛设计并不简单,在程序编写过程中使用到多方面 知识,在程序执行过程中,寄存器中的值会发生变化,有些值 需要保存,有些值需要根据条件做适当更改, 都需要严格控制; 在条件判断、程序跳转时,在何时执行哪段程序,及执行后跳 转到哪条指令, 在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论