📄 yinyue.asm
字号:
DATA SEGMENT
TABF DW -1,262,350,352,350,441,393,350,393,441
DW 350,352,441,525,589,588,589,525,411
DW 440,350,393,350,393,411,350,293,294,262
DW 350,389,525,411,440,350,393,350,393,589
DW 525,441,440,525,589,700,525,411,440,350
DW 393,350,393,441,350,294,292,262,350,-1,0
TABT DB 4,4,6,2,4,4,6,2,4,4
DB 6,2,4,4,12,1,3,6,2
DB 4,4,6,2,4,4,6,2,4,4
DB 12,4,6,2,4,4,6,2,4,4
DB 6,2,4,4,12,4,6,4,4,4
DB 6,2,4,4,6,2,4,4,12,8
DATA ENDS
N EQU 1
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
OPEN: IN AL,61H
OR AL,3
OUT 61H,AL
AGA: MOV SI,OFFSET TABF
MOV DI,OFFSET TABT
LAST:CMP WORD PTR[SI],0
JE AGA
MOV AL,0B6H
OUT 43H,AL
MOV DX,12H
MOV AX,34DEH
DIV WORD PTR[SI]
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
CALL DELAY
ADD SI,2
INC DI
MOV AH,1
INT 16H
JZ LAST
COLSE:IN AL,61H
AND AL,0FCH
OUT 61H,AL
MOV AH,4CH
INT 21H
DELAY PROC NEAR
MOV AL,[DI]
MOV CL,N
MUL CL
MOV CX,AX
DELAY1:CALL _DELAY1MS
LooP DELAY1
RET
DELAY ENDP
_delay1ms proc near
push ax
push dx
push bx
call _getcount
mov bx,dx
_delay1ms1:
call _getcount
mov ax,bx
sub ax,dx
jns _delay1ms1
neg ax
_delay1ms0:sub ax,1193
jae _delay_end
jmp _delay1ms1
_delay_end:
pop bx
pop dx
pop ax
ret
_delay1ms endp
_getcount proc near
mov al,0
out 43h,al
nop
nop
nop
in al,40h
mov dl,al
in al,40h
mov dh,al
ret
_getcount endp
CODE ENDS
END BEG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -