汇编语言实验报告.doc

上传人:jian****018 文档编号:9065099 上传时间:2020-04-02 格式:DOC 页数:10 大小:64.50KB
返回 下载 相关 举报
汇编语言实验报告.doc_第1页
第1页 / 共10页
汇编语言实验报告.doc_第2页
第2页 / 共10页
汇编语言实验报告.doc_第3页
第3页 / 共10页
点击查看更多>>
资源描述
实验报告一、实验目的汇编语言程序设计是计算机专业的重要的专业基础课,通过本综合性、设计性实验使学生进一步巩固课堂所学,全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。二、实验要求编写一个程序,让红心和严在(0,0)到(140,140)的斜线上移动。时钟的常驻内存程序,要求:右上角显示时分秒。三、实验原理分析1、INT 10H 是一个中断向量,是由 BIOS 对屏幕及显示器所提供的服务程序。2、先在数据段定义好“心”的图形,代码段选定坐标,调用显示子程序显示在桌面上。3、将时间数值转换成ASCII码字符4、设置显示方式为40*25彩色文本方式开始5、MOV AH,2CH 取系统时间四、流程图退出时间显示?显示时间初始化屏幕 Y N初始化动画起点坐标、颜色显示图像是否到达终点 改变图像坐标 否 是结束五、源程序(加必要注释)和程序运行时的截屏STACK SEGMENT STACK DW 200 DUP (?)STACK ENDSDATA SEGMENT SPACE DB 1000 DUP ( ) PATTERN DB 24 DUP ( ),0C9H,8 DUP (0CDH),0BBH,6 DUP ( ) DB 24 DUP ( ),0BAH,8 DUP (20H),0BAH,6 DUP ( ) DB 24 DUP ( ),0C8H,8 DUP (0CDH),0BCH,6 DUP ( ) DBUFFER DB 8 DUP (:),12 DUP ( ) DBUFFER1 DB 20 DUP ( ) STR DB 0DH,0AH, INPUT Q TO QUIT!$ DELAY1 DW 0 ;延迟时间设置 DELAY2 DW 0 COLOUR DB 0 ;颜色设置 S_MOV DB 0 ;擦出或画图方式选择 LINE DW 0 ;行号 ROW DW 0 ;列号 PIX DB 0 ;颜色 XX DW 0 ;坐标(xx,yy) YY DW 0 ; Y_NUM DW 0 ;行数 L_NUM DW 0 ;行数 R_NUM DW 0 ;列数 P1 DB 0,0,00H ,00H ,00H ,00H ,0FH ,00H ,0F0H ,01H ,0FH ,00H ,0F0H ,03H ,0FH ,00H ,0F0H ,07H ;图形“严” DB 0FH ,30H ,0F0H,0EH ,0FH ,38H ,0F0H ,1CH ,0FH ,1CH ,0FFH ,0F8H ,0FH ,0EH ,0FFH ,0F0H DB 0FH ,0FFH,0FFH,0E0H ,0FH ,0FFH,0F0H ,00H ,0FH ,0FFH,0F0H ,00H ,0FH ,00H ,0F0H ,000H DB 0FH ,00H ,0F0H,00H ,0FH ,00H ,0F0H ,00H ,0FH ,00H ,0F0H ,00H ,0FH ,00H ,0F0H ,00H DB 0FH ,00H ,0F0H,00H ,0FH ,00H ,0F0H ,00H ,0FH ,0FFH,0F0H ,00H ,0FH ,0FFH,0F0H ,00H DB 0FH ,0FFH,0F0H,00H ,0FH ,0EH ,0F0H ,00H ,0FH ,1CH ,0F0H ,00H ,0FH ,38H ,0F0H ,00H DB 0FH ,30H ,0F0H,00H ,0FH ,00H ,0F0H ,00H ,0FH ,00H ,0F0H ,0H ,0FH ,00H ,0F0H ,00H DB 00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H P2 DB 0,0,00H , 00H , 00H , 00H ,00H , 0FH , 00H , 00H ,00H ,03FH ,0C0H , 00H ,00H ,0FFH ,0F0H ,00H ;图形“心” DB 01H ,0FFH ,0F8H , 00H ,03H ,0FFH ,0FCH , 00H ,07H ,0FFH ,0FEH , 00H ,0FH ,0FFH ,0FFH ,00H DB 0FH ,0FFH ,0FFH , 80H ,0FH ,0FFH ,0FFH ,0C0H ,07H ,0FFH ,0FFH ,0E0H ,03H ,0FFH ,0FFH ,0F0H DB 01H ,0FFH ,0FFH ,0F8H ,00H ,0FFH ,0FFH ,0FCH ,00H , 7FH ,0FFH ,0FEH ,00H , 3FH ,0FFH ,0FFH DB 00H , 1FH ,0FFH ,0FFH ,00H , 3FH ,0FFH ,0FFH ,00H , 7FH ,0FFH ,0FEH ,00H ,0FFH ,0FFH ,0FCH DB 01H ,0FFH ,0FFH ,0F8H ,03H ,0FFH ,0FFH ,0F0H ,07H ,0FFH ,0FFH ,0E0H ,0FH ,0FFH ,0FFH ,0C0H DB 0FH ,0FFH ,0FFH , 80H ,0FH ,0FFH ,0FFH , 00H ,07H ,0FFH ,0FEH , 00H ,03H ,0FFH ,0FCH ,00H DB 01H ,0FFH ,0F8H , 00H ,00H ,0FFH ,0F0H , 00H ,00H ,03FH ,0C0H , 00H ,00H , 0FH , 00H ,00H DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,0001H ;设置显示方式为40*25彩色文本方式 INT 10H MOV AX,DATA MOV DS,AX MOV ES,AX MOV BP,OFFSET SPACE MOV DX,0300H MOV CX,1000 MOV BX,0030H MOV AX,1300H INT 10H MOV BP,OFFSET PATTERN ;显示矩形条 MOV DX,0300H MOV CX,120 MOV BX,002EH MOV AX,1301H INT 10H LEA DX,STR ;显示提示信息 MOV AH,9 INT 21H CALL TIME ;显示系统时间 EXIT: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,51H ;AL=Q? JNE EXIT CALL INIT_WORD CALL W_END MOV AH,4CH ;返回dos状态 INT 21HTIME PROC NEAR ;显示时间子程序DISPLAY1:MOV SI,0 MOV BX,100 DIV BL MOV AH,2CH ;取时间 INT 21H MOV AL,CH CALL BCDASC ;将时间数值转换成ASCII码字符 INC SI MOV AL,CL CALL BCDASC INC SI MOV AL,DH CALL BCDASC MOV BP,OFFSET DBUFFER MOV DX,0419H MOV CX,8 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018HRE: MOV CX,0FFFFHREA: LOOP REA DEC BX JNZ RE MOV AH,01H INT 16H JE DISPLAY1 JMP EXIT MOV AX,4C00H INT 21H RETTIME ENDPBCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序 PUSH BX CBW MOV BL,10 DIV BL ADD AL,0 MOV DBUFFERSI,AL INC SI ADD AH,0 MOV DBUFFERSI,AH INC SI POP BX RETBCDASC ENDPINIT_WORD PROC NEAR ;初始化屏幕 MOV AH,0 MOV AL,5H INT 10H MOV AH,0BH MOV BH,01H MOV BL,0 INT 10H RET INIT_WORD ENDP W_END PROC NEAR ;让“心”和“严”分别从两侧向中间靠拢 MOV R_NUM,4 MOV L_NUM,4 MOV COLOUR,2;颜色为红 MOV AX,0 K1: MOV XX,0 MOV YY,0 ADD XX,AX ADD YY,AX MOV DI,OFFSET P2 MOV S_MOV,1 CALL DISP MOV XX,310 MOV YY,0 SUB XX,AX ADD YY,AX MOV DI,OFFSET P1 MOV S_MOV,1 CALL DISP MOV DELAY1,100 MOV DELAY2,100 CALL DELAY INC AX CMP AX,140 JZ K2 JMP K1 K2: RET W_END ENDP DISP PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV SI,R_NUM mov cl,3 SAL SI,cl MOV ROW,0 MOV Y_NUM,0 GO: MOV Y_NUM,0 L1: MOV LINE,0 ADD DI,1 MOV BX,DI L2: SAL BX,1 JNC L3 ;CF=0,跳转 CMP S_MOV,0 JZ L3 MOV AL,COLOUR MOV PIX,AL JMP L4 L3: MOV PIX,0 L4: MOV DX,YY ADD DX,LINE MOV CX,Y_NUM CMP Y_NUM,0 JZ L6 L5: ADD DX,8 LOOP L5 L6: MOV CX,XX ADD CX,ROW MOV AH,0CH MOV AL,PIX INT 10H INC LINE CMP LINE,8 JNZ L2 INC Y_NUM MOV AX,L_NUM CMP Y_NUM,AX JNZ L1 INC ROW CMP ROW,SI JNZ GO POP SI POP DX POP CX POP BX POP AX RET DISP ENDP DELAY PROC NEAR PUSH CX PUSH DX MOV DX,DELAY1 D11: MOV CX,DELAY2 D12: LOOP D12 DEC DX JNZ D11 POP DX POP CX RET DELAY ENDPCODE ENDS END START 这是时间显示器,输入大写字母“Q”退出后是动画。因为“心”和“严”图形是全屏的,无法截屏,大概运行情况如下(win7不能全屏)* * * * * * * * * * * * * * * * * * * * * * * 两个图形同时向中下方移动,靠拢后结束,退出程序六、体会通过这次汇编语言的综合性课程设计,我觉得自己真的学到了不少的东西,加深了自己以前没掌握的知识,还学到不少的新知识。通过课程设计的编程和对编程过程中遇到的问题的思考,确实有效地提高了我对编程的认识和理解,也一定程度上提高了我的编程能力,弥补了的不足之处。同时,我通过这次课程设计,巩固了学过的知识,学会了将它们切实地用到编程当中。能用汇编语言和相应的顺序、选择、循环三大结构来结合想问题,进一步掌握的各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及如何调用系统时间,如何让图形动起来。在整个课程设计中,最开始我选择动画,可是显示全屏后都不能截图,又另外做了时间显示,顺便把动画当做结束。虽然完成了这次综合性实验,但一个小实验就花了很长时间,自己对汇编语言的掌握还需要进一步提高。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!