宏定义实现学生成绩统计的CRLF MACRO教程

版权申诉
0 下载量 102 浏览量 更新于2024-10-17 收藏 3KB RAR 举报
资源摘要信息:"CRLF------MACRO.rar_CRLF MACRO_微机crlf macro" 知识点: 1. CRLF在计算机术语中代表“回车换行”(Carriage Return Line Feed),是文本文件中用来表示新行的一种控制字符。在不同的操作系统中,CRLF的表示可能会有所不同,例如在Windows系统中,新行通常用“\r\n”表示,在Unix/Linux系统中,新行用“\n”表示。而CRLF常用于DOS及Windows环境下。 2. 宏(Macro)是计算机程序语言中的一种功能,它允许用户将一系列命令或动作组合在一起,以便重复使用。宏通常用于自动化重复的任务,提高工作效率。在不同的编程环境和软件中,宏的具体实现和使用方式会有所差异。 3. 在本例中,“CRLF MACRO”可能是一个宏的名称,用于在文档或程序中自动插入回车换行符,但具体的宏实现细节在文件描述中没有提供。 4. 描述中提到的“微机crlf macro”似乎指向了一种用于微机操作的宏,这个宏可能在某种编程环境中用于处理与CRLF相关的问题。具体用途可能是为了在输出或显示成绩列表时确保格式正确,尤其是在处理多行文本输出的场景中。 5. 关于微机编程,该描述提到需要编写一个子程序来统计学生的成绩分布情况。该子程序需要接收一系列成绩作为输入,并按照设定的分数区间统计对应的人数。这个任务涉及到基础的编程逻辑,如条件判断和数组或变量的使用。 6. 成绩分布的具体区间被定义为60~69分、70~79分、80~89分、90~99分以及100分。这表明程序需要有五种不同的条件分支,对应于这五个成绩区间,每个分支都会执行一个计数的操作,将统计结果存储在对应的内存单元中(S6,S7,S8,S9,S10)。 7. 描述中并未提及具体的编程语言,但从子程序和存储单元的描述来看,它很可能适用于汇编语言或是一种低级语言。在汇编语言中,子程序(也称为子例程或函数)的创建、跳转(如使用CALL指令)和返回(如使用RET指令)是常见的编程操作。 8. 在实际应用中,编写这样的程序将需要理解如何在特定的编程环境中操作变量、进行条件判断以及如何组织代码逻辑。在一些高级编程语言中,这个任务可以通过循环结构和条件语句(如if-else)来完成。 9. 从描述中还可以推断出,这个子程序的编写可能是为了教学目的,帮助学习者理解如何在编程中处理数组、统计数据分析以及如何实现基础的逻辑控制结构。 10. 最后,提到的“压缩包子文件的文件名称列表”可能意味着原始文件被压缩成一个压缩包,文件名称为“CRLF MACRO.doc”。这个文件可能包含具体的宏代码或文档说明,用于指导如何实现上述统计功能。 综上所述,该文件集涉及到计算机基础知识点,包括CRLF的概念、宏的使用、微机编程、子程序设计以及数据统计分析等方面。这些知识点对于理解计算机操作原理、编程逻辑和数据处理非常关键。

帮我修改以下代码,使它的功能不变但是代码不同CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM DATAS SEGMENT MES1 DB 'Please input number N','$' MES2 DB 'The result is: $' BUF DW 256 DUP (0) LEN DW 1 CY DW ? DATAS ENDS STACKS SEGMENT DW 32 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AH,9 ;显示提示 LEA DX,MES1 INT 21H CRLF CALL GETNUM ;DX中存放读到的键盘输入值 MOV BP,DX ;N值送BP CMP BP,0 JZ L4 ;BP=0跳转 CMP BP,1 JZ L4 LEA SI,BUF ;SI指向BUF首址 MOV [SI],DX ;缓冲区初始化值为键盘输入N D1: DEC BP ;BP-1=1跳转 CMP BP,1 JZ L5 XOR BX,BX ;BX清0,每次相乘从最低位开始 MOV WORD PTR CY,0 ;同时CY每次要清零 MOV CX,LEN ;CX送循环,判断占了多少个子单元,循环多少次 D2: MOV AX,[SI+BX] MUL BP ADD AX,CY ;加低位进位 JNC D3 ;结果无进位跳转 INC DX ;有进位,积高位加进位 D3: MOV [SI+BX],AX ;存低位 MOV CY,DX ;高位保存在CY,乘高位单元时加上 INC BX INC BX ;一个字长度 LOOP D2 CMP DX,0 ;判断DX两次运算后是否为0 JZ D1 ;DX高位为0跳D1 INC WORD PTR LEN ;DX高位不为0则长度加1,DX送下一个单元 MOV [SI+BX],DX JMP D1 L4: MOV SI,OFFSET BUF ;BUF存1 MOV WORD PTR [SI],1 L5: MOV AH,09H ;显示MES2单元内容 MOV DX,OFFSET MES2 INT 21H MOV CX,LEN MOV BX,CX ;BX=BUF长度 DEC BX ;BX-1 SHL BX,1 L6: MOV AX,[SI+BX] CALL DISPLAY1 ;从高位显示结果 DEC BX DEC BX LOOP L6 MOV AH,4CH INT 21H GETNUM PROC NEAR XOR DX,DX L1: MOV AH,1 INT 21H CMP AL,0DH JZ L2 CMP AL,40H JL L3 ;小于跳转 SUB AL,07H L3: SUB AL,30H MOV CL,04H SHL DX,CL XOR AH,AH ADD DX,AX JMP L1 L2: PUSH DX CRLF POP DX RET GETNUM ENDP DISPLAY1 PROC NEAR PUSH BX PUSH CX PUSH DX PUSH AX MOV AL,AH CALL DISPLAY2 POP AX CALL DISPLAY2 POP DX POP CX POP BX RET DISPLAY1 ENDP DISPLAY2 PROC NEAR ;显示字符(AL) MOV BL,AL MOV DL,BL ;执行MOV AH,02,AX=0200 MOV CL,04 ;执行CALL调用,AL=30H SHR DL,CL CALL DISPLAY3 ;显示高位 MOV DL,BL AND DL,0FH CALL DISPLAY3 ;显示低位 RET DISPLAY2 ENDP DISPLAY3 PROC NEAR ;显示一位(DL=0XH) ADD DL,30H CMP DL,3AH JB A1 ADD DL,07H A1: MOV AH,02H INT 21H RET DISPLAY3 ENDP CODES ENDS END START

2023-06-08 上传