⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rjexp14.asm

📁 显示屏相关程序实现显示屏点亮控制等功能.
💻 ASM
字号:
CRLF  MACRO
      MOV  AH,02H
      MOV  DL,0DH
      INT  21H
      MOV  AH,02H
      MOV  DL,0AH
      INT  21H
ENDM
DATA  SEGMENT
STUNUM EQU  10
MESS1  DB  '请依次输入1-10号学生的成绩',0DH,0AH,'$'
ERROR  DB  '输入错误,请重新输入!',0DH,0AH,'$'
MESS2  DB  '1-10号学生名次依次为:',0DH,0AH,'$'
EMARK  DB  ?       
       ORG  1000H
SCORE  DB  30 DUP(?)
       ORG  2000H
SEQU   DB  30 DUP(?)
DATA ENDS
STACK SEGMENT
STA  DW  32 DUP(?)
TOP  DW  ?
STACK  ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:  MOV  AX,DATA
	MOV  DS,AX
	MOV  ES,AX
	MOV  SP,TOP           ;初始化
	MOV  AH,09H
	MOV  DX,OFFSET MESS1
	INT  21H              ;显示提示信息
	MOV  SI,OFFSET SCORE  ;成绩表首址
	MOV  CX,STUNUM        ;学生数送CX
	MOV  EMARK,0
UUU:    CALL GETNUM           ;读取键入数值送DX
	CMP  EMARK,01H
	JE   START
	MOV  [SI],DL          ;存入成绩表缓冲区中
	INC  SI               ;指向下一单元
	LOOP  UUU
	MOV  CX,STUNUM        ;学生数
	MOV  DI,OFFSET SEQU   ;名次表首址
VVV:    CALL SCAN             ;扫描子程序
	MOV  AL,STUNUM        ;学生数
	SUB  AL,CL
	INC  AL               ;计算名次
	MOV  BX,DX
	MOV  [DI+BX],AL       ;记DX学号对应名次
	LOOP  VVV
	MOV  AH,09H
	LEA  DX,MESS2
	INT 21H
	MOV  CX,STUNUM        ;学生数
	MOV  SI,OFFSET SEQU   ;名次表首址
WWW:    MOV  AL,[SI]
	CALL DISPI
	PUSH  DX
	PUSH   AX  
	MOV  AH,02
	MOV    DL,20H
	INT    21H
	POP    AX
	POP   DX
	INC    SI
	LOOP WWW              ;显示排定的学生名次
	MOV  AX,4C00H
	INT  21H
SCAN  PROC  NEAR ;子程序,每扫描一遍成绩表缓冲区, 找出其成绩最高者
	     ;(由DX指针指示对应学生),之后将该成绩清除以便下一次扫描
      PUSH  CX                  
      MOV   CX,STUNUM         ;学生数
      MOV   AL,00H            ;最低成绩
      MOV   BX,OFFSET SCORE
      MOV  SI,BX              ;指向成绩表首址
CCC:  CMP  AL,[SI]
      JAE  JJJ     ;AL中的成绩不低于成绩表指针SI所指单元的成绩则转JJJ
      MOV  AL,[SI]            ;AL存放较高的成绩
      MOV  DX,SI
      SUB  DX,BX              ;DX为对应学号
JJJ:  INC  SI                 ;指向下一单元
      LOOP CCC
      ADD  BX,DX
      MOV  BYTE PTR [BX],00H  ;本次扫描成绩最高者清0
      POP  CX
      RET
SCAN  ENDP
DISPI PROC  NEAR             ;显示子程序
      PUSH  CX
      MOV   BL,AL
      MOV   DL,BL
      MOV   CL,04
      ROL   DL,CL
      AND   DL,0FH
      CALL  DISPL
      MOV   DL,BL
      AND   DL,0FH
      CALL  DISPL
      POP   CX
      RET
DISPI  ENDP
DISPL PROC  NEAR
      ADD   DL,30H
      CMP   DL,3AH
      JB    DDD
      ADD   DL,27H
DDD:  MOV   AH,02H
      INT   21H
      RET
      DISPL  ENDP                 
      
GETNUM PROC   NEAR                  ;键读入子程序
       PUSH   CX
       XOR    DX,DX
GGG:   MOV    AH,01H
       INT    21H
       CMP    AL,0DH
       JZ     PPP
       SUB    AL,30H
       JB     KKK
       CMP    AL,09H
       JBE     GETS
       JMP    KKK
GETS:  MOV    CL,04
       SHL    DX,CL
       XOR    AH,AH
       ADD    DX,AX
       JMP    GGG
KKK:   MOV    AH,09H
       MOV    DX,OFFSET ERROR
       INT    21H
       MOV    EMARK,01H
PPP:   PUSH   DX
       CRLF
       POP    DX
       POP    CX
       RET
GETNUM  ENDP
CODE    ENDS
		END     START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -