📄 mpc1.asm
字号:
;mainpic
data segment
hour db 0 ;要初始化
minute db 0
second db 0
table db 'qpalzmxnskwieudjcnvbfhrytqscgyjmkopzoxicvubhnymtgrfjrekqdfghyuiopmbeswzaqwqpbncxmalalpnqcxz'
data ends
stack segment stack
db 200 dup (?)
stack ends
code segment
assume cs:code,ss:stack,ds:data
begin:
mov ax,data
mov ds,ax
mov ah,0
mov al,3
int 10h
mov ah,15
int 10h
mov dx,0000h
mov ah,2
int 10h
mov al,08h
mov bh,0
mov cx,80 ;显示上眉
mov ah,0ah
int 10h
mov cx,1
mov dx,0100h ;显示左披
left: mov ah,2
int 10h
mov al,08h
mov ah,0ah
int 10h
inc dh
cmp dh,24
jb left
mov dl,79 ;显示右披
right: mov ah,2
int 10h
mov al,08h
mov ah,0ah
int 10h
dec dh
ja right
mov dx,1701h
mov ah,2
int 10h
mov al,01h
mov cx,78
mov ah,0ah
int 10h
mov dx,1800h
mov ah,2
int 10h
mov al,08h
mov cx,80 ;显示下眉
mov ah,0ah
int 10h
call enter
call topword
mov ah,4ch
int 21h
; 显示游戏界面上方字母的子程序
topword proc
lea si,table
mov cx,1
mov dx,0101h ;预制光标位置
con: mov ah,2
int 10h
mov ah,0ah
mov al,table[si]
int 10h
inc si
inc dl
cmp dl,79
jb con ;显示的字母不足78个转
ret
topword endp
;游戏界面子程序和游戏子程序间的等待ENTER输入的子程序
enter proc
push ax
push cx
push dx
mov ah,1
int 16h
jz wait1 ;键盘没有输入时等待
wait1: call delay
cmp al,0ah ;有输入时比较输入是否为enter键
jne wait1
cmp al,0dh
jne wait1
; mov ah,2ch ;为enter键则读取游戏开始时刻
; int 21h
; mov hour,ch
; mov second,cl
; mov minute,dh
pop dx
pop cx
pop ax
ret
enter endp
;延时子程序,用于等待enter键时的暂停
DELAY PROC
PUSH CX
PUSH DX
MOV DX,32
DL1:
MOV CX,0FFFFH
DL2:
LOOP DL2
DEC DX
JNZ DL1
POP DX
POP CX
RET
DELAY ENDP
code ends
end begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -