汇编语言课程设计报告a

合集下载

汇编语言课程设计报告

汇编语言课程设计报告

汇编语言课程设计报告( 2013 -- 2014 年度第1 学期)课题名称:磁盘文件管理系统专业计算机科学与技术(网络技术)学生姓名班级学号指导教师完成日期目录1 设计目的 (1)2 概要设计 (1)2.1系统总体分析 (1)2.2主模块框图及说明 (1)3 详细设计 (3)3.1主模块及子模块说明 (3)3.2各模块详细设计 (5)3.2.1 主界面模块 (5)4 程序调试 (5)4.1运行界面分析 (5)4.2调试过程及分析 (7)5 心得体会 (9)5.1设计体会 (9)5.2系统改进 (10)参考文献 (11)附录 (12)附录1源程序清单 (12)附录1.1 磁盘文件管理系统模块源程序 (12)1 设计目的本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。

学会查阅和汇编语言相关的规范,手册等技术资料。

能正确绘制和使用流程图。

掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。

“汇编语言”课程设计是计算机应用开发人员必须接受的最重要的专业训练之一,是计算机软、硬件的基础,利用汇编语言编写程序可以是我们更清楚地了解计算机是怎样完成复杂工作的,理解计算机对系统中各种设备的调度,从而从根本上认识计算机的工作原理,对课程所学理论知识的深化和提高。

因此,课程设计要求同学们熟悉汇编语言的编程,BIOS中断调用、dos系统功能调用、磁盘数据的查询、存取等相关知识。

通过课程设计,可以提高运用汇编语言编程解决实际问题的能力,为以后的学习和系统开发奠定良好的基础。

2 概要设计2.1 系统总体分析实现对磁盘文件的管理。

创建文件,向磁盘文件中写入信息,从磁盘文件中读出信息并显示,退出程序。

如果向磁盘中写入信息或者从磁盘中读取信息失败屏幕会显示打开文件错误的提示。

根据提示输入字符,如果输错可以返回并且从新输入。

汇编语言设计报告

汇编语言设计报告

实验报告课程名称: 指导老师: 成绩:__________________实验名称: 实验类型: 同组学生姓名:一、实验目的1. 熟悉80C51单片微机汇编语言设计及编程技巧。

2. 掌握逻辑运算程序的设计方法。

3. 掌握求最小数和最大数程序的设计方法。

4. 掌握多字节无符号十进制数加、减法程序的设计。

二、实验内容PART1 逻辑运算逻辑运算:根据下列逻辑运算式,编写程序计算运算结果。

Y=A ⊕B •C • D+A设: A =63H ,B=82H ,C=C5H ,D=36H 。

求Y=?PART2 求最小数和最大数求最小数和最大数:10个无符号数连续存放在以20H 为起始地址的RAM 中,找出其中的最小值存入30H 单元中,找出其中的最大值存入31H 单元中。

PART3 十进制加、减运算十进制加、减运算:286729+652430-752196=?在8051片内RAM 的20H~22H 中放入3字节被加数(低位在先)、23H~25H 放入加数(低位在先)、26H~28H 放入减数,结果存入2DH~2FH 单元(低位在先)。

三、主要仪器设备1. Micetek 仿真器一台2. 实验板一块四、实验详情PART 1 逻辑运算1、实验程序专业:姓名:学号:日期:地点:ORG 0000HSJMP MAINORG 0080HMAIN:MOV A,#82H ;将B值给累加器AMOV R0,#0C5H ;将C值给寄存器R0ANL A,R0 ;计算B和C逻辑与的值,并将结果存放在A中CPL A ;将A取反MOV R0,#63H ;将A值给R0XRL A,R0 ;计算两数异或的值,结果存于A中CPL A ;将A取反MOV R1,A;将A中的值存到R1中MOV A,#63H ;将A值给累加器AORL A,#36H ;计算A和D逻辑或的值CPL A;将A取反ANL A,R1 ;计算A和R1逻辑与的值END运行结果:A=80H程序功能:计算所给出逻辑运算式的值2、调试通过后的.LST文件ORG 0000H0000 807E SJMP MAINORG 0080H0080 7482 MAIN:MOV A,#82H0082 78C5 MOV R0,#0C5H0084 58 ANL A,R00085 F4 CPL A0086 7863 MOV R0,#63H0088 68 XRL A,R00089 F4 CPL A008A F9 MOV R1,A008B 7463 MOV A,#63H008D 4436 ORL A,#36H008F F4 CPL A0090 59 ANL A,R1END符号值类型AC = 00D6H CONST 常量ACC = 00E0H CONST 常量B = 00F0H CONST 常量DPH = 0083H CONST 常量DPL = 0082H CONST 常量EA= 00AFH CONST 常量ES = 00ACH CONST 常量ET0 = 00A9H CONST 常量ET1 = 00ABH CONST 常量EX0 = 00A8H CONST 常量EX1 = 00AAH CONST 常量F0 = 00D5H CONST 常量F1 = 00D1H CONST 常量IE = 00A8H CONST 常量IE0 = 0089H CONST 常量IE1 = 008BH CONST 常量IP= 00B8H CONST 常量IT0 = 0088H CONST 常量IT1 = 008AH CONST 常量MAIN = 0080H CODE 标号OV = 00D2H CONST 常量P= 00D0H CONST 常量P0 = 0080H CONST 常量P1 = 0090H CONST 常量P2 = 00A0H CONST 常量P3 = 00B0H CONST 常量PCON = 0087H CONST 常量PS = 00BCH CONST 常量PSW = 00D0H CONST 常量PT0 = 00B9H CONST 常量PT1 = 00BBH CONST 常量PX0 = 00B8H CONST 常量PX1 = 00BAH CONST 常量RB8 = 009AH CONST 常量REN = 009CH CONST 常量RI = 0098H CONST 常量RS0 = 00D3H CONST 常量RS1 = 00D4H CONST 常量SBUF = 0099H CONST 常量SCON = 0098H CONST 常量SM0 = 009FH CONST 常量SM1 = 009EH CONST 常量SM2 = 009DH CONST 常量SP= 0081H CONST 常量TB8 = 009BH CONST 常量TCON = 0088H CONST 常量TF1 = 008FH CONST 常量TH0 = 008CH CONST 常量TH1 = 008DH CONST 常量TI = 0099H CONST 常量TL0 = 008AH CONST 常量TL1 = 008BH CONST 常量TMOD = 0089H CONST 常量TR0 = 008CH CONST 常量TR1 = 008EH CONST 常量公有符号: 57私有符号: 0PART2 求最小数和最大数1、实验程序ORG 0000HAJMP MAINORG 0020HMAIN:MOV R0,#10H ;采样值数据区长度MOV DPTR,#20H ;采样值存放首地址MOV 30H,#0FFH ;最小值单元初始值设为最大数MOV 31H,#00H ;最大值单元初始值设为最小数LP:MOVX A,@DPTR ;取采样值CJNE A,30H,CHR ;数值比较CJNE A,31H,CHK ;数值比较SJMP LP1 ;两值相等,转移CHR:JNC LP1 ;A值大,转移MOV 30H,A ;A值小,移送30HCHK:JC LP1 ;A值小,转移MOV 31H,A ;A值大,移送31HLP1:INC DPTRDJNZ R0,LP ;继续END运行结果:30H中为最小值,31H中为最大值程序功能:取得20H 及以后的10个数,将其中的最小数存放于30H,最大数存放于31H2、调试通过后的.LST文件ORG 0000H0000 0120 AJMP MAINORG 0020H0020 7810 MAIN:MOV R0,#10H0022 900020 MOV DPTR,#20H0025 7530FF MOV 30H,#0FFH0028 753100 MOV 31H,#00H002B E0 LP:MOVX A,@DPTR002C B53005 CJNE A,30H,CHR002F B53106 CJNE A,31H,CHK0032 8008 SJMP LP10034 5006 CHR:JNC LP10036 F530 MOV 30H,A0038 4002 CHK:JC LP1003A F531 MOV 31H,A003C A3 LP1:INC DPTR003D D8EC DJNZ R0,LPEND符号值类型AC = 00D6H CONST 常量ACC = 00E0H CONST 常量B = 00F0H CONST 常量CHK = 0038H CODE 标号CHR = 0034H CODE 标号CY= 00D7H CONST 常量DPH = 0083H CONST 常量DPL = 0082H CONST 常量EA= 00AFH CONST 常量ES = 00ACH CONST 常量ET0 = 00A9H CONST 常量ET1 = 00ABH CONST 常量EX0 = 00A8H CONST 常量EX1 = 00AAH CONST 常量F0 = 00D5H CONST 常量F1 = 00D1H CONST 常量IE = 00A8H CONST 常量IE0 = 0089H CONST 常量IE1 = 008BH CONST 常量IP= 00B8H CONST 常量IT0 = 0088H CONST 常量IT1 = 008AH CONST 常量LP = 002BH CODE 标号LP1 = 003CH CODE 标号MAIN = 0020H CODE 标号OV = 00D2H CONST 常量P= 00D0H CONST 常量P0 = 0080H CONST 常量P1 = 0090H CONST 常量P2 = 00A0H CONST 常量P3 = 00B0H CONST 常量PCON = 0087H CONST 常量PS = 00BCH CONST 常量PSW = 00D0H CONST 常量PT0 = 00B9H CONST 常量PT1 = 00BBH CONST 常量PX0 = 00B8H CONST 常量PX1 = 00BAH CONST 常量RB8 = 009AH CONST 常量REN = 009CH CONST 常量RI = 0098H CONST 常量RS0 = 00D3H CONST 常量RS1 = 00D4H CONST 常量SBUF = 0099H CONST 常量SCON = 0098H CONST 常量SM0 = 009FH CONST 常量SM1 = 009EH CONST 常量SM2 = 009DH CONST 常量SP= 0081H CONST 常量TB8 = 009BH CONST 常量TCON = 0088H CONST 常量TF0 = 008DH CONST 常量TF1 = 008FH CONST 常量TH0 = 008CH CONST 常量TH1 = 008DH CONST 常量TI = 0099H CONST 常量TL0 = 008AH CONST 常量TL1 = 008BH CONST 常量TMOD = 0089H CONST 常量TR0 = 008CH CONST 常量TR1 = 008EH CONST 常量公有符号: 61私有符号: 0PART3 十进制加、减运算1、实验程序ORG 0000HAJMP MAINORG 0080HMAIN: MOV 00H,#01HMOV 20H,#29H ;将被加数放入20H-22HMOV 21H,#67HMOV 22H,#28HMOV 23H,#30H ;将加数放入23H-25HMOV 24H,#24HMOV 25H,#65HMOV 26H,#96H ;将减数放入26H-28HMOV 27H,#21HMOV 28H,#75HMOV A,20HADD A,23H ;最低字节相加DA A ;二-十进制调整MOV 29H,A ;将相加结果放入29HMOV A,21HADDC A,24H ;次地字节带进位相加DA A ;二-十进制调整MOV 2AH,A ;将相加结果放入2AHMOV A,22HADDC A,25H ;最高位字节进位相加DA A ;二-十进制调整MOV 2BH,A ;将相加结果放入2BHCLR C ;清零C标志位MOV A,#9AHSUBB A,26H ;求26H中二进制补码ADD A,29H ;加上补码DA A ;二-十进制调整MOV 2DH,A;将最低字节运算结果放入2DHCPL C ;标志位取反MOV A,#9AHSUBB A,27H ;求27H中二进制补码ADD A,2AH ;加上补码DA A ;二-十进制调整MOV 2EH,A;将次低字节预算结果放入2EHCPL C ;标志位取反MOV A,#9AHSUBB A,28H ;求28H中二进制补码ADD A,2BH ;加上补码DA A ;二-十进制调整MOV 2FH,A ;将最高字节运算结果放入2FHEND运行结果:2DH=63 ,2EH=69, 2FH=18程序功能:计算相应计算式的值2、调试后的.LST文件ORG 0000H0000 0180 AJMP MAINORG 0080H0080 750001 MAIN: MOV 00H,#01H0083 752029 MOV 20H,#29H0086 752167 MOV 21H,#67H0089 752228 MOV 22H,#28H008C 752330 MOV 23H,#30H008F 752424 MOV 24H,#24H0092 752565 MOV 25H,#65H0095 752696 MOV 26H,#96H0098 752721 MOV 27H,#21H009B 752875 MOV 28H,#75H009E E520 MOV A,20H00A0 2523 ADD A,23H00A2 D4 DA A00A3 F529 MOV 29H,A00A5 E521 MOV A,21H00A7 3524 ADDC A,24H00A9 D4 DA A00AA F52A MOV 2AH,A00AC E522 MOV A,22H00AE 3525 ADDC A,25H00B0 D4 DA A00B1 F52B MOV 2BH,A00B3 C3 CLR C00B4 749A MOV A,#9AH00B6 9526 SUBB A,26H00B8 2529 ADD A,29H00BA D4 DA A00BB F52D MOV 2DH,A00BD B3 CPL C00BE 749A MOV A,#9AH00C0 9527 SUBB A,27H00C2 252A ADD A,2AH00C4 D4 DA A00C5 F52E MOV 2EH,A00C7 B3 CPL C00C8 749A MOV A,#9AH00CA 9528 SUBB A,28H00CC 252B ADD A,2BH00CE D4 DA A00CF F52F MOV 2FH,AEND符号值类型AC = 00D6H CONST 常量ACC = 00E0H CONST 常量B = 00F0H CONST 常量CY= 00D7H CONST 常量DPH = 0083H CONST 常量DPL = 0082H CONST 常量EA= 00AFH CONST 常量ES = 00ACH CONST 常量ET0 = 00A9H CONST 常量ET1 = 00ABH CONST 常量EX0 = 00A8H CONST 常量EX1 = 00AAH CONST 常量F0 = 00D5H CONST 常量F1 = 00D1H CONST 常量IE = 00A8H CONST 常量IE0 = 0089H CONST 常量IE1 = 008BH CONST 常量IP= 00B8H CONST 常量IT0 = 0088H CONST 常量IT1 = 008AH CONST 常量MAIN = 0080H CODE 标号OV = 00D2H CONST 常量P= 00D0H CONST 常量P0 = 0080H CONST 常量P1 = 0090H CONST 常量P2 = 00A0H CONST 常量P3 = 00B0H CONST 常量PCON = 0087H CONST 常量PS = 00BCH CONST 常量PSW = 00D0H CONST 常量PT0 = 00B9H CONST 常量PT1 = 00BBH CONST 常量PX0 = 00B8H CONST 常量PX1 = 00BAH CONST 常量RB8 = 009AH CONST 常量REN = 009CH CONST 常量RI = 0098H CONST 常量RS0 = 00D3H CONST 常量RS1 = 00D4H CONST 常量SBUF = 0099H CONST 常量SCON = 0098H CONST 常量SM0 = 009FH CONST 常量SM1 = 009EH CONST 常量SM2 = 009DH CONST 常量SP= 0081H CONST 常量TB8 = 009BH CONST 常量TCON = 0088H CONST 常量TF0 = 008DH CONST 常量TF1 = 008FH CONST 常量TH0 = 008CH CONST 常量TH1 = 008DH CONST 常量TI = 0099H CONST 常量TL0 = 008AH CONST 常量TL1 = 008BH CONST 常量TMOD = 0089H CONST 常量TR0 = 008CH CONST 常量TR1 = 008EH CONST 常量公有符号: 57私有符号: 0五、实验总结。

汇编语言课程设计报告

汇编语言课程设计报告

课程设计报告课程名称:汇编语言程序设计课题名称:成绩评定姓名:班级:带教老师:报告日期:2009年电子信息学院目录第一章前言 (3)1.1 背景 (3)1.2基本功能要求 (3)第二章程序设计 (4)2.1题目基本内容 (4)2.2系统流程框图 (5)2.3课程设计的具体内容说明 (6)2.4课程设计中关键内容的分析设计说明 (6)第三章课程设计小结 (7)参考文献 (8)附录: (9)源程序代码 (9)第一章前言1.1 背景课程设计的主要目的是提高实践能力,包括对硬件的理解分析能力和汇编语言的编程能力。

与其他课程不同的是,本课程对硬件有较高的依赖性,因此课程设计的灵活性受到了一定的限制,最好有相应的实验平台支持(尤其是硬件部分),本次课程设计主要是汇编语言部分的练习,通过这部分的练习,学生应该熟悉汇编语言的寻址方式和指令系统,掌握BIOS和DOS系统的功能调用,编制较大程序时的基本方法和熟悉宏汇编的编程环境。

使学生既具备完备的理论知识,也能够解决实际学习中碰到的问题。

1.2基本功能要求1.显示简易的数字菜单,并根据选择的菜单号执行相应的分支程序,并得到正确的结果。

2.从键盘输入一个成绩能评定成绩的等级,并显示其结果。

第二章程序设计2.1题目基本内容设计题目:成绩评定具体要求:(1)显示简易数字菜单(2)输入成绩,显示成绩评定的等级(90-100为优,80-90为良,70-80为中,60-70为及格,60分以下为不及格)2.2系统流程框图图2.2.12.3课程设计的具体内容说明根据课题的要求,主要完成一下几方面的设计:1.显示简易数字菜单,根据选择的菜单号,执行相应的分支程序2.从键盘输入一个十进制数字(编写一个子程序)3.对输入的数据进行比较,显示相应成绩等级(优,良,中,及格,不及格可以分别用A,B,C,D,E表示)2.4课程设计中关键内容的分析设计说明1.简易数字菜单只有两个选择号(1~2),选择1表示就跳转到执行成绩评定的程序,选择2就返回到DOS窗口。

汇编语言课程设计报告

汇编语言课程设计报告

农林大学金山学院课程设计报告课程名称:汇编语言课程设计课程设计题目:动画设计“我爱大自然”姓名:系:信息与机电工程系专业:电子信息工程年级:2008级学号:*********指导教师:\职称:助教2009~2010学年第二学期目录1 课程设计的目的 (2)2 课程设计的要求 (2)3课程设计报告容 (2)3.1设计思路 (2)3.2程序流程图 (2)3.3设计源程序 (5)3.4动画示意图 (19)4 总结 (20)5参考文献 (20)6评分标准 (21)动画设计“我爱大自然”一、课程设计的目的《汇编语言课程设计》是电子信息工程专业集中实践性环节之一,是学习完《汇编语言》课程后进行的一次全面的综合练习。

其目的是:培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。

为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。

二、课程设计的要求1)具备初步的独立分析和解决问题的能力;2)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能;3)提高综合运用所学的理论知识和方法的能力;4)训练用系统的观点和软件开发一般规进行软件开发,培养科学的工作方法和作风;5)设计的题目要求达到一定工作量,并具有一定的深度和难度;6)编写出课程设计说明书。

三、课程设计报告容(一)设计思路“我爱大自然”这个程序中包含了比较多的景物,既有静态的也有动态的,其中还有一段音乐。

为了节省存储空间,提高程序设计的效率和质量,使程序简洁、清晰,便于阅读,同时也为了便于修改和扩充,采用子程序设计技术和宏定义,根据程序要实现的若干主要功能及个功能块要调用的公共部分,将程序划分为若干个相对独立的模块,为每个模块编制独立的程序段,最后将这些子程序根据调用关系连成一个整体。

这样,整个程序就被分为几个子程序的有机统一。

根据BIOS中断调用原理,设置80×25彩色文本显示方式,分别编写一个子程序显示“I LOVE NATURE,LET US GO AIRING”和一个子程序在屏幕上“画”树。

《汇编语言程序设计课程设计》课程设计报告模板

《汇编语言程序设计课程设计》课程设计报告模板

课程设计2013~ 2014学年第二学期设计题目汇编语言程序设计课程设计-打字练习程序的设计院(系)计算机科学与信息工程学院专业计算机科学与技术班级学号学生姓名设计时间2014年 6 月 30 日——2014年7 月 5日指导教师提交日期 2014年7月5日上海应用技术学院课程设计任务书指导教师(签名):教研室主任(签名):杨晶鑫2014年6 月25 日2014年6 月25 日目录上海应用技术学院课程设计任务书..................................................... i错误!未定义书签。

目录............................................................................................................................................ i ii 1概述. (1)1.1基本功能 (1)1.1.1三级标题 (1)1.1.2代码的格式 (1)1.2拓展功能 (2)1.3其他功能 (4)2详细设计说明 (5)2.1原“TYPETEST.ASM”程序结构 (5)2.2已经实现的功能(修改的、新编写的)程序结构 (5)2.3欲穷千里目 (5)2.4更上一层楼 (5)3对该“打字练习程序”的进一步设想 (6)3.1春眠不觉晓 (6)3.2处处闻啼鸟 (6)3.3夜来风雨声 (6)3.4花落知多少 (6)4课程设计总结 (7)4.1故人西辞黄鹤楼 (7)4.2烟花三月下扬州 (7)4.3孤帆远影碧空尽 (7)4.4惟见长江天际流 (7)5软件使用说明 (8)5.1长风破浪会有时 (8)5.2直挂云帆济沧海 (8)参考文献 (9)附录 (10)1 概述开场白……(所有论文的正文内容样式设置为:论文正文)↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑1.1 基本功能一般,标题之后,次一级标题之前应该写些过渡性的话。

汇编语言课程设计报告(张曙光)

汇编语言课程设计报告(张曙光)

汇编语言课程设计报告课程名称:汇编语言课程设计设计题目:显示系统时间院系:计算机科学与技术学院班级:计专10703设计者:张曙光学号: 200700172序号: 33指导教师:雷鸣设计时间: 2009.06.08-2009.06.19目录1.课程设计题目2.课程设计内容3.设计目的4.设计图形5.源代码6.运行界面7.感想体会一,课程设计目的。

1. 掌握中断的使用方法。

2. 掌握BIOS系统功能调用。

3. 掌握基本的显存读写技术。

4. 学会用汇编语言编写一个较完整的实用程序,培养自己的动手操作能力。

5 .学习程序设计的基本思路和方法,编程、调试、撰写报告等。

二、程序内容:第一部分:定义显示界面。

第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入显存区。

(显存的起始地址:B8000H)第三部分:将存在系统内存区的时间用字符串的形式显示出来。

第四部分:定时响铃功能,指定时间和倒计时。

响铃为一首自写音乐。

注意:1、如果用图形方式显示更好,2、注意设置显示时候的背景颜色3、可以增加键盘设置的功能,设置显示颜色,显示位置4、闹铃如果不关闭,可以设置为间隔1分钟再响三、程序设计原理首先在数据段开辟一显示缓冲区,用来存储系统时间。

调用BIOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。

分别将来小时数、分钟数、秒数存入显示缓冲区。

通过写显存将时间显示出来。

由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。

定时功能主要指定一个报警时间作为比较,到了需要响铃时间调用一个音乐程序表示时间到。

四、程序流程图五、程序代码eraserScreen macro ab ;;清除过时显示的时间push axpush cxpush bxmov bx ,cloAddre ;;当前地址sub bx,ab ;;得按键前地址mov ax,0b800hmov es,axmov di,bxlea si,blankcall disptimepop bxpop cxpop axendmclearscreen macro clor ;;相当于清屏,指定颜色push cxpush sipush dimov cx,1lea si, blankwritechar 0,0,clor,2000pop dipop sipop cxendmwritechar macro arra,row,color,cc ;;在指定位置写入数据local LPmovdl,arra ;;第几列LP: movdh ,row ;;第几行movah,02 ;;设置位置mov bh, 0int 10hmov al,[si]mov ah,09hmovbl,color ;;颜色push cxmov cx,ccint 10hadd si,1add dl,1pop cxloop LPendm.model small.stack.data;----------------------------------------------------------学生个人信息MESS1 DB0DH,0AH,0DH,0AH,0DH,0AHDB9,9,9,'------------------------------',0DH,0 AH ;0DH,0AH是回车换行的意思DB 9,9,9,'|Students',33,' information|',0DH,0AHDB 9,9,9,'| name: zhangshuguang |',0DH,0AHDB 9,9,9,'| class: three |',0DH,0AHDB 9,9,9,'| Grade: Tow |',0DH,0AHDB 9,9,9, '| Number: 200700172 |',0DH,0AHDB9,9,9,'-------------------------------',0DH,0AH,'$'MSG1 DB0DH,0AH,9,9,9,'press any key tocontinue.....',0DH,0AH,'$';提示信息;---------------------------------------------------------- 菜单MESS2 DB0DH,0AH,0DH,0AH,0DH,0AHdb9,9,9,'-------------------------------',0DH, 0AHDB 9,9,9,'| 1- Create a music |',0DH,0AHDB 9,9,9,'| 2- Time to ring a bell |',0DH,0AHDB 9,9,9,'| 3- Exit |',0DH,0AHDB9,9,9,'-------------------------------',0DH,0AH,'$'MSG2 DB 0DH,0AH,9,9,9,' PRESS [1 OR 2 OR3 ]',0DH,0AH,'$';提示信息;---------------------------------------------------------- 变量数据showMusicBook DB0DH,0AH,0DH,0AH,0DH,0AHdb 9,9,9 ,'PRESS [#] TO CONCLUDE',0DH,0AHdb 9, 'The Music book is: ','$'showMSG db'PRESS [Q] TO STOP THE CLOCK',0DH,0AHdb'PRESS [ESC] TO EXIT',0DH,0AHdb'PRESS [B] TO BACK THR MAIN MU' ,'$'cloAddre dw 850hmsgdown db'the last:',?,' ','S'len equ $-msgdownblank db 25 dup(' '),0,0msgring db' Ring Ok!',10 dup(' ')music db'337665654444334555666#'INITAB dw8E5H,7F4H,6ADH,5F1H,54BH,4B7H ,472HsetTime db'Please set the time to ring','$'timer0 db?,?timer1 db 0ffhsign db 0year db?,?,?,?db'/'mounth db?,?db'/'day db?,?,0,0msg db' The time is: 'time0 db?,?db':'time1 db?,?db':'time2 db?,?,0,0.code.startup;----------------------------------------------------------程序开始MOV AH,09HLEA DX, MESS1INT 21HMOV AH,09HLEA DX, MSG1INT 21Hmov ah,07hint 21HSTART0: clearscreen 6fhmov ah,09hlea DX,MESS2INT 21HLEA DX,MSG2 ;显示提示信息MSG2INT 21HLOP1: MOVAH,08H ;从标准输入设备输入一个字符,在此是用户输入所选菜单INT 21H;-------------------------------判断从键盘输入的选项PUSH AXCMP AL,'3'JZ C3POP AXPUSH AXCMP AL,'1'; JZ (相等的时候跳转)JZ C1 ;若等于1,则跳转到C1POP AX ;否则AX出栈,并与2比较PUSH AXCMP AL,'2'JZ C2POP AXJMP LOP1 ;否则跳转到LOP1,即重新输入一个字符(1/2/3);----------------------------------------------------------------------- 此为前面所要跳转的程序C1: clearscreen 6fhcallcreatMiusic ;创作铃声mov byte ptr sign,1 ;闹铃开启call clockmov byte ptr sign,0 ;闹铃关闭JMP START0C2: JMP START1C3: JMP over;----------------------------------------------- 设置闹钟闹铃时间START1: clearscreen 6fhpush dxpush bxmov dl,10 ;第几列mov dh ,5 ;设置光标位置mov ah,02mov bh, 0int 10hlea dx, setTimemov ah,09hint 21hpop bxpop dxpush sipush cxlea si,timer0mov cx ,2;-----------;输入需闹铃时间input: mov ah,02hmov dl,':';冒号输出int 21hmov ah,01hint 21h;-------- ;以下为输入有效值的判断,时针在00-23有效,分针在00-59有效.if cx==2 ;输入时高位.if al>'2'pop cxpop sijmp START1.elseif al<'0'pop cxpop sijmp START1.elsemov bl,al.endif.else.if al>'5'pop cxpop sijmp START1.elseif al<'0'pop cxpop sijmp START1.elsemov bl,al.endif.endifint 21h.if cx==2 ;输入时低位.if bl=='2';若高位为2,则地位有效输入为0-3.if al>'3'pop cxpop sijmp START1.elseif al<'0'pop cxpop sijmp START1.elsesub al,'0'sub bl,'0'push cxmov cl,4shl bl,clpop cxadd bl,almov byte ptr [si],bladd si,1.endif.else.if al>'9'pop cxpop sijmp START1.elseif al<'0'pop cxpop sijmp START1.elsesub al,'0'sub bl,'0'push cxmov cl,4shl bl,clpop cxadd bl,almov byte ptr [si],bladd si,1.endif.endif.else.if al>'9'pop cxpop sijmp START1.elseif al<'0'pop cxpop sijmp START1.elsesub al,'0'sub bl,'0'push cxmov cl,4shl bl,clpop cxadd bl,almov byte ptr [si],bladd si,1.endif.endifdec cxjnz inputstartcha: PUSH DXPUSH BXmov dl,0 ;第几列mov dh ,0;设置光标位置mov ah,02mov bh, 0int 10hPOP BXPOP DXmov dx,offset showMSGmov ah,09hint 21h;---------------------------------------------------------- 读取系统时间startloop:push cxpush dxpush espush sipush dimov ah,2ah ;获取系统时间,cx→year dh→mouth dl→day,为十六进制表示int 21hcall translate ;转化寄存器中值为BCD码格式mov al,chlea si,yearcall bcd ;将BCD码转化为可以输出的相应字符mov al,cllea si,year[2]call bcdmov al,dhlea si,mounthcall bcdmov al,dllea si,daycall bcdmov ax,0b800h ;将年月日写入显存mov es,axmov di,720hlea si,yearcall disptimepop dipop sipop espop dxpop cxmov ax,0200h ;获取系统时间,ch→hours cl→minutes DH→seconds,均为BCD码格式int 1ahmov al,chlea si,time0call bcdmov al,cllea si,time1call bcdmov al,dhlea si,time2call bcdmov ax,0b800h ;显存地址采用直接写显存的方法输出字符mov es,ax ;es:di 指向显存地址mov di,cloAddre ;变量cloAddre为偏移地址lea si,msgcall disptime ;显示时间;---------------------------------------------------------- 判断是否闹铃mov al,sign ;判断闹铃是否开着sign为1表示没有开着or al,aljnz to@ ;若闹铃没关,整分闹铃mov al,chxor al,timer0[0] ;比较时针jnz disp0mov al,clxor al,timer0[1] ;继续比较分针jnz downcor dh,dhjnz disp0mov byte ptr sign,1 ;闹铃开启call clock ;闹铃jmp disp0;---------------------------------------------------------- 判断倒计时to@ : mov al,dhcmp al,51hjb to1sub al,51hcall countDownto1: mov al,clcmp al,timer1jna to2 ;分针变化则闹call clockto2: mov byte ptr timer1,cljmp disp0downc : mov al,cl ;判断分针,是否可以准备闹铃add al,1xor al,timer0[1]jnz disp0mov al,dhcmp al,51h ;倒数十秒开始闹铃jb disp0sub al,51hcall countDown;---------------------------------------------------------- 键盘控制时间显示位置disp0: mov ah,01hint 16h ;从键盘缓冲区读取扫描码;---------------- 是否按了'Q'键cmp ah,10hjne i0mov byte ptr sign,0 ;关闭闹铃call clearjmp startloop;---------------- 是否按了'上'方向键i0:cmp ah,48hjne i1sub cloAddre,160call cleareraserScreen0ff60h ;当前地址减160jmp intend ;直接结束一次中断,以避免修改其它单元内容;-------------- 是否按了'左'方向键i1: cmp ah,4bhjne i2sub cloAddre,2call cleareraserScreen 0fffeh ;当前地址减2jmp intend;---------------是否按了'下'方向键i2:cmp ah,50hjne i3add cloAddre,160call cleareraserScreen 160 ;当前地址加160jmp intend;---------------- 是否按了'右'方向键i3:cmp ah,4dhjne i4add cloAddre,2call cleareraserScreen2 ;当前地址加2jmpintend ;直接结束一次中断,以避免修改其它单元内容; ---------------- ;是否按了'ESC'键i4:cmp ah,01hjne i5jmp over; ---------------- ;按以下键变化不同种颜色i5: .if ah==1eh ;按A键变色clearscreen 04hcall clearjmp startcha.elseif ah==1fh ;按S键变色clearscreen 1ehcall clearjmp startcha.elseif ah==20h ;按D键变色clearscreen 0e0hcall clearjmp startcha.elseif ah==21hclearscreen 23hcall clearjmp startcha.elseif ah==22hclearscreen 41hcall clearjmp startcha.elsejmp i6.endifi6: cmpah,30h ; 按'B '键jeSTART0 ;返回主菜单intend : call clearjmp startloop;----------------------------------------------------------bcd码转换bcd:mov ah,alpush cxmov cl,4shr ah,clpop cxand al,0fhadd ax,'00'xchg ah,almov ds:[si],axret;--------------------------------------------------------------退出over: mov ax,4c00hint 21h;---------------------------------------------------------- 显示时间子程序disptime procdisp : mov al,[si]inc sior al,aljz backcldstosb ;将al 传送到es:diinc dijmp dispback: retdisptime endp;----------------------------------------------------------编写音乐子程序creatMiusic procpush axpush sipush cxpush dxmov dx,offset showMusicBookmov ah,09hint 21hlea si,musicloop0: mov ah,07hint 21hcmp al,'#'jne loop1mov byte ptr [si],aljmp finish ; '#'结束编辑loop1: .if al<'1';有效输入值为'1'~'7'jmp loop0.elseif al>'7'jmp loop0.elsemov ah,02mov dl,alint 21hmov byte ptr [si],alinc si.endifjmp loop0finish: pop dxpop cxpop sipop axretcreatMiusic endp;----------------------------------------------------------倒计时子程序countDown procpush cxpush dxpush simov ah,almov al,9subal,ah ;用9减当前秒数即得倒计数addal,'0';将字符存入指定位置lea si,msgdownpush siadd si,lensub si,3mov byte ptr [si],alpop simov cx,lengthof msgdownwritechar 28,7,0f4h,1pop sipop dxpop cxretcountDown endp;------------------------------------------------------清除键盘缓冲区clear procpush espush axpush cxpush dxpush dimov ax,0040hmov es,axmov ax,es:[001ch]mov word ptres:[001ah],ax ;队首地址等于队尾地址mov di,es:[001ch]mov word ptres:[di],0000h ;清0pop dipop dxpop cxpop axpop esretclear endp;----------------------------------------------------------发声闹铃子程序clock procpush axpush bxpush cxpush dxpush simov cx ,lengthof msgringlea si,msgringwritechar 28,7,0f4h,1MOV si,offset musicLP1: mov al,[si]CMP AL,'#'JZ DONEAND AL,0FHDEC ALSHL AL,1XOR AH,AHpush siLEA SI,INITABADD SI,AX ;对映相应音调频率MOV BX,[SI]MOV AL,01HOUT 61,ALMOVAL,10110110B ;给定时器2送控制字OUT43H,AL ;2号控制寄存器MOV AL,BLOUT42H,AL ;给定时器送计数值低字节MOV AL,BHOUT42H,AL ;给定时器送计数值高字节IN AL,61HOR AL,3 ;开扬声器,低二位全置1OUT 61H,ALCALL DELAYAND AL,0FCH ;关闭扬声器,低二位置为0OUT 61H,ALpop siadd si,1in al,60hcmp al, 10hjne gomov byte ptr sign,0jmp DONEgo: JMP LP1DONE: mov cx ,lengthof msgringlea si, blankwritechar 28,7,6fh,1pop sipop dxpop cxpop bxpop axretclock endp;----------------------------------------------------------延时子程序DELAY PROC nearMOV CX,0DL2: MOV AX,10000DL1: SUBAX,1 ;1000*65535JNZ DL1LOOP DL2RETDELAY ENDP; --------------------------------将0ah 转换成10h的形式translate procpush bxxor bx,bxlpp0 : cmpcx,1000 ;若大于1000没比较一次bx加1000h,cx自减1000jb lpp1sub cx,1000add bx,1000hjmp lpp0lpp1: cmpcx,100 ;若大于100没比较一次bx加100h,cx自减100jb lpp2sub cx,100add bx,100hjmp lpp1lpp2: cmpcx,10 ;若大于10没比较一次bx加10h,cx自减10jb lpp3sub cx,10add bx,10hjmp lpp2lpp3: addbx,cx ;若小于10,bx直接加cxmovcx,bx ;得到转换后cx值xorbx,bx ;bx清0lpp4: cmp dl,10jb lpp5sub dl,10add bl,10hjmp lpp4lpp5: add bl,dlmov dl,blxor bx,bxlpp6: cmp dh,10jb lpp7sub dh,10add bl,10hjmp lpp6lpp7: add bl,dhmov dh,blpop bxrettranslate endpend; -------------------------------六.程序调试1,学生信息主界面。

汇编语言程序设计实验报告一

汇编语言程序设计实验报告一

汇编语言程序设计实验报告(一)一、实验目的1. 掌握顺序程序设计方法2. 掌握分支程序的结构及分支程序的设计,调试方法3. 学习数据传送及算术和逻辑运算指令的用法4. 熟悉在PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程二、实验内容1. 从键盘上接收一位十进制数X ,计算Y 值,并以十六进制形式显示出来,Y 按下列公式计算。

⎪⎪⎩⎪⎪⎨⎧===-=+=)6(2/)5()4(2)3(2222X X X X X X X X X X Y 2. 从键盘上接收两个一位十六进制数X 和Y ,然后再输入一个A-D 之间的字符,按下列要求计算。

A )当输入字符为A ,则计算X+Y ,并以十六进制形式显示出来B )当输入字符为B ,则计算|X-Y|,并以十六进制形式显示出来C )当输入字符为C ,则计算X*Y ,并以十六进制形式显示出来D )当输入字符为D ,则计算X/Y ,并以十六进制形式显示出来三、实验结果1、结果截图2、结果截图四、源代码1、代码DATA SEGMENTX DB ?TABLE DW L1,L2,L3,L4DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AH,1INT 21HCMP AL,33HJB L0CMP AL,36HJA L0AND AL,0FHMOV X,ALSUB AL,3SHL AL,1XOR AH,AHMOV BX,OFFSET TABLEADD BX,AXJMP [BX]L1:MOV AL,XMUL ALADD AL,XJMP L7MUL ALSUB AL,XSUB AL,XJMP L7L3:MOV AL,XMUL ALJMP L7L4:MOV AL,XMUL ALMOV CL,2DIV CLJMP L7L7:MOV BL,ALMOV CL,4SHR AL,CLCMP AL,9JLE L5ADD AL,7L5:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BL,0FHCMP BL,9JLE L6ADD BL,7L6:ADD BL,30HMOV DL,BLMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START2、代码DA TA SEGMENTX DB ?Y DB ?Z DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAXOR AX,AXMOV AH,1INT 21HMOV X,ALMOV AH,1INT 21HMOV Y,ALMOV AH,1INT 21HMOV Z,ALMOV AL,XMOV BL,YMOV AH,ZCMP AL,39HJBE M1SUB AL,7M1:SUB AL,30H MOV X,ALCMP BL,39HJBE M2SUB BL,7M2:SUB BL,30H MOV Y,BLMOV AL,XMOV BL,YCMP AH,41HJE L1CMP AH,42HJE L4CMP AH,43HJE L6CMP AH,44HJE L7L1:ADD AL,BLJMP L5L4:CMP AL,BLJA L8SUB BL,ALMOV AL,BLJMP L5L8:SUB AL,BLJMP L5L6:MOV AL,XMUL BLJMP L5L7:XOR AX,AXMOV AL,XDIV BLL5:MOV BH,ALMOV CL,4SHR AL,CLCMP AL,9JLE L2ADD AL,7L2:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BH,0FHCMP BH,9JLE L3ADD BH,7L3:ADD BH,30HMOV DL,BHMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START五、实验心得通过本次实验,我对汇编语言程序设计的方法和特点有了一点理解,并有以下心得体会。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。

在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。

本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。

实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。

实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。

实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。

汇编语言使用助记符来代表机器指令,与机器指令一一对应。

了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。

2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。

例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。

3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。

为了解决这些问题,我学会了使用调试工具来定位错误。

通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。

4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。

通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。

实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。

汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。

通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。

总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。

通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。

这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。

汇编语言的课程设计

汇编语言的课程设计

汇编语言的课程设计一、教学目标本课程的教学目标是使学生掌握汇编语言的基本概念、语法和程序设计方法,培养学生运用汇编语言进行程序设计的能力。

具体目标如下:1.知识目标:(1)了解汇编语言的基本概念和特点;(2)掌握汇编语言的语法规则,包括数据类型、指令系统、程序结构等;(3)熟悉汇编语言的编程技巧,如寄存器分配、内存管理等;(4)了解汇编语言与机器语言的关系及汇编过程。

2.技能目标:(1)能够使用汇编语言编写简单的程序,如计算器、排序等;(2)能够阅读并理解汇编语言程序;(3)能够对汇编语言程序进行调试和优化。

3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情;(2)培养学生勇于探索、善于合作的科学精神;(3)培养学生严谨治学、追求卓越的学习态度。

二、教学内容本课程的教学内容主要包括以下几个部分:1.汇编语言的基本概念和特点;2.汇编语言的语法规则,包括数据类型、指令系统、程序结构等;3.汇编语言的编程技巧,如寄存器分配、内存管理等;4.汇编语言与机器语言的关系及汇编过程;5.汇编语言程序的设计与调试。

教学大纲安排如下:第1-2课时:汇编语言的基本概念和特点;第3-4课时:汇编语言的语法规则;第5-6课时:汇编语言的编程技巧;第7-8课时:汇编语言与机器语言的关系及汇编过程;第9-10课时:汇编语言程序的设计与调试。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解汇编语言的基本概念、语法规则和编程技巧;2.案例分析法:分析典型的汇编语言程序,使学生更好地理解编程思想;3.实验法:让学生动手编写和调试汇编语言程序,提高实际操作能力;4.讨论法:分组讨论问题,培养学生的合作精神和沟通能力。

四、教学资源本课程所需教学资源包括:1.教材:《汇编语言程序设计》;2.参考书:《汇编语言教程》、《汇编语言实践》;3.多媒体资料:课件、教学视频等;4.实验设备:计算机、汇编语言编程环境。

汇编语言课程设计报告

汇编语言课程设计报告

目录第1章前言 (2)1.1 背景 (2)1.2基本功能要求 (2)第2章题目基本内容 (2)第3章系统流程框图 (3)第4章对课程设计中关键内容的分析设计说明或举例说明 (4)第5章源程序代码 (5)第6章心得体会 (7)第7章使用说明 (7)参考文献 (8)第一章前言1.1背景汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。

汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。

高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。

在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。

现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。

汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。

它主要有以下几种特点:1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。

2.保持了机器语言的优点,具有直接和简捷的特点。

3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。

5.经常与高级语言配合使用,应用十分广泛。

汇编语言是理解整个计算机系统的最佳起点和最有效途径,人们经常认为汇编语言的应用范围很小,而忽视它的重要性。

其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。

所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。

所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。

机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。

汇编语言直接描述机器指令,比机器指令容易记忆和理解。

汇编语言课程设计报告报告

汇编语言课程设计报告报告

湖南农业大学课程设计报告学院:班级:姓名:学号:课程设计题目:编密码课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:日期:年月日概述 (3)一设计内容与要求 (3)二设计思想 (3)三程序流程图 (4)四程序源代码 (5)五效果图 (7)六设计过程中遇到的问题及解决方法 (7)七设计心得 (7)编密码概述汇编语言:是用英文缩写形式的助记符书写指令。

汇编语言是一种面向CPU指令系统的程序语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址。

用汇编语言编写程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程成为汇编,完成汇编任务的程序称为汇编程序。

所以我在MASM汇编程序中进行汇编,通过相应的代码来调用相应的指令实现编密码。

、设计要求(小标题一律用宋体小四加粗)要求:按照以下规律编密码:1.字母A变为E,a变为e即是字母变成其后面的第4个字母2.但Wv变Aa, Xx 变Bb, Yy 变Cc, Zz 变为Dd.3.非字母不变如1234567890, !@$4.并可以循环转换5.例如“ 123CHINA@ 变为“ 123GLMRE@、设计思想首先,先定义两个缓存区,一个用来存放输入的密码(BUF2),一个用来存放变换后的密码(BUF3)。

先输入一个十位数内的密码,然后--------------------- 对一个个字符进行判断。

先判断ascall是否小于41H,如果是则不是字母那就不变换直接转到read1,存入BUF3。

如果大于41H在判断是否大于61H即判断是不是小写的,如果小于的话在判断大于5bH吗?如果大于则不是字母那就不变换直接转到read1,存入BUF3。

如果小于的话,在判断是不是大于w的ascall, 如果大于就转到read3,减22在,存入buf3.否则转到read4,加4在存入BUF3。

如果大于等于61H的话,同样的道理,判断是否大于W,如果大于在判断大于7AH吗。

汇编课程设计报告

汇编课程设计报告

- 3 -编密码概述汇编语言:是用英文缩写形式的助记符书写指令。

汇编语言是一种面向CPU指令系统的程序语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址。

用汇编语言编写程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程成为汇编,完成汇编任务的程序称为汇编程序。

所以我在MASM汇编程序中进行汇编,通过相应的代码来调用相应的指令实现编密码一、设计要求(小标题一律用宋体小四加粗) 要求:按照以下规律编密码:1.字母A 变为E,a 变为e即是字母变成其后面的第4 个字母。

2.但Ww变Aa,Xx 变Bb,Yy 变Cc,Zz 变为Dd.3.非字母不变如1234567890,!@$4.并可以循环转换5.例如“123CHINA@”变为“123GLMRE@二、设计思想首先,先定义两个缓存区,一个用来存放输入的密码(BUF2),一个用来存放变换后的密码(BUF3)。

先输入一个十位数内的密码,然后一一对一个个字符进行判断。

先判断ascall 是否小于41H,如果是则不是字母那就不变换直接转到read1,存入BUF3。

如果大于41H 在判断是否大于61H即判断是不是小写的,如果小于的话在判断大于5bH吗?如果大于则不是字母那就不变换直接转到read1,存入BUF3。

如果小于的话,在判断是不是大于w的ascall,如果大于就转到read3,减22在,存入buf3.否则转到read4,加4在存入BUF3。

如果大于等于61H的话,同样的道理,判断是否大于W,如果大于在判断大于7AH吗。

判断是不是字母,如果不是那就不变换直接转到read1,存入BUF3。

否则转到read3减22,在存入BUF3。

如果没有大于77H,直接转到read4,加4在存入BUF3。

最后将变换后的密码输出来。

输出后并将其转到qing,既将BUF2和BUF3缓存区的数据清空,在回到start1,重新输入一个字符串并对它进行编密码转换。

汇编语言课程设计报告a

汇编语言课程设计报告a

