1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
| DATA SEGMENT WEL DB "welcome! plz make your choice",0AH, 0DH,'0:quit',0AH, 0DH,'1:single',0AH, 0DH,'2:ten times',0AH, 0DH,'>>','$' WEL_2 DB 'press 1 to continue,press 0 to back',0AH, 0DH,'>>','$' gold DB 'Hu Tao',0 purple DB 'Xing Qiu',0 rubb DB 'rubbish',0 BUF DB 20,?,20 DUP('$') random_seed dw 0 CRLF DB 0AH, 0DH,'$' DATA ENDS
STACK SEGMENT STACK DW 20 DUP(0) STACK ENDS
CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX mov ah,00h mov al,03h int 10h mov ax,0 LEA DX, WEL ;欢迎 MOV AH, 09H INT 21H lea dx,BUF mov AH,0AH int 21H
mov al,buf+2 cmp al,'0' je break cmp al,'1' je lev2 jmp short lev1
lev1: mov cx,10 s1: call draw loop s1
lea dx,WEL_2 mov AH,09H int 21H
LEA DX, CRLF MOV AH, 09H INT 21H
lea dx,BUF mov AH,0AH int 21H
MOV ah,buf+2 cmp ah,'0' je START jmp short lev1 lev2: call draw lea dx,WEL_2 mov AH,09H int 21H LEA DX, CRLF MOV AH, 09H INT 21H
lea dx,BUF mov AH,0AH int 21H
MOV ah,buf+2 cmp ah,'0' je START jmp short lev2
break: MOV AH, 04CH ;退出 INT 21H
rand: mov ax, 0h out 43h, al in al, 40h in al, 40h in al, 40h;访问3次,保证随机性
mov bl, 100 div bl
mov al, ah mov ah, 0 ret
;------------------------------ draw: call rand cmp al,10 je print_g jb print_p
;1 MOV AH, 0EH MOV BL, 01001B
mov si,offset rubb mov di,0
printloop3: lodsb or al,al jz endprint3
int 010h jmp printloop3
endprint3: LEA DX, CRLF MOV AH, 09H INT 21H
ret
;2 print_g: MOV AH, 0EH MOV BL, 01110B
mov si,offset gold mov di,0
printloop1: lodsb or al,al jz endprint1
int 010h jmp printloop1
endprint1: LEA DX, CRLF MOV AH, 09H INT 21H
ret ;3 print_p: MOV AH, 0EH MOV BL, 01101B
mov si,offset purple mov di,0
printloop2: lodsb or al,al jz endprint2
int 010h jmp printloop2
endprint2: LEA DX, CRLF MOV AH, 09H INT 21H
ret
CODE ENDS END START
|