📄 l4.asm
字号:
DATA SEGMENT
BUFFER0 DB 0
BUFFER1 DW 0
BUFFER2 DW 0
COUNT DB 0
BUFFER DB 20 DUP(0)
TABLE DB 0,0,'1234567890-=',0,0
DB 'QWERTYUIOP[]',0DH,0
DB 'ASDFGHJKL;',27H,0,0,0
DB 'ZXCVBNM,./',0,0,0
DB ' ',0,0,0,0,0,0,0,0,0,0,0,0,0
DB '789-456+1230.'
DATA ENDS
STACK SEGMENT PARA STACK'STACK'
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, ES: DATA, SS: STACK
START PROC FAR
BEGIN: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
PUSH DS
PUSH ES
CLI
MOV AX, 3509H
INT 21H
MOV BUFFER1, ES
MOV BUFFER2, BX
MOV AX,SEG NEXT
MOV DS,AX
MOV DX,OFFSET NEXT
MOV AX,2509H
INT 21H
MOV AL,0FCH
OUT 21H,AL
POP ES
POP DS
LEA SI,BUFFER
LOOP1: STI
HLT
MOV AL,BUFFER0
CMP AL,0DH
JNZ LOOP1
MOV AX, BUFFER1
MOV DS, AX
MOV DX, BUFFER2
MOV AX, 2509H
INT 21H
RET
START ENDP
NEXT PROC
PUSH DS
PUSH ES
PUSH BX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
IN AL,60H
PUSH AX
IN AL,61H
OR AL,80H
OUT 61H,AL
AND AL,7FH
OUT 61H,AL
POP AX
TEST AL,80H
JNZ NEXT2
MOV BX, OFFSET TABLE
XLATB
CMP AL,0DH
JNZ LOOP2
MOV BUFFER0,AL
LOOP2: CMP AL,0
JZ NEXT2
MOV [SI],AL
MOV DL,AL
MOV AH,2
INT 21H
INC SI
INC COUNT
CMP COUNT,20
JNZ NEXT2
DEC SI
MOV CX,20
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
reverse:MOV DL,[SI]
MOV AH,2
INT 21H
DEC SI
LOOP reverse
MOV AL,0FFH
OUT 21H,AL
NEXT2: MOV AL,20H
OUT 20H,AL
POP AX
POP BX
POP ES
POP DS
IRET
NEXT ENDP
CODE ENDS
END BEGIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -