【报告】汇编语言程序设计报告

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

【关键字】报告

汇编语言程序设计报告

计算机学院

2011/6/7

题目要求

分支程序设计:

1、编写程序,键入学生成绩(百分制),按A、B、C、D显示在屏幕上。

子程序设计:

2、给定一个数组存放5个小写字母,用地址表传递方法编写子程序,将其

转换成大写字母,并显示在屏幕上。

循环程序设计:

3、设有一段文字,编写一段程序查找字母a出现的次数,并显示在屏幕上。

DOS功能调用:

4、在图形方式下,在屏幕中央绘制一个用“*”表示的等腰三角形。

5、编写一个生成ASCII码表的程序,并显示在屏幕上。

6、根据提示输入任意年份,编写判断闰年的程序,如果是闰年,

则在屏幕上显示“Y”,否则显示“N”。

7、显示杨辉三角形。要求:

(1)从键盘接收正整数n;

(2)屏幕显示杨辉三角形,显示n行信息;

编程思路:

1.

在数据段设置提示信息,成绩ABCD的显示信息,并预留空间。

利用DOS中断,取得输入的字符,输入字符的ASCII值在30H-39H之间为‘0-9’,不是则报错,值存入SCORE中,将SCORE的高位分别与9,8,7,6相比,

跳转到设置好的代码区,输出对应成绩(A,B,C,D).若为3位数,则跳到A区,输出A.

2. 在数据段设置ADDRESS存放数据偏移量和COUNT计数器

利用DOS中断,取得输入的字符串存入DX中,偏移量存入STRING,并存入ADDRESS中。COUNT存入ADDRESS+2地址中,调用子程序TURN,利用SI指针与ADDRESS配合将每个字母由大写转为小写。

3. 在数据段设置STRING用于存放键盘输入字符,COUNT存放字符个数,利用DOS中断,输入字符串存入STRING.编写CHECK模块用于检查输入的字符是否为a,循环执行CHECK模块,为a 则BL+1,不为a,SI+1继续检查,直至CX=0,最后输出结果。

4.

堆栈段预留128字节空间存放*.设置SI控制空格数,BX为输出*个数.设置3层循环,分别输出空格数,*数,回车.首先将保护CX行数,将其压入栈中,外层循环按CX列数,输出每行之前的空格数,之后根据BX输出*,此时一行输入完,输出回车换行后,BX+2即*数+2,

CX出栈,加入外循环,输出下一行信息。

5.

初始化时设置行列数,第一个字符的ASCII值,设置两层循环,首先CX入栈保护输出行数,外层循环控制输出行数,内循环输出列个数对应的字符数,将要输入的字符存入DL,每输出完一次DL+1,SI值即列数给CX,当CX=0时,输出回车换行,CX出栈,加入外循环准备下

一行的输出。

6.

数据段设置提示信息,W存放输入年份的数值M,BUF存放年份字符串。利用DOS中断,取得输入的年份字符串存入BUF中,字符个数存入CL,调用DATACATE把年份字符串转为16进制数值,在调用IFYEARS子模块判断其是否为闰年,输出相应信息。

DATACATE子模块总体设计思想,首先BUF+2给SI,利用循环,和SI指针从高位向低位逐个字符减去30H转为16进制数,将值存入W中。IFYEARS 子模块总体设计思想,将W值给AX,判断能否被100整除,能则在判是否整除400,能则为闰年,不能则不是闰年。若不能整除100,判是否整除4,能则为闰年,不能则不是,输出相应信息。

7.

数据段设置BUF用于存放三角中的数。

总体思想:基于组合数计算杨辉三角,即c(m,n)的输出。

设置两层循环控制输出的行列,一重循环系数m,范围1-n,二重循环系数n,范围1-m。利用DOS中断,将输入n存入num中。

主程序:内循环调用store将每行三角中的每个值存入buf中,调用外循环加入下一行。子程序store:由ch,cl传递参数m,n,求组合数C(m,n)

,并转换为10进制数存入buf中,再写入一个空格。

子程序multiply:由bh,bl传递参数p,q,求乘积p(p-1)(p-2)...(p-q+1),并由dx传出。

流程图:

1. 分支程序设计:

2. 子程序设计:

3. 循环程序设计:

4. DOS功能调用:

5.ASCII表输出

6.判断闰年

7.杨辉三角输出

源程序:

1.

DATA

STRING

S

A

RB

RC

RD

SCORE

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET STRING;

MOV AH,9

INT 21H;提示输入成绩,显示字符串,DS:DX=串首址

MOV DX,OFFSET SCORE;返回SCORE所在段偏移量

MOV AH,0AH

INT 21H;输入4个成绩

MOV DX,OFFSET S

MOV AH,9

INT 21H;

CMP AL, 30H

JB ERROR

CMP AL, 39H

JA ERROR

MOV BL,[SCORE+1]

CMP BL,03H

JZ AAR

MOV BL,[SCORE+2]

CMP BL,39H

JZ AAR

MOV BL,[SCORE+2]

CMP BL,38H

JZ EIGHT

MOV BL,[SCORE+2]

SUB BL,37H

JZ BBR

MOV BL,[SCORE+2]

CMP BL,36H

JZ CCR

JMP DDR ;不及格

EIGHT:

MOV BL,[SCORE+3] ;80分段的判断

SUB BL,35H

JAE AAR

JMP BBR

ERROR :

MOV AH, 09 ;错误提示

MOV DX, OFFSET MESSAGE

INT 21H

JMP START

相关文档
最新文档