汇编课程设计

发布 2022-10-01 07:31:28 阅读 6591

中南大学信息科学与工程学院。

目录。实验一润年的判断3

实验二字符串加密9

实验三四则运算15

实验四深度优先搜索25

实验总结33

实验一润年的判断。

实验目的:1. 熟悉,理解基本的编程格式,基本功能。

2. 熟悉理解判断润年算法的实现。

3. 训练上机改写,编译的编程能力。

实验题目:试编写一程序,要求输入四位数的年份,可以输出判断是否润年的结果。

实验设计说明:

此实验主要实现的功能有:

1.输入并回显四位数的年份。

2.判断年份,如果是润年则显示“is leap year”,如果不是润年则显示“is not leap year”.

3,输入出数字以外的数据,则报错,输出“error input,please input again”

实验流程图:

实验源**:

include

data segment

str db 'please input the year',13,10,'$

str1 db 'is leap year',13,10,'$

str2 db 'is not leap year',13,10,'$

str3 db 13,10,'error input,please input again',13,10,'$

inputyear dw ? 输入的年份。

data ends

code segment

assume cs:code,ds:data

start:

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

begin:

output str

mov ch,4 ;计数,输入的年份应该为四位数。

mov dl,10

mov bx,0

process:

cmp ch,0

je process2 ;若ch为0,则表示年份输入完毕,否则继续输入。

dec ch

mov cl,ch

mov ah,01

int 21h

cmp al,10

je process2

sub al,30h

jl error ;输入的不是数字,则报错。

cmp al,9d

jg error

cbwcmp cl,0

jg process1 ;cl大于0,则要将相应的位数转化。

add ax,bx

jmp process2

process1:

dec cl

mul dl ;dl=10

cmp cl,0

jg process1 ;若执行一次cl仍然大于0,则再乘10

add ax,bx

xchg ax,bx ;将输入表示年份的数据放入bx

jmp process ;继续输入年份数据。

process2根据相关的规则对输入的年份进行计算。

mov dl,0ah

mov ah,02h

int 21h

mov dl,0dh

mov ah,02h

int 21h

mov inputyear,bx

mov ax,bx

mov bx,4

cwddiv bx

cmp dx,0

je yes

mov ax,inputyear

mov bx,100

cwddiv bx

cmp dx,0

je isnot

mov ax,inputyear

mov bx,400

cwddiv bx

cmp dx,0

je yes

isnot:

output str2

jmp begin

yes:output str1

jmp begin

error:

output str3

jmp begin

retcode ends

end start

实验数据:如上面的数据所示,该程序可以正确的判断出润年“2008”,也可以正确的判断非润年“1998”,输入非数字符号,如“-”d”“@等则会出现错误的信息;若只输入少于四位数的数据,如“2”,然后敲回车,则也会报错;若什么数据信息都不输入而直接敲回车,则同样会报错;

实验总结:本次试验是汇编的第一个课程设计题目,相对来说不是很难,所要实现的算法也是我们很熟悉的闰年的判断,不过,就是这样简单的一个课程设计题目,自己在不经意间好就会出现很多的错误,只有自己小心的调试才知道该怎么样改,总之从这样的一个入手的小实验中我也学习到了许多的东西。

实验二字符串加密。

实验目的:编写程序,对输入的数据进行加密和解密的操作。

实验题目:编写程序,对输入的数据进行加密和解密的操作。

实验设计说明:

这个题目进行处理的方法有很多种,自己可以在选择的时候挑选自己最喜欢用,或者用起来觉得最好的。而我在这里是选择了最简单的一种加密算法:将输入的字符串简单的逆序。

则我们可以清楚的知道,加密的过程和解密的过程实际上是一样的原理,只不过解密的时候输入的加密后的密码,而输出的才是真正的密码。

实验流程图:

实验源**:

data segment

buffer db 200,200 dup(?)第一个存的数为空间的长度200

buffer1 db 200 dup用于存结果字符串。

data ends

code segment

assume cs:code,ds:data

start:

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

lea dx,buffer

process:

mov ah,0ah

int 21h

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

;回车换行。

lea si,buffer ;将结果字符串的有效地址传给si

mov cl,[si] ;将空间长度200传给cl

inc si

mov ch,0

add si,cx将原字符串的最后一个索引值传给si

lea di,buffer1 ;将buffer1的有效地址传给di

process1:

mov al,[si

mov [di],al ;将buffer1的最后一个字符存在buffer的第一字符。

dec si

inc di

loop process1 ;继续循环。

process2:

lea dx,buffer1 ;将目标字符串输出。

mov ah,9

int 21h

mov ah,4ch

int 21h

code ends

end start

实验数据:如上面所示,这个加密的程序可以输入纯数字,纯字母,也可以输入字母、数字和字符的所有组合,然后按任意键就结束程序。

实验总结:这是一个灵活性很强的题目,我们可以想出很多种的算法来对输入的数据进行加密,本实验我选择了一个最基本,最简单的算法,只是简单的将输入数据逆序输出。如果说单纯做这样的一个简单的将数据是真的谈不上什么收获,但是,刚刚开始的时候我打算做一个比较复杂的算法来实现这样一个加密和解密的过程的,但是最后却没有成功,在这些试验的过程中我上网找了许多的方法,从中也是获益匪浅啊,有的时候发现其实有些问题并不是它本身是这么简单,只是有很多的时候我们把问题简单化了,但是,如果说是一个简单的问题和一个复杂的问题的解答过程是不同的,那么复杂问题的解决过程中我们学习到的,我们获得的东西远远要多于我们将问题简单化的情况,所以,有了这次的经验,我觉得我应该在以后的学习过程中试着多动动脑筋,多想想这些事情的解决方法。

实验三四则运算。

实验目的:1、进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序和子程序编程方法,巩固提高汇编语言程序设计能力应用水平。

2、学会一些基本的算法,更好的巩固自己的汇编水平。

实验题目:输入相应的计算数据,通过符号进行四则运算,得出正确的结果。

实验设计说明:

本实验需要实现的功能为:

1.输入两个数据及符号。

2.对数据进行判断,计算。

3.将判断的结果输出。

实验流程图:

实验源**:

include

model small

data segment

string db 'please input',13,10,'$

inputerror db 13,10,'input error,please input again',13,10,'$

number1 dw ? 输入的数据。

number2 dw ? 输入的数据。

count db ? 数据位数。

fuhao dw ? 算术操作符。

汇编课程设计

直流电机调速系统设计。摘要。脉宽调制的全称为 pulse widthmodulator 简称pwm 直流电机调速器就是调节直流电动机速度的设备,由于直流电动机具有低转速大力矩的特点,是交流电动机无法取代的,因此调节直流电动机速度的设备 直流调速器,由于它的特殊性能 常被用于直流负载回路中 灯具调光或...

汇编课程设计

湖南农业大学课程设计报告。学院 信息科学与技术学院班级 计算机科学与技术2班 姓名 陈小湾学号 200841842226 课程设计报告题目 时钟显示程序。课程名称 微机原理与接 术。评阅成绩 评阅意见 成绩评定教师签名 日期 年月日。第一部分 任务与要求。利用芯片8253和8259a完成时钟显示程序...

汇编课程设计

汇编语言课程临近结束时,将利用实验课和理论课最后阶段时间 大约14周开始,具体安排听通知 让同学们进行题目的答辩。分组 每5到6人一组,推选出组长。每组同学选一组题目,且任两组同学不得选重复组的题目,两班同学不要选相同组题目。请班长在第三周周一前将分组及选题的汇总excel电子版发到我邮箱。选第一组...