⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h815s.asm

📁 上课老师给的8086仿真器
💻 ASM
字号:
CODE	  SEGMENT
ASSUME	  CS:CODE
PORT	  EQU 0060h
        ORG 1B00H
START:  MOV    DS:[077AH],1717H
        MOV    DS:[077CH],1717H
        MOV    DS:[077EH],1717H
	MOV    AL,80
	MOV    DX,PORT+3
	OUT    DX,AL
	MOV    AL,13		    ;set light divisor
	MOV    DX,PORT
	OUT    DX,AL
	MOV    AL,00		    ;set low divisor 9600 boud
	MOV    DX,PORT+1
	OUT    DX,AL
	MOV    AL,00011011B	     ;8 bits 1 stop
	MOV    DX,PORT+3
	OUT    DX,AL
	MOV    AL,00010011b
	MOV    DX,PORT+4
	OUT    DX,AL
	MOV    AL,00H
	MOV    DX,PORT+1
	OUT    DX,AL		     ;interrupt enable all off
        MOV    DS:[0740H],077FH
REDIKEY:CALL  DISPKEY
	CMP BYTE PTR DS:[0752H],10H
        JC WATTXD
	JMP FUNCKEY
WATTXD: MOV    DX,PORT+5
	IN     AL,DX		      ;GET LINE STATUS
	AND    AL,20H
	TEST   AL,20H
	JZ     WATTXD
        MOV    AL,BYTE PTR DS:[0752H]
	MOV    DX,PORT
	OUT    DX,AL
	MOV    CX,0FFFFH
S50:	LOOP   S50
NEXT:	MOV    DX,PORT+5
	IN     AL,DX
	AND    AL,01
	TEST   AL,01
	JZ     NEXT
	MOV    DX,PORT
	IN     AL,DX
	CMP    BYTE PTR DS:[0752H],AL
	JZ     SERI2
	MOV    DS:[077AH],1C1CH
	MOV    DS:[077CH],101BH
	MOV    DS:[077EH],1010H
SERERR: CALL   DISP
	JMP    SERERR
SERI2:	MOV BX,DS:[0740H]
        MOV AL,DS:[0752H]
	MOV DS:[BX],AL
	CMP BX,077AH
	JZ SERIAL1
        DEC BX
	MOV DS:[0740H],BX
        MOV CX,0FFFFH
SERI3:  LOOP SERI3
	JMP REDIKEY
SERIAL1:MOV DS:[0740H],077FH
	JMP REDIKEY
FUNCKEY:CMP BYTE PTR DS:[0752H],1FH
	JNZ REDIKEY
	MOV DS:[077AH],191AH
	MOV DS:[077CH],1819H
	MOV DS:[077EH],1010H
MONIT:	CALL DISP
	JMP MONIT
dispkey:call disp
	call key
	mov ah,al	     ;newkey
	mov bl,ds:[0748h]    ;ltime
	mov bh,ds:[0749h]    ;lkey
	mov al,01h
	mov dx,0ff21h
	out dx,al
	cmp ah,bh
	mov bh,ah	     ;bh=new key
	mov ah,bl	     ;al=time
	jz disk4
	mov bl,88h
	mov ah,88h
disk4:	dec ah
	cmp ah,82h
	jz disk6
	cmp ah,0eh
	jz disk6
	cmp ah,00h
	jz disk5
	mov ah,20h
	dec bl
	jmp disk7
disk5:	mov ah,0fh
disk6:	mov bl,ah
	mov ah,bh
disk7:	mov byte ptr ds:[0748h],bl
	mov byte ptr ds:[0749h],bh
	mov byte ptr ds:[0752h],bh
	mov al,ah
	ret
disp:	push cx
	mov dx,077fh
	mov ah,20h
disp0:	mov cx,00ffh
	mov bx,dx
	mov bl,ds:[bx]
        mov bh,0h
	push dx
	mov dx,0ff22h
	mov al,BYTE PTR DS:[bx+DATA1]     ;
	out dx,al
	mov dx,0ff21h
	mov al,ah
	out dx,al
disp1:	loop disp1
	pop dx
	dec dx
	shr ah,01h
	jnz disp0
	pop cx
	ret
data1:	db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
	db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh
	db 0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh
	db 90h,0a3h,0a1h,86h,8fh

key:	mov al,0ffh
	mov dx,0ff22h
	out dx,al
	mov bl,00h
	mov ah,0feh
	mov cx,08h
key1:	mov al,ah
	mov dx,0ff21h
	out dx,al
	shl al,01h
	mov ah,al
	nop
	nop
	nop
	nop
	nop
	nop
	mov dx,0ff23h
	in al,dx
	not al
	nop
	nop
	and al,0fh
	jnz key2
	inc bl
	loop key1
	jmp nkey
key2:	test al,01h
	je key3
	mov al,00h
	jmp key6
key3:	test al,02h
	je key4
	mov al,08h
	jmp key6
key4:	test al,04h
	je key5
	mov al,10h
	jmp key6
key5:	test al,08h
	je nkey
	mov al,18h
key6:	add al,bl
	cmp al,10h
	jnc fkey
	mov bl,al
	mov bh,0h
	mov al,BYTE PTR DS:[bx+DATA2]
	ret
nkey:	mov al,20h
fkey:	ret
data2:	db 07h,04h,08h,05h,09h,06h,0ah,0bh
	DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh
CODE   ENDS
END    START



⌨️ 快捷键说明

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