TESTTSR.ASM
上传用户:kylngs
上传日期:2020-09-09
资源大小:2k
文件大小:5k
- CODE SEGMENT
- ASSUME CS:CODE,DS:CODE,ES:CODE
- ORG 100H
- keepcs dw 0
- keepip dw 0
- start: push ax
- push bx
- push es
- mov ah,25h
- mov al,9h
- int 21h
- mov keepip,bx
- mov keepcs,es ;save int address
- cli
- push ds ;change int
- mov dx,offset new
- mov ax,seg new
- mov ds,ax
- mov ah,25h
- mov al,9h
- int 21h
- pop ds
- sti
- new proc near
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH ES
- DUCHU: IN AL,60H ;FATCH SCAN-CODE
- MOV AH,AL
- PUSH AX
- IN AL,61H
- OR AL,10000000B
- OUT 61H,AL
- AND AL,01111111B
- OUT 61H,AL
- MOV AX,40H
- MOV ES,AX
- POP AX
- CMP AL,31 ;TEST "S"
- JE STOP
- CMP AL,24 ;TEST"O"
- JE ORIGIN
- CMP AL,19 ;TEST"R"
- JE REPLAY
- ; CMP AL,25 ;TEST"PERIOCITY"
- ; JE PERIO
- jmp JIESHU
- main proc near
- PUSH AX
- PUSH BX
- PUSH CX
- MOV AL,10110100B
- OUT 43H,AL
- mov ax,0ffffh
- OUT 42H,AL
- MOV AL,AH
- OUT 42H,AL
- in al,61h
- mov ah,al
- or al,3
- out 61h,al
- mov cx,0ffffh
- giu : loop giu
- in al,61h
- and al,11111100b
- OUT 61H,AL
- POP AX
- POP BX
- POP CX
- ret
- main endp
- subprg proc near
- PUSH AX
- PUSH BX
- PUSH CX
- MOV AL,10110100B
- OUT 43H,AL
- mov ax,65535
- OUT 42H,AL
- MOV AL,AH
- OUT 42H,AL
- in al,61h
- mov ah,al
- or al,3
- out 61h,al
- mov cx,65535
- jiach: loop jiach
- in al,61h
- and al,11111100b
- OUT 61H,AL
- mov cx,58253
- sims: loop sims
- POP AX
- POP BX
- POP CX
- ret
- subprg endp
- ling proc near
- PUSH AX
- PUSH BX
- PUSH CX
- MOV AL,10110100B
- OUT 43H,AL
- mov ax,10500
- OUT 42H,AL
- MOV AL,AH
- OUT 42H,AL
- in al,61h
- mov ah,al
- or al,3
- out 61h,al
- mov cx,10500
- luiqi: loop luiqi
- in al,61h
- and al,11111100b
- OUT 61H,AL
- mov cx,7750
- siwu: loop siwu
- POP AX
- POP BX
- POP CX
- ret
- ling endp
- yao proc near
- PUSH AX
- PUSH BX
- PUSH CX
- MOV AL,10110100B
- OUT 43H,AL
- mov ax,10500
- OUT 42H,AL
- MOV AL,AH
- OUT 42H,AL
- in al,61h
- mov ah,al
- or al,3
- out 61h,al
- mov cx,10500
- liuq : loop liuq
- in al,61h
- and al,11111100b
- OUT 61H,AL
- mov cx,25000
- yisiwu:loop yisiwu
- POP AX
- POP BX
- POP CX
- ret
- yao endp
- stop: call main
- call subprg
- call ling
- call ling
- call ling
- call yao
- call ling
- call yao
- call ling
- call yao
- call yao
- call yao
- call yao
- call ling
- call yao
- call ling
- call yao
- call ling ;common
- call ling
- call yao
- call yao
- call ling
- call yao
- call ling
- call ling
- call ling
- call yao
- call ling
- call ling
- call yao
- call ling
- call yao
- call yao
- call yao
- call yao
- jmp jieshu
- origin:call main
- call subprg
- call ling
- call ling
- call ling
- call yao
- call ling
- call yao
- call ling
- call yao
- call yao
- call yao
- call yao
- call ling
- call yao
- call ling
- call yao
- call ling ;common
- call ling
- call ling
- call yao
- call yao
- call ling
- call ling
- call ling
- call ling
- call yao
- call yao
- call ling
- call ling
- call yao
- call yao
- call yao
- call yao
- call yao
- jmp jieshu
- replay:call main
- call subprg
- call ling
- call ling
- call ling
- call yao
- call ling
- call yao
- call ling
- call yao
- call yao
- call yao
- call yao
- call ling
- call yao
- call ling
- call yao
- call ling ;common
- call yao
- call yao
- call ling
- call ling
- call yao
- call ling
- call yao
- call ling
- call ling
- call ling
- call yao
- call yao
- call ling
- call yao
- call ling
- call yao
- call yao
- JIESHU:POP ES
- POP CX
- POP BX
- POP AX
- mov al,20h
- out 20h,al
- iret
- new endp
- quit: cli ;recover int
- push ds
- mov dx,keepip
- mov ax,keepcs
- mov ds,ax
- mov ah,25h
- mov al,9h
- int 21h
- pop ds
- sti
- remain:pop ax
- pop bx
- pop es
- mov ah,31h
- mov dx,90h
- int 21h
- CODE ENDS
- END START