当前位置:
文档之家› 汇编语言课程设计-显示数字对称等腰三角形
汇编语言课程设计-显示数字对称等腰三角形
课程设计说明书
NO.8
图 7 程序主界面图
(2)当用户输出字符‘1’时,程序执行功能 1,如图 8 所示。
图 8 功能 1 运行结果
课程设计说明书
(3)当用户输入字符‘2’,程序执行功能 2,结果如下图所示。
NO.9
图 9 功能 2 运行结果
(4)当用户输入字符‘3’,程序执行功能 3,结果如下图所示。
SHUCHU1: mov ah,01h int 21h cmp al,0dh jne zhu CALL CLRSCR
CALL CRLF CALL CRLF mov dh,14 CALL DY1 JMP ZHU
b 使用汇编软件 MASM.EXE 对源程序汇编。 c 使用连接软件 LINK.EXE 对目标文件进行连接。 d使用调试软件DEBUG.EXE对可执行程序进行调试。
2.2总体设计功能
本程序分为 5 个部分,运行程序,首先会显示主界面,用户可依据提示选择不同的编号,实 现不同的功能: 当用户通过键盘输入 1 时,程序执行显示数字对称三角形功能,在运行界面 显示输出的对称三角形。当用户通过键盘输入 2 时,程序执行将三角形边框用彩色显示功能。
否
增,display
图 1 主程序流程框图
课程设计说明书
2.3 详细设计功能 2.3.1 输出数字对称三角形功能
该子程序能够实现从键盘读取字符‘1’后输出数字等腰三角形。
开始
从键盘读取字符
是否为 1
N
Y 输出对应数字三角形 输出错误
结束
NO.3
图 2 输出数字对称三角形程序流程框图
2.3.2 数字对称三角形边框着色功能
课程设计说明书
NO.2
当用户通过键盘输入 3 时,在三角形下方用拼音显示自己的学号和姓名。当用户通过键盘输 入 4 时,退回到主界面。除此以外,输入其他键,提示错误。
开始
Main 函数
LOP1
Dh=1 CH=1,CH++ 显示空格
Cl 自减
LOP2
Cl=0?
是 否
Call space
cl=ch,cl!=0?
MOV AH,01h INT 21H ; mov ah,0h ; int 16h
CMP AL,31h
NO.13
课程设计说明书
JE SHUCHU1 CMP AL,32h JE SHUCHU2 CMP AL,33h JE SHUCHU3 CMP AL,34h JE over call clrscr mov ah,02h mov bh,0 mov dh,10 ;设置提示行号 mov dl,0 ;设置提示列号 int 10h MOV DX,OFFSET NUM1 mov ah,9 int 21h jmp zhu
该子程序能够实现从键盘读取字符不是‘1’‘2’‘3’‘4’后输出’Invalid input !’以提示 错误。
课程设计说明书
开始 从键盘读取字符
NO.6
是否 1~4 之间?
Y
执行对应程序
N
输 出 ’Invalid input !’
结束 图 6 提示错误程序流程框图
START 标志着程序开始执行;ZHU 模块的功能是从键盘读取数据并判断函数的下一步 执行情况,是最主要的模块之一;SHUCHU1,SHUCHU2,SHUCHU3,SHUCHU4 分别表 示按下数字键‘1’,‘2’,‘3’,‘4’,后程序跳到该段开始执行,属于主要的分支模块;DY1 实现了打印数据的功能,其中,LOP2F 实现打印左边数据,LOP2F0 实现对左边边沿数据的 着色 LOP2G 实现打印右边数据,LOP2G0 实现对右边边沿数据的着色;CRLF 可以实现数 据输出前对磁盘的初始化,OUTX 用于显示输出字符,SPACE 用于对数据输出时输出数据 地址的清空,DISPLAY 实现打印要输出的字符;CLRSLR 的功能是清标准屏子程序; WRITECC 为色彩字符输出子程序。在打印左边数据时,CL、AH 用于判断打印的数据是否 在左边边沿,CL、BH 用于判断打印的数据是否属于左边数据的最后一行;在打印右边数据 时,AH 用于判断打印数据是否属于右边数据的最后一行,BL 用于判断打印的数据是否在 右边边沿;AL 用于存放将要打印的数据;CH 用于判断打印是否该结束;DL 存放打印字符 的 ASCLL 码,DH 存放打印字符的颜色值。
ቤተ መጻሕፍቲ ባይዱ
开始
从键盘读取字符 N
是否为 ‘3’ Y 在三角形下方输出姓 名学号
输出错误
结束 图 4 姓名学号显示程序流程框图
课程设计说明书
2.3.4 退出功能
该子程序能够实现从键盘读取字符‘4’后退出运行的程序。
开始
从键盘读取字符
是否为 ‘4’
Y
退出程序
N 输出错误
NO.5
结束
图 5 退出程序流程框图
2.3.5 提示错误功能
另外,在每一个子功能的编写过程中,需要十分的注意到各个变量名的统一化,以便 于将其嵌入到主菜单中去,在编写标识符的名字的时候,尽量要做到看名字知其含义,使程 序的可读性进一步增高。
在编写代码转换程序的过程中,更是体会到了科学的严谨性,每一个小小的错误都不 容忽视,再细小的地方都需要注意,否则将会导致程序的错误。不管在做什么,都需要十分 的认真和谨慎,将每一步都做到最好。
2 设计方案论证 2.1 开发环境
软件环境:操作系统:Windows 8 64 位(DirectX 11)、 BIOS 系统 DOS 系统
硬件环境:处理器:英特尔 第三代酷睿 i3-3110M @ 2.40GHz 双核 内存:4GB(三星 DDR3 1333MHz) 主硬盘:希捷 ST500LM012 HN-M500MBB (500GB/5400 转/分) 显示器:三星 SEC3649(14 英寸)
MASM 开发环境:Masm 是汇编编译器,是微软公司开发的汇编开发环境,拥有可 视化的 开发界面,使开发人员不必再使用 DOS 环境进行汇编的开发的优点,支持伪指令和宏汇编, 最后编译生成 obj 文件,通过 link 工具连接成可执行文件 exe。 使用步骤为:a 使用编辑软件 TE.EXE 进行源程序的编写。
课程设计说明书
6. 附录
源代码:
DATA NUM num0
num1 DATA
SEGMENT DB 0AH,0DH,'F1459106 lizhihong',0ah,0dh,'$' DB 0AH, 0DH, '1shuchusanjiaoxing', 0AH, 0DH DB 0AH, 0DH, '2color' DB 0AH, 0DH, '3name and studentID' DB 0AH, 0DH, '4quit' db 'Invalid input !','$' ENDS
课程设计说明书
NO.1
显示数字对称等腰三角形
1 课程设计的目的
本次课程设计为了巩固和加深课堂所学知识,将课本上的理论知识和实际应用有机的结 合起来,培养我的分析和解决实际问题的能力。通过对汇编语言程序代码的阅读、修改、设 计,理解和掌握复杂的汇编语言应用程序的编程,提高实践编程能力。这个课程设计,能够 显示一个由从一到八的数字组成的左右对称的三角形,给等腰三角形加彩色边框,并且能在 三角形的下方显示自己的学号姓名。
图 10 功能 3 运行结果
(5)当用户输入字符‘4’,程序退出。
课程设计说明书
NO.10
(6)当用户输入除上述字符以外其他键,程序提示错误,结果如下图所示。
图 11 提示错误功能运行结果
课程设计说明书
NO.11
4.总结
在短暂几天的时间里,汇编语言课程设计结束了,我的收获很大。通过课程设计的编程和对 编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编 程能力,补全了我的不足。通过这次课程设计,我巩固了学过的知识,进一步掌握了各个指 令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用 DEBUG 指令, 进一步了解到了汇编语言的一些基本的指令,以及各个寄存器的功能及使用的方法。在整个 程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的 每一个细节,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉 了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程 序的水平。
是 Bh=ah or bh=cl ?
DL=AL,DL+’0’
LOP2F 是
LOP2R
退出程序 是
读取键盘输 入
Call writecc 打 印 DL cl=ch cl!=0?
bl=cl or ah=cl ? Call writecc 打印 DL
CH>8?
Al=cl,cl 自减 否
cl 自 减 ,bh 自
STAK STAK
SEGMENT STACK DW 100H DUP(?)
ENDS
CODE SEGMENT ASSUME CS:CODE,SS:STAK,DS:DATA
START: MOV AX,DATA MOV DS,AX
;========MAIN()===========
ZHU:
MOV DH,1 MOV CH,01H mov ah,02h mov bh,0 mov dh,11 ;设置提示行号 mov dl,6 ;设置提示列号 int 10h CALL CRLF MOV DX,offset NUM0 mov ah,9 int 21h ;显示提示
3.设计结果与分析
3.1 调试程序
启动 DEBUG:D>DEBUG EXAM1.EXE