exp910.asm

来自「汇编语言 参考书 包含作业与答案 从入门到精通 通俗易懂」· 汇编 代码 · 共 94 行

ASM
94
字号
STACK   SEGMENT PARA STACK
        DW      100h DUP(?)
STACK   ENDS

DATA    SEGMENT PARA
T_STRING  DB    'File Edit Search View Options Help',00h
ATTR1     DB    70H
ATTR2     DB    7FH
ATTR3     DB    74H
DATA    ENDS

CODE    SEGMENT PARA
        ASSUME  CS:CODE,DS:DATA,SS:STACK

MAIN    PROC    FAR
        MOV     AX,DATA
        MOV     DS,AX

        MOV     AH,0FH
        INT     10H     ;GeT Video mode
        CMP     AL,03H
        JZ      CLR_SCR
        MOV     AX,0003H
        INT     10H

CLR_SCR:MOV     AX,0B800H
        MOV     ES,AX
        MOV     DI,0
        CLD
        MOV     CX,80*25
        CLD
        MOV     AX,0F20H
        REP     STOSW

        CALL    PAUSE

        MOV     DI,0    ;di=line*80+col l,c=0,0--24,79
        MOV     SI,OFFSET T_STRING
        CLD
LP1:    LODSB
        STOSB
        INC     DI
        CMP     AL,00H
        JZ      SET_ATTR
        JMP     SHORT LP1
SET_ATTR:CALL   PAUSE
        MOV     DI,1
        MOV     CX,80
        MOV     AL,ATTR1
LP2:    STOSB
        INC     DI
        LOOP    LP2

        CALL    PAUSE

        MOV     DI,0
        MOV     CX,80
LP3:    MOV     AL,ES:[DI]
        CMP     AL,'A'
        JB      CON1
        CMP     AL,'Z'
        JA      CON1
        MOV     AL,ATTR2
        MOV     ES:[DI+1],AL
CON1:   ADD     DI,2
        LOOP    LP3

        CALL    PAUSE

        MOV     DI,0
        MOV     CX,80
LP4:    MOV     AL,ES:[DI]
        CMP     AL,'A'
        JB      CON2
        CMP     AL,'Z'
        JA      CON2
        MOV     AL,ATTR3
        MOV     ES:[DI+1],AL
CON2:   ADD     DI,2
        LOOP    LP4
        CALL    PAUSE

        MOV     AX,4C00H
        INT     21H
MAIN    ENDP
PAUSE   PROC
        MOV     AH,0
        INT     16H
        RET
PAUSE   ENDP
CODE    ENDS
        END     MAIN

⌨️ 快捷键说明

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