课程设计报告课程名称80x86汇编语言程序设计课题名称班级成绩管理程序专业应用技术学院班级计算机0581学号21姓名戴天翔指导教师刘铁武2007年9 月28 日湖南工程学院课程设计任务书课程名称80x86汇编语言程序设计课题班级成绩管理程序专业班级计算机0581学生姓名戴天翔学号21指导老师刘铁武审批任务书下达日期2007 年9 月18 日任务完成日期2007年9 月25 日目录设计内容和设计要求 (4)课题主要功能 (6)课题功能模块 (6)课题主要功能实现 (8)上机调试 (10)心得体会 (12)附录(原程序) (13)一、设计内容与设计要求一、课程设计目的通过本周的课程设计,学生能够巩固所学的基础知识,并能够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。

二、课程设计课题环境一台硬件配置为586以上电脑,在操作系统为WINDOWS 98/XP/2000等的环境下,使用汇编程序设计语言来完成该任务。

三、设计内容与设计要求1.设计内容:课题一:编制一计算比赛成绩的程序。

要求完成以下功能:(1) 9名评委,每个评委给分范围为0~10(整数);(2) 9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位);(3) 将得分在光标位置处显示出来。

课题二:班级成绩处理程序。

编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,各数据的格式为:学号,成绩1,成绩2,…,成绩5然后根据grade中的学生成绩,把学生名次填入rank数据组中,并显示出来,格式为:学号,名次课题三:时间显示程序。

利用INT 1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为时:分:秒:1/100秒课题四:图形显示程序。

汇编课程设计实验报告

汇编课程设计实验报告

汇编语言程序设计实验报告专业:班级:学号:姓名:日期:湖南科技大学实验报告一实验题目:有两个数(字数据)DATA1和DATA2,把两数之和放在DA TA3中,两数之差放在DA TA4中。

实验目的:1.熟练掌握汇编语言的程序结构,学会如何使用数据定义、符号定义、模块定义等常用的批示性语句。

2.熟悉汇编语言的工作环境;学会使用汇编语言的编辑、汇编、和连接装配程序的方法;熟悉汇编语言程序的编辑-汇编-连接-运行-调试的过程3.熟练掌握用DEBUG来调试程序,掌握调试程序的反汇编、读写寄存器或存储单元、运行程序等简单的调试命令。

4.熟悉汇编语言指令,学会使用数据传送,算术逻辑运算,处理器控制等简单指令。

实验主要原理:先用数据传送指令将DATA1,DA TA2放入AX和BX两个寄存器中,分别用ADD和SUB 两个指令来计算两数之和与两数之差,再用数据传送指令将两数之和放入DA TA3中,将两数之差放入DATA4中。

最后用ret指令返回DOS程序流程图:源程序:datarea segmentDA TA1 dw 5 ;数据定义DA TA2 dw 4DA TA3 dw ?DA TA4 dw ?datarea endsprognam segmentmain proc farassume cs:prognam,ds:datareastart: push ds ;准备工作sub ax,axpush axmov ax,datareamov ds,axmov ax,DATA1mov bx,DATA2add ax,bx ;做加法mov DATA3,axmov ax,DATA1sub ax,bx ;做减法mov DATA4,axretmain endpprognam endsend startDEBUG调试关键步骤:执行mov ax,DATA1(AX)=5,传送成功执行add ax,bx(AX)=9,加法成功执行到最后ret时,查看数据段内容分别为5, 4,9,1 说明加法,减法都成功执行运行结果:(DATA3)=9(DA TA4)=1实验报告二实验题目:数据段中有一个字符串DATA1,串长为3,内容为‘CDE’,还有另一个字符串为DATA2,长度为4,内容为‘ABCD’。

汇编语言课程设计报告

汇编语言课程设计报告

课程设计报告课程名称汇编语言程序设计课题名称1、显示彩色菱形2、显示系统当前时间专业班级学号姓名指导教师年月日课程设计任务书课程名称汇编语言程序设计课题1、显示彩色菱形2、显示系统当前时间专业班级学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日一、设计内容与设计要求1.设计内容:通过本周得课程设计,学生能够巩固所学得基础知识,并能够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计得方法与过程,以及为设计其它应用软件提供帮助,进而提高学生得软件设计能力。

(1)、编制一计算比赛成绩得程序,要求完成以下功能:a、9名评委,每个评委给分范围为0~100(整数);b、9名评委给分中,去掉一个最高分与一个最低分,剩余7名评委得平均分即为参赛者得得分(精确到小数点二位);c、将得分在光标位置处显示出来。

(2)、编制一程序,要求接收从键盘输入得一个班得学生成绩,并存放于30字得grade 数组中,各数据得格式为:学号,成绩1,成绩2,…,成绩5然后根据grade中得学生成绩,把学生名次填入rank数据组中,并显示出来,格式为: 学号,名次(3)、利用INT 1CH(大约每秒中断18、2次)编写一个中断驻留程序,要求在屏幕得右上角显示计算机中当前系统时间,显示格式为时:分:秒:1/100秒(4)、输入一个菱形得两条对角线长,在屏幕上用‘*’号画出一个彩色得菱形。

(5)、设置图形方式并显示彩条,要求:选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次,一直到整个屏幕都显示出彩条2.设计要求:掌握结构化程序设计得主体思想,以自顶向下逐步求精得方法编制程序解决一些实际得问题,为将来编写软件积累一些典型得案例处理经验。

(1)、设计正确,方案合理。

(2)、界面友好,使用方便。

(3)、程序精炼,结构清晰。

(4)、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。

汇编语言课程设计报告

汇编语言课程设计报告

汇编语言课程设计报告汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。

下面是xx为大家整理的关于汇编语言课程的设计报告,欢迎大家的阅读。

汇编语言编程是一门实践性很强的课程。

编写程序、调试和运行程序是进一步学习和掌握汇编语言编程的必要手段。

1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序3.主汇编程序ASM和宏汇编程序。

4.链接链接器5。

调试调试程序编辑源文件根据给定的任务,可编写程序。

如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。

一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件存盘。

将包含QE文件的工作磁盘插入驱动器a:。

进入QEA>QE进入全屏,开始幕后编程。

文件名是myprog。

asm;Ddisplysting(09h)代码段公共assumecs:code,ds:codeorg100hstart:jmpbegin你好!此IAdollarSignedTerminatedString.,“$”开始:movax,cs;setuptodisplaymessagemovds,axmovdx,offset,sg;setuptodisplaymessagemovah,09h;displaystringfunctionrequestint 21h;calldos莫瓦,4ch;终止丙丙咪嗪功能;calldoscodeends;endofcodesegmentendstart;stratistheentrypoint输入完毕后,按alt---x,存盘返回dos3、汇编源程序文件编辑器创建的ASM文件只是一个文本文件,计算机无法执行。

汇编程序需要对其进行编译,才能将其转换为目标代码文件。

它通过调用宏汇编MASM程序来完成这个汇编操作。

汇编程序还将检查源文件的语法。

如果发现任何错误,将给出错误原因。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程名称80x86汇编语言程序设计课题名称班级成绩管理程序专业应用技术学院班级计算机0581学号21姓名戴天翔指导教师刘铁武2007年9 月28 日湖南工程学院课程设计任务书课程名称80x86汇编语言程序设计课题班级成绩管理程序专业班级计算机0581学生姓名戴天翔学号21指导老师刘铁武审批任务书下达日期2007 年9 月18 日任务完成日期2007年9 月25 日目录设计内容和设计要求 (4)课题主要功能 (6)课题功能模块 (6)课题主要功能实现 (8)上机调试 (10)心得体会 (12)附录(原程序) (13)一、设计内容与设计要求一、课程设计目的通过本周的课程设计,学生能够巩固所学的基础知识,并能够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。

二、课程设计课题环境一台硬件配置为586以上电脑,在操作系统为WINDOWS 98/XP/2000等的环境下,使用汇编程序设计语言来完成该任务。

三、设计内容与设计要求1.设计内容:课题一:编制一计算比赛成绩的程序。

要求完成以下功能:(1) 9名评委,每个评委给分范围为0~10(整数);(2) 9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位);(3)将得分在光标位置处显示出来。

课题二:班级成绩处理程序。

编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,各数据的格式为:学号,成绩1,成绩2,…,成绩5然后根据grade中的学生成绩,把学生名次填入rank数据组中,并显示出来,格式为:学号,名次课题三:时间显示程序。

利用INT 1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为时:分:秒:1/100秒课题四:图形显示程序。

输入一个菱形的两条对角线长,在屏幕上用‘*’号画出一个彩色的菱形。

课题五:显示模式设置程序。

设置图形方式并显示彩条,要求:选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次,一直到整个屏幕都显示出彩条。

2.设计要求:选题原则为:学号尾数。

0—1必选第一课题;2—3必选第二课题…如此类推。

根据所选设计课题要求完成相应内容。

每人至少完成一个课题。

课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。

正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。

正文总字数要求在5000字以上(不含程序原代码)。

四、课程设计时间安排1、时间:第4周2、指导老师:刘铁武,曹焱3、具体时间安排表:二、课题的主要功能根据课程设计任务书要求,我选择了课题1和课题2进行设计。

课题1本程序以microsoft visual basic作为开发平台,根据课题要求,对输入的九个数(范围为0~10的整数),在这九个数中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位),然后将得分在光标位置处显示出来。

课题2本程序以microsoft visual basic作为开发平台,根据课题要求,实现了学生基本情况录入,对学生成绩的查询,修改,删除功能。

三、课题的功能模块课题1由评委从键盘输入9个整数,通过比较,去掉最大的数字和最小的数字,剩余7个数字进行取平均值计算,最后把取到的值在屏幕上输出。

课题2操作人员进入功能选取界面,通过选择界面选取相应的操作功能,“L”表示录入功能,“I”表示查询功能,“S”表示修改功能,“D”表示删除功能,“Q”表示推出系统。

操作选择功能由以下程序模块完成:INPUT: MOV AH,0INT 16HCMP AH,26H ;IS 'L'?JNZ NEXT1CALL LISTJMP MAINLOOPNEXT1: CMP AH,17H ;IS 'I'?JNZ NEXT2CALL INSERTJMP MAINLOOPNEXT2: CMP AH,1FH ;IS 'S'?JNZ NEXT3MOV STA TE,'S'CALL SEARCHJMP MAINLOOPNEXT3: CMP AH,20H ;IS 'D'?JNZ NEXT4CALL SEARCHJMP MAINLOOPNEXT4: CMP AH,10H ;IS 'Q'?JNZ INPUTRET学生基本信息录入功能,通过此功能完成对学生基本信息的录入,基本信息包括(姓名,学号,性别,成绩,和学分),这个模块中主要是以链表的方式录入。

WRITES:SHOW NAMESGETSTR NSHOW AGEGETSTR ASHOW SEXGETSTR SSHOW HEIGHTGETSTR HSHOW WEIGHTGETSTR WMOV AH,15HLEA DX,MYFCBINT 21HCALL CLOSEFRET查询功能:选择此功能,会出现一个提示界面,提示操作者按什么关键字进行查询,操作的人可以通过选择1—5的数字来进行选择,“1”表示用姓名做为关键字进行查询,“2”表示用学号做为关键字进行查询,“3”表示用性别做为关键字进行查询,“4”表示用成绩做为关键字进行查询,“5”表示用学分做为关键字进行查询。

当选择了查询的关键字后,操作者可以按界面提示进行操作来完成查询功能。

START:SHOW NAMESSHOW AGESHOW SEXSHOW HEIGHTSHOW WEIGHTSHOW WHICHINWAY: MOV AH,1INT 21HCMP AL,'1'CMP AL,'5'JG INWAYSUB AL,31HMOV WAY,ALSHOW STRINGGETSTR V ALUESHOW PROMPTCMPLOOP:MOV AH,14HLEA DX,MYFCBINT 21HCMP AL,01JNZ NEXTJMP EXITSNEXT: CLDMOV AL,10MUL WAYLEA SI,V ALUELEA DI,NADD DI,AXMOV CX,10REPE CMPSBJNZ CMPLOOPSHOW PRINTMOV FLAG,1MOV CL,RECIDCMP STATE,'D'JNE RETURN修改功能和删除功能,对于操作者来说,只需按早操作界面的提示操作就能完成相关功能的实现。

四、主要功能实现1,课题1(计算比赛成绩):1、计算比赛成绩程序的模块图:2、班级成绩管理程序模块图五、上机调试在程序的整个调试过程中我们遇到了很多困难,有时候忘记使用DOS提供的INT 21H中断功能调用,引号打错或者忘记写了,在输入的过程中也会有错误,这样的错误是很难找的,还有就是在语句后面加的注释,应该要用英语里面的分号,我刚开始用的是汉语里面的分号,结果调试的时候就同时出现了五十几个错误等等,经常会犯一些这种小错误。

在调试的时候遇到大问题是最麻烦的,因为第一个课题是计算比赛程序,其中最难实现的就是最后的结果要精确到小数点后两位,存储起来会比较麻烦,这个问题必须解决。

不过最后这个程序的功能要求还是没有实现。

1)BIOS功能调用INT 10H在BIOS功能调用INT 10H中,AH=02H(置光标位置)和AH=06H(当前显示页上滚)也许是我的程序中用得最多的两个功能号了。

在进入了通讯录界面后怎样使光标到达指定的位置来完成操作呢?功能号AH=02H很好的解决了这个问题。

DH=光标所在行,DL=光标所在列,BH=光标所在页,三个入口参数控制了光标的位置。

功能号AH=06H有什么作用呢?AL=滚动的行数,CH=左上角行数,CL=左上角列数,DH=右下角行数,DL=右下角列数,BH=上滚时添补的空行的属性,07H为正常,70H为反显,这五个入口参数控制形成了一个矩形的信息窗口。

2)DOS功能调用文件知识是以前没有接触过的,成绩管理系统中的信息是存放在文件中的,怎样调用文件中的内容和向文件中添加内容呢?又怎样关闭文件呢?成绩管理文件是事先存在的,所以只要用到3DH打开已存在的成绩文件,其中AH=3DH,AL=存取方式代码,DS:DX指向文件路径名的ASCLL码串。

3EH则用以关闭用打开的文件,对文件添加学生信息则使用3FH,CX=所要读入字节数,DX为存放读入信息的内存地址。

同样的40H对文件或设备进行写操作。

3)宏定义和过程调用在成绩管理系统源程序中我都使用了宏定义和过程使整个程序分成了若干个模块。

为什么要使用宏定义和过程调用呢?使用宏定义和过程调用会使繁杂的程序容易读懂和理解,也使写程序的思路清晰六、心得体会一周的课程设计结束了,但我的心情却极其复杂,我高兴是因为通过一周的努力终于完成了课程设计的任务;但我又非常的伤感,那是因为这次的课程设计让我感觉到前所未有的吃力,这样的吃力不单单是在对基础知识理解得不全面,不系统所造成的。

“汇编语言程序设计”是计算机专业的重要专业基础课,是从事计算机研究与应用的基础,是计算机专业必修的核心课程之一,为更好的培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力,对这门课开设了课程设计。

课程设计是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,汇编语言已经成为当今计算机应用中空前活跃的领域,是很多技术的基础在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握汇编语言是十分重要的。

刚开始做课程设计的时候,看着任务书感到非常的茫然,不知道也不清楚该从何下手,查资料,看课本几乎用了我一半的课程设计时间。

到真正上机调试的时候,问题又接二连三的出现。

先是对应用软件使用的不了解,导致了上机很被动,在老师和同学的帮助下,才能勉强把自己的思路在软件上表述出来。

其次,在课程设计出现问题时,不知道该如何快速的查找错误出处,导致了时间上的浪费。

虽然在老师和同学的帮助下,最后被动,勉强的完成了课程设计任务,但在期间所体现出来的问题,却让我有一种“晴天霹雳”的感觉。

在课程设计时,我也找到了一些问题的所在,不单单是对平时的知识的学习,还有平时学习的方法。

课程设计是为了我们把平时所学的知识运用到实际中去,但当课程实际刚开始时候,我们就出现了“无从下手”的问题,好像平时所学的知识根本用不上。

相关文档
最新文档