【实验名称】用汇编语言实现21点游戏基本功能【实验目的】熟悉汇编语言的基本用法【实验内容】准确判断任意牌型的大小,辨认玩家与庄家的输赢情况;累计玩家各牌局的输赢比和详细记录。
【实验步骤】提要:a)每次发牌时随机单张产生A~Kb)A记1点c)在给游戏者发牌前,游戏者可增加奖励或扣除的积分d)用屏幕显示当前牌点情况和操作信息,然后用键盘输入游戏者的操作流程:1.给参加游戏的人基本积分为1002.首先电脑自身产生一张底牌(显示)3.给参加游戏的人发一张牌4.询问游戏者是否要牌,若不要牌,则跳转到第9步5.重复第3个步骤6.计算牌点的和(J、Q、K记为10点,2~10分别记2~10点)7.若牌点和最小值大于21点,跳转第14步骤8.重复步骤4~79.判断电脑自身的牌点最大是否大于游戏者,若大于,则跳转第14步骤10.电脑自身再发一张牌(显示)11.重复第6步骤12.若牌点和最小大于21点,跳转第15步骤13.重复步骤9~1214.提示电脑赢的信息,扣除游戏者积分10分,跳转第16步骤15.提示游戏者赢的信息,奖励游戏者积分10分16.显示电脑底牌和当前游戏者剩余积分17.询问是否继续玩下一盘,若要重复2~1718.结束子程序调用:流程图:【实验程序】DATA SEGMENTBUFF1DB'****************************************'DB''DB'Welcome you to run this game!'DB''DB'****************************************','$' N DB?JIFEN DB?DIPAI DB?PAIDIAN DB?QH1DB?QH2DB?SH DB'10','$'JK DB'PEI LV(10OR5)?','$'MESSAGE0DB'DOU YOU WANT TO MORE?','$'MESSAGE1DB'************YOU WIN!************','$'MESSAGE2DB'************YOU LOST!************','$'MESSAGE3DB'Go on or not?','$'MESSAGE4DB'This is dipai:','$'MESSAGE5DB'This is JIFEN:','$'MESSAGE6DB'******THE GAME IS OVER!******','$'MESSAGE7DB0AH,0DH,'This is your PAIDIAN:','$'DATA ENDSSTACK SEGMENT STACKDW256DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXBEGIN:CALL XX0A1:MOV JIFEN,50A2:CALL RANDMOV DIPAI,BLCALL CHULIMOV QH1,BLJB1:CALL XXMOV AH,0INT16HCMP AL,59HJE JICALL XX21MOV N,5JMP A3JI:MOV N,10CALL XX20A3:CALL RANDCALL XX19MOV PAIDIAN,BLCALL DISP0CALL CHULIMOV QH2,BLCALL XX4A4:MOV AH,0INT16HCMP AL,4EHJE HCCMP AL,59HJNE A4A5:CALL RANDCALL XX19MOV PAIDIAN,BLCALL DISP0CALL CHULIA6:ADC QH2,BLA7:CMP QH2,21JA A14CALL XX4A8:JMP A4ZZ:CALL XX0JMP A2HC:CALL RETURNA9:MOV AL,QH2CMP QH1,ALJA A14A10:CALL RANDMOV PAIDIAN,BLCALL DISP0CALL CHULIA11:ADC QH1,BLA12:CMP QH1,21JA A15A13:JMP A9A14:CALL XX14CALL JIANCMP JIFEN,10JB A18JMP A16A15:CALL XX15CALL JIAA16:CALL XX16MOV AL,DIPAIMOV PAIDIAN,ALCALL DISP0CALL DISP1A17:CALL XX17 AG:MOV AH,0INT16HCMP AL,59hJE ZZCMP AL,4EHJE A18JNE AGA18:CALL XX18MOV AH,4CHINT21HRAND PROCPUSH CXPUSH DXPUSH AXSTIMOV CX,0FFFFH YS:DEC CXJNE YSMOV AH,0INT1AHMOV AX,DXAND AH,3MOV DL,13DIV DLMOV BL,AHADC BL,1POP AXPOP DXPOP CXRETRAND ENDPDISP0PROCCALL SPACECALL SPACECALL SPACEMOV AL,PAIDIANCMP AL,9JA OTHERCMP AL,1JE AADD AL,30HT:MOV DL,ALMOV AH,2INT21HRETOTHER:CMP AL,10JE SHICMP AL,11JE JCMP AL,12JE QMOV AL,4BHJMP TJ:MOV AL,4AHJMP TQ:MOV AL,51HJMP TA:MOV AL,41HJMP TSHI:LEA DX,SHMOV AH,09HINT21HRETDISP0ENDPDISP1PROCLEA DX,MESSAGE5MOV AH,9INT21HMOV AL,JIFENCMP AL,100JB MMMOV CL,100CBWDIV CLMOV BL,AHOR AL,30HMOV DL,ALMOV AH,2INT21HMOV AL,BL MM:MOV CL,10CBWDIV CLMOV DL,ALMOV AH,2INT21HMOV DL,30HMOV AH,2INT21HRETDISP1ENDPJIAN PROCCMP N,10JA XSBB JIFEN,10JMP TU1X:SBB JIFEN,20 TU1:RETJIAN ENDPJIA PROCCMP N,10JA YADC JIFEN,10JMP TUY:ADC JIFEN,20 TU:RETJIA ENDPXX PROCLEA DX,JKMOV AH,9INT21HRETXX ENDPXX0PROCMOV AX,0600HMOV CX,0000HMOV DX,184FHMOV BH,07HINT10HMOV AH,02HMOV DH,5MOV DL,15MOV BH,00HINT10HLEA DX,BUFF1INT21HCALL RETURNRETXX0ENDPXX4PROCCALL RETURNLEA DX,MESSAGE0MOV AH,09INT21HRETXX4ENDPXX14PROCCALL RETURNLEA DX,MESSAGE2MOV AH,9INT21HRETXX14ENDPXX15PROCCALL RETURNLEA DX,MESSAGE1MOV AH,9INT21HRETXX15ENDPXX16PROCCALL RETURNlea dx,MESSAGE4MOV AH,9INT21HRETXX16ENDPXX17PROCCALL RETURNLEA DX,MESSAGE3MOV AH,9INT21HCALL RETURNRETXX17ENDPXX18PROCLEA DX,MESSAGE6MOV AH,9INT21HRETXX18ENDPSPACE PROCMOV DL,20HMOV AH,2INT21HRETSPACE ENDPCHULI PROCCMP BX,10JB DMOV BX,10D:ADD BX,0RETCHULI ENDPRETURN PROCMOV AH,2MOV DL,0AHINT21HMOV DL,0DHINT21HRETRETURN ENDPXX19PROCLEA DX,MESSAGE7MOV AH,9INT21HRETXX19ENDPXX20PROCCALL SPACEMOV DL,59HMOV AH,2INT21HCALL SPACERETXX20ENDPXX21PROCCALL SPACEMOV DL,4EHMOV AH,2INT21HCALL SPACERETXX21ENDPRETCODE ENDSEND START。