📄 displayl.asm
字号:
TITLE displayl
data SEGMENT
bufferb DB '?','$'
bufferw DW ?
temp DB ?
show DB 'This is what you have said:','$'
nl DB 'LTRD.txt',0
sign DW ?
count DW ?
tabel DW 524,588,660,698,784,880,988,1048
data ENDS
stack SEGMENT stack'stack'
sta DB 20 DUP(?)
top EQU LENGTH sta
stack ENDS
code SEGMENT
ASSUME CS:code,DS:data,SS:stack
start: MOV AX,data
MOV DS,AX
MOV AX,top
MOV SP,AX
PUSH DS
XOR AX,AX
PUSH AX
;24
MOV DX, OFFSET show
MOV AH,09h
INT 21h
MOV AH,0eh
MOV AL,0ah
INT 10h
MOV DX,OFFSET nl
MOV AH,3dh
MOV AL,02h
INT 21h
MOV sign,AX
MOV BX,sign
MOV CX,0000h
MOV DX,0000h
MOV AH,42h
MOV AL,02h
INT 21h
MOV count,AX
MOV CX,0000h
MOV DX,0000h
MOV AH,42h
MOV AL,02h
INT 21h
MOV count,CX
again :MOV count,CX
MOV CX,0001h
MOV DX,OFFSET bufferb
MOV AH,3fh
MOV BX,sign
INT 21h
;58
JC finish
MOV DX,OFFSET bufferb
MOV AH,09h
INT 21h
MOV AL,bufferb
SUB AL,31h
JC n1
CMP AL,9
JNC n1
SHL AL,01
MOV BL,AL
MOV AX,0000h
MOV DX,12h
MOV BH,00h
DIV WORD PTR[tabel+BX]
MOV BX,AX
MOV AL,10110110b
OUT 43h,AL
MOV AX,BX
OUT 42h,AL
MOV AL,AH
OUT 42h,AL
IN AL,61h
OR AL,03h
OUT 61h,AL
CALL delay
n1: MOV CX,count
LOOP again
MOV AH,3eh
INT 21h
;90
IN AL,61h
AND AL,011111100b
OUT 61h,AL
finish :MOV AX,4c00h
INT 21h
delay PROC NEAR
PUSH CX
PUSH AX
MOV AX,0fffh
x1: MOV CX,0ffffh
x2: DEC CX
JNZ x2
DEC AX
JNZ x1
POP AX
POP CX
RET
delay ENDP
code ENDS
END start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -