汇编语言程序设计报告

2021-09-24 15:02

目 录

目 录………………………………………………………………1 课程设计的目的…………………………………………………..2 课程设计的内容…………………………………………………..2 基本要求…………………………………..…………….…………2 具体内容…………………………………………….……………..2

第2题……………………………………………….……………..3

设计思想和实施方案……………………………….……………..3 程序清单和程序注释…………………………….………………..3 典型程序模块和典型编程技巧分析………….…………………..4 程序框图……………………………………….…………………..5

第3题…………………………………………….………………..6

设计思想和实施方案…………………………….………………..6 程序清单和程序注释……………………………….……………..6 典型程序模块和典型编程技巧分析…………….………………..9 程序框图…………………………………………….…………….10

第4题…………………………………………….……………….11

设计思想和实施方案…………………………….……………….11 程序清单和程序注释……………………………….…………….11 典型程序模块和典型编程技巧分析…………….……………….13 程序框图…………………………………………….…………….14 课程设计中遇到的问题及解决方法……………….…………….15 收获与体会………………………………………….…………….16

一.课程设计的目的:

课程设计是本科教学过程中的重要环节。本课程设计主要目的是使计算机专业学生深入学习汇编语言知识,进一步提高学生汇编语言综合变成能力和程序调试技能,锻炼运用汇编语言编程解决实际问题的能力。

二.课程设计的内容:

1.从键盘输入任意的十进制表达式,计算表达式的结果,并将该表达式及结果显示在屏幕上。(数值取值范围-32768~32767)

2.编写一个能与当前运行程序分时操作的生日程序,将当日生日同学的信息显示在屏幕的右上角。 3.在屏幕上开三个窗口:

(15,30 (15,70)

(22,65)

用“←”和“→”键选择左窗口或右窗口为当前活动窗口,从键盘输入字符,字符就会从当前活动窗口的最下行开始显示,同时也在下窗口显示。当一行字符显示满后(左右窗口一行显示20和字符,下窗口显示50个字符),窗口自动向上卷动一行,输入的字符仍显示于最低一行,窗口最高一行向上卷动后消失,输入命令串“END”后程序运行结束。

4.用汇编语言调用C语言实现:通过键盘输入对角线坐标,在屏幕上开设一个窗口,并设定热键控制窗口的颜色,要求屏幕上自上到下颜色由浅到深变化。

三.基本要求:

1.学生应任选择三题,经教师确认后进行课程设计。

2.学生应人真查阅资料,独立完成设计任务,每道题都必须上机通过。

3.学生应注重培养自己独立思考,综合分析问题解决问题和调试程序的能力。

4.按时完成课程设计,写出课程设计报告(报告要要用统一的报告纸写)。

四.具体内容:

本人编写的是第2,3,4题的程序,各程序具体内容如下:

第2题

1. 设计思想和实施方案:

这个程序要求在屏幕的右上角显示当日过生日的同学,这就要求要把一部分程序驻留在内存当中,从而即时的检测当日的日期,然后比较看看在这个日期下有没有同学过生日,有则打印在屏幕的右上角,没有就不显示。这就是这个程序的基本思想。

也就是说这个程序的关键就在于实现检测生日和显示生日的程序的驻留。要实现驻留,就需要使用中断,也就是在保留各寄存器的原始内容后,用sti开中断,然后进行比较和显示的操作,再用cli关中断,读回压入堆栈中各寄存器原来的数据,恢复中断现场。同时用install部分来控制中断的类型和决定驻留区的大小,这里设置为I/O设备中断向量。 2.程序清单和程序注释: code segment

assume cs:code,ds:code ;段定义 start: jmp install

msg db 'Today is birthday of Li',? ;定义要显示的字符串

old dd ? new:

push ax push bx push cx

push dx ;保留各寄存器原始内容 push si push di push es

sti ;中断标志置1,开中断 mov ah,2ah int 21h

cmp dh,1 ;比较月份 jnz case0

cmp dl,18 ;比较日期 jnz case0

mov ax,0b800h mov es,ax mov di,54*2d

lea si,msg ;把要输出的msg字符串置入si

case: mov al,cs:[si] inc si

or al,al ;判断是否为“?”作为显示结束的标志 jz case1

cld ;设置地址自动增量 stosb

inc di ;把字符串存入附加段中 jmp case ;跳转以实现逐个存入字符

case0:

mov ax, 0600h mov bh, 07h

mov cx, 002eh ;在屏幕右上角初始化窗口 mov dx,0279h int 10h

case1: cli ;中断标志置0,关中断 pop es pop di pop si

pop dx ;取回各寄存器的原始内容 pop cx pop bx pop ax

jmp cs:old ;指令回到old地址处

install: push cs ;通过install部分实现驻留 pop ds

mov ax,351ch ;取中断向量(al=中断类型) int 21h

mov word ptr old,bx ;存储bx和es内容到存储器old mov word ptr old+2,es lea dx,new

mov ax,251ch ;设置中断向量(al=中断类型号) int 21h

mov dx,offset install+120h ;通过dx设置驻留区的大小 mov cl,04h

shr dx,cl ;逻辑右移4位

汇编语言程序设计报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:民间借贷新规:对“明股实债”定性标准及法律后果的影响

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: