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

📄 rjexp17.asm

📁 显示屏相关程序实现显示屏点亮控制等功能.
💻 ASM
字号:
CRLF  MACRO
      MOV  AH,02H
      MOV  DL,0DH
      INT  21H
      MOV  AH,02H
      MOV  DL,0AH
      INT  21H
ENDM
DATA  SEGMENT
MESS1 DB  'INPUT THE NUMBER ACCORDING TO HEXNUM!',0DH,0AH,'$'
MESS2 DB  'THE RESULT IS(HEX):$'
ERROR DB  'INPUT ERROR!',0DH,0AH,'$'
LEN   DW  1
CY    DW  ?
BUF   DW  256 DUP (0)
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             ;显示输入提示信息
       CALL GETNUM          ;读取键入的N值
       MOV  BP,DX           ;N值送BP
       CMP  BP,0
       JZ   EEE
       CMP  BP,1
       JZ   EEE             ;N=0或N=1则转EEE
       MOV  SI,OFFSET BUF   ;缓冲区首址
       MOV  [SI],DX         ;缓冲区初始化为值N
XXX:   DEC  BP              ;N值减1
       CMP  BP,0001H
       JZ   LLL             ;若为1则转结束LLL
       XOR  BX,BX           ;偏移指针清0
       MOV  WORD PTR [CY],0 ;进位单元清0
       MOV  CX,[LEN]        ;当前结果长度送CX
TTT:   MOV  AX,[SI+BX]
       MUL  BP              ;相乘
       ADD  AX,[CY]         ;加低位进位
       JNC  JJJ             ;结果无进位转JJJ
       INC  DX              ;有进位高位单元加1
JJJ:   MOV  [SI+BX],AX      ;结果送缓冲区中
       MOV  [CY],DX         ;高位单元送进位单元
       INC  BX
       INC  BX              ;一个字长度
       LOOP TTT             ;循环
       CMP  DX,0000H
       JZ   BBB             ;最后1次的进位为0则转BBB
       INC  WORD PTR [LEN]  ;长度加1
       MOV [SI+BX],DX       ;进位送缓冲区中
BBB:   JMP  XXX
EEE:   MOV  SI,OFFSET BUF
       MOV  WORD PTR [SI],1 ;结果为1
LLL:   MOV  AH,09H
       MOV  DX,OFFSET MESS2
       INT  21H
       MOV  CX,[LEN]
       MOV  BX,CX            ;长度
       DEC  BX
       SHL  BX,1             ;1个字为两个字节
CCC:   MOV  AX,[SI+BX]
       CALL DISP
       DEC  BX
       DEC  BX               ;显示结果
       LOOP CCC
       MOV  AX,4C00H         ;结束
       INT  21H
DISP1  PROC NEAR
       MOV  BL,AL
       MOV  DL,AL
       MOV  CL,04
       ROL  DL,CL
       AND  DL,0FH
       CALL DISPL
       MOV  DL,BL
       AND  DL,0FH
       CALL DISPL
       RET
DISP1  ENDP
DISPL  PROC NEAR
       ADD  DL,30H
       CMP  DL,3AH
       JB   DDD
       ADD  DL,27H
DDD:   MOV  AH,02H
       INT  21H
       RET
DISPL  ENDP
DISP   PROC NEAR
       PUSH  BX
       PUSH  CX
       PUSH  DX
       PUSH  AX
       MOV   AL,AH
       CALL  DISP1
       POP   AX
       CALL  DISP1
       POP   DX
       POP   CX
       POP   BX
       RET
DISP   ENDP               ;字符和数据显示子程序
GETNUM PROC  NEAR
       PUSH  CX
       XOR   DX,DX
GGG:   MOV  AH,01H
       INT  21H
       CMP  AL,0DH
       JZ   PPP
       CMP  AL,20H
       JZ   PPP
       SUB  AL,30H
       JB   KKK    
       CMP  AL,0AH
       JB  GETS
       CMP  AL,11H
       JB   KKK
       SUB  AL,07H
       CMP  AL,0FH
       JBE  GETS
       CMP  AL,2AH
       JB   KKK
       CMP  AL,2FH
       JA  KKK
       SUB  AL,20H
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
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 + -