猜拳汇编程序源代码.docx

上传人:b****4 文档编号:5068575 上传时间:2022-12-13 格式:DOCX 页数:21 大小:17.99KB
下载 相关 举报
猜拳汇编程序源代码.docx_第1页
第1页 / 共21页
猜拳汇编程序源代码.docx_第2页
第2页 / 共21页
猜拳汇编程序源代码.docx_第3页
第3页 / 共21页
猜拳汇编程序源代码.docx_第4页
第4页 / 共21页
猜拳汇编程序源代码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

猜拳汇编程序源代码.docx

《猜拳汇编程序源代码.docx》由会员分享,可在线阅读,更多相关《猜拳汇编程序源代码.docx(21页珍藏版)》请在冰豆网上搜索。

猜拳汇编程序源代码.docx

猜拳汇编程序源代码

附录1:

猜拳程序设计源代码清单

getCharMACROChar;接收一个字符放在char里

PUSHAX

MOVAH,1

INT21H

MOVChar,AL

POPAX

ENDM

showCharMACROchar;显示字符

PUSHAX

PUSHDX

MOVAH,2

MOVDL,char

INT21H

POPDX

POPAX

ENDM

showStringMACROstring;调用9号功能显示字符串

PUSHAX

PUSHDX

PUSHDS

MOVAX,DATA_SEG

MOVDS,AX

MOVAH,9

LEADX,string

INT21H

POPDS

POPDX

POPAX

ENDM

 

setCurPosMACROM,N,P;设置光标的位置在M行,N列,p页

PUSHAX

PUSHBX

PUSHDX

MOVAH,2

MOVBH,P

MOVDH,M

MOVDL,N

INT10H

POPDX

POPBX

POPAX

ENDM

getCurPosMACROM,N;获取光标的位置,将相应的行放在M中,列值放在N中

PUSHAX

PUSHBX

PUSHDX

MOVAH,3;读光标位置

MOVBH,0

INT10H

MOVM,DH

MOVN,DL

POPDX

POPBX

POPAX

ENDM

initShowModelMACROA;初始化显示模式

PUSHAX

MOVAH,0;用来设定显示模式的服务程序

MOVAL,A;AL寄存器表示欲设定的模式

INT10H

POPAX

ENDM

initWindowMACROA,B,C1,C2,D1,D2;初始化窗口或窗口内容向上卷动,也可以用于清屏

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVAH,6

MOVAL,A;上卷行数

MOVBH,B;卷入行属性(颜色)

MOVCH,C1;左上角行号

MOVCL,C2;左上角列号

MOVDH,D1;右下角行号

MOVDL,D2;右下角列号

INT10H

POPDX

POPCX

POPBX

POPAX

ENDM

PauseMACRO

PUSHAX

MOVAH,01H

INT21H

POPAX

ENDM

DATA_SEGSEGMENT;数据段定义

GameMenuDB'WelcomeUseCaiquanGame',0dh,0ah,'$';主菜单

DB'PlayGame',0dh,0ah,'$'

DB'About',0dh,0ah,'$'

DB'Exitgame',0dh,0ah,'$'

DisWDB'Win:

Time',0dh,0ah,'$'

DisFDB'Fail:

Time',0dh,0ah,'$'

DisEDB'YouhaveEquel:

Time',0dh,0ah,'$'

Dispay2DB'ThisTimeYouWin!

',0dh,0ah,'$'

Dispay3DB'ThisTimeYouFailed!

',0dh,0ah,'$'

Dispay4DB'ThisTimeYouEqueltoPC!

',0dh,0ah,'$'

Dispay5DB'Enter"Enter"tocontinue!

',0dh,0ah,'$'

Dispay6DB'Enter"ESC"toExit!

',0dh,0ah,'$'

DispaytDB'Youchoosethe"Tone"!

',0dh,0ah,'$'

DispaysDB'Youchoosethe"Scissor"!

',0dh,0ah,'$'

DispaycDB'Youchoosethe"Cloth"!

',0dh,0ah,'$'

DispayytDB'PCchoosethe"Tone"!

',0dh,0ah,'$'

DispayysDB'PCchoosethe"Scissor"!

',0dh,0ah,'$'

DispayycDB'PCchoosethe"Cloth"!

',0dh,0ah,'$'

KickDB?

R_NUMDB?

NUMDB?

XDB?

YDB?

FAIDB48

WINDB48

EQDB48

EXITMsgDB'Youreallywanttoexit!

','$'

DB'EnterYtoexit','$'

DB'EnterNtocontinue!

','$'

InformationDB'Authorinformation',0dh,0ah,'$'

DB'Name:

ShangZhiGuo',0dh,0ah,'$'

DB'Class:

tongxin1003',0dh,0ah,'$'

DB'StudentID:

20103309',0dh,0ah,'$'

CharDB?

LineADB'YouHaveBeginningGame!

',0dh,0ah,'$'

LineBDB'-----------------------------------',0dh,0ah,'$'

lineFDB'PleaseInput"0"or"1"or"2"',0dh,0ah,'$'

LineCDB'0------tone',0dh,0ah,'$'

LineC1DB'1------Scissor',0dh,0ah,'$'

LineC2DB'2------Cloth',0dh,0ah,'$'

LineDDB'/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/',0dh,0ah,'$'

LineEDB'InputyourchooseHere:

',0dh,0ah,'$'

LineE1DB'InputError!

Pleaseinputagain',0dh,0ah,'$'

LineE2DB'Chooseanumberfrom0-2input',0dh,0ah,'$'

LinetDB'Enter"Tab"toRestart!

',0dh,0ah,'$'

DATA_SEGENDS

 

STACK_SEGSEGMENTSTACK;堆栈段定义

STACK_BUFDW120DUP(?

TOPEQU$-STACK_BUF

STACK_SEGENDS

 

CODE_SEGSEGMENT;程序代码区

ASSUMECS:

CODE_SEG,DS:

DATA_SEG,SS:

STACK_SEG

MAINPROCFAR

START:

MOVAX,STACK_SEG

MOVSS,AX

MOVSP,TOP

MOVAX,DATA_SEG

MOVDS,AX

BEGIN:

initShowModel0H

initWindow0,9EH,0,0,25,40;宏调用

MENU:

setCurPos2,2,0

showStringLineD

setCurPos4,9,0;设置主菜单光标位置

showStringGameMenu

setCurPos8,15,0

showStringGameMenu[27]

setCurPos12,15,0

showStringGameMenu[39]

setCurPos16,15,0

showStringGameMenu[47]

setCurPos21,2,0

showStringLineD

setCurPos8,12,0

showChar'>'

Keyboad:

getCharKick;菜单选择部分

CMPKick,9;按的是键TAB

JETAB

JMPENTER

TAB:

getCurPosX,Y

NEXT_Tab_1:

CMPX,8;选择标记在start处

JNZNEXT_Tab_2

setCurPos8,12,0

showChar''

setCurPos8,15,0

showStringGameMenu[27]

setCurPos12,12,0

showChar'>'

JMPKeyboad

NEXT_Tab_2:

CMPX,12;选择标记在ABOUT处

JNZNEXT_Tab_3

setCurPos12,12,0

showChar''

setCurPos12,15,0

showStringGameMenu[39]

setCurPos16,12,0

showChar'>'

JMPKeyboad

NEXT_Tab_3:

CMPX,16;选择标记在exit处

JENEXT_Tab_3_ELSE

JMPERROR

NEXT_Tab_3_ELSE:

setCurPos16,12,0

showChar''

setCurPos16,15,0

showStringGameMenu[47]

setCurPos8,12,0

showChar'>'

JMPKeyboad

ENTER:

CMPKick,13;按的是键ENTER

JEENTER_ENTER

JMPESC_KEY

ENTER_ENTER:

getCurPosX,Y

NEXT_ENTER_1:

CMPX,8;选择标记在start处

JZNEXT_ENTER_E

JMPNEXT_ENTER_2

NEXT_ENTER_E:

MOVEQ,48

MOVFAI,48

MOVWIN,48

CALLGamePlay

JMPBEGIN

NEXT_ENTER_2:

CMPX,12;选择标记在about处

JNZNEXT_ENTER_3

CALLGameAbout

JMPBEGIN

NEXT_ENTER_3:

CMPX,16;选择标记在eXIT处

JNZERROR

CALLGameExit

JMPBEGIN

ESC_KEY:

CMPKick,27;按的是键ESC

JNEELSE_KEY

CALLGameExit

JMPBEGIN

ELSE_KEY:

JMPBEGIN

ERROR:

initShowModel0

initWindow0,9EH,0,0,25,40

setCurPos12,6,0

getCharKick

EXIT:

MOVAX,4CH

INT21H

MAINENDP

;开始游戏子程序

GamePlayPROC

ReStart:

initShowModel0

initWindow0,9EH,0,0,25,40

setCurPos2,2,0

showStringLineB

setCurPos3,2,0

showStringLineA

setCurPos5,2,0

showStringLineF

setCurPos7,2,0

showStringLineB

setCurPos10,12,0

showStringLineC

setCurPos13,12,0

showStringLineC1

setCurPos16,12,0

showStringLineC2

setCurPos19,2,0

showStringLineB

setCurPos24,2,0

showStringLineD

setCurPos19,2,0

showStringLineE2

CALLRand

MOVNUM,BL

Key:

setCurPos21,2,0

showStringLineE

setCurPos21,29,0

getCharR_NUM

CMPR_NUM,'0'

JEJISUAN

JMPScissor

Scissor:

CMPR_NUM,'1'

JEJISUAN

JMPCloth

Cloth:

CMPR_NUM,'2'

JEJISUAN

setCurPos19,2,0

showStringLineE1

setCurPos21,29,0

JMPKey

showStringLineE

JISUAN:

Pause

CMPR_NUM,'0'

JEJISUAN2;等于跳转

CMPR_NUM,'1'

JEJISUAN3

CMPR_NUM,'2'

JEJISUAN4

JISUAN2:

CMPNUM,0;计算机出“石头”计算

JEa;ping玩家出石头

CMPNUM,1

JEb;shu玩家出剪刀

CMPNUM,2

JEc;yin玩家出布

JISUAN3:

CMPNUM,0;计算机出“剪刀”计算

JEf;玩家出石头

CMPNUM,1;玩家出剪刀

JEe

CMPNUM,2

JEd;玩家出布

JISUAN4:

CMPNUM,0;计算机出“布”计算

JEh;玩家出石头

CMPNUM,1;玩家出剪刀

JEl;玩家出布

CMPNUM,2

JEg

a:

CALLSHOW1

CALLxian1

JMPshuru;shitouduishitou

RET

b:

CALLSHOW3;shitouduijiandao

CALLxian2

JMPshuru

RET

c:

CALLSHOW2;shitouduibu

CALLxian3

JMPshuru

RET

d:

CALLSHOW2

CALLxian4

JMPshuru

RET

e:

CALLSHOW1

CALLxian5

JMPshuru

RET

f:

CALLSHOW3

CALLxian6

JMPshuru

RET

g:

CALLSHOW3

CALLxian7

JMPshuru

RET

h:

CALLSHOW2

CALLxian8

JMPshuru

RET

l:

CALLSHOW1

CALLxian9

JMPshuru

RET

shuru:

setCurPos25,0,0

getCharKick

CMPKick,27

JEescc

CMPKick,13

JEcontinue

CMPKick,9

JNEshuru

RET

escc:

CALLGameExit

continue:

JMPReStart

GamePlayENDP

;产生随机数

RandPROC

PUSHCX

PUSHDX

PUSHAX

STI

MOVAH,0;读时钟计数器值

INT1AH

MOVAX,DX;清高6位

ANDAH,3

MOVDL,100;除100,产生0~100余数

DIVDL

MOVAH,0

MOVDL,3;除3,产生0~2余数

DIVDL

MOVBL,AH;余数存BX,除数

POPAX

POPDX

POPCX

RET

RandENDP

;游戏结果显示子程序

SHOW1PROC

INCEQ

initShowModel0

initWindow0,9EH,0,0,25,40

setCurPos2,2,0

showStringLineD

setCurPos8,2,0

showStringDispay4

setCurPos10,2,0

showStringLineB

setCurPos11,2,0

showStringDisE

setCurPos13,2,0

showStringDisF

setCurPos15,2,0

showStringDisW

setCurPos18,2,0

showStringDispay5

setCurPos20,2,0

showStringDispay6

setCurPos16,2,0

showStringLineB

setCurPos24,2,0

showStringLineD

setCurPos21,2,0

showStringLinet

 

setCurPos10,25,0

showCharEQ

setCurPos12,25,0

showCharFAI

setCurPos14,25,0

showCharWIN

RET

SHOW1ENDP

SHOW2PROC

INCFAI

initShowModel0

initWindow0,9EH,0,0,25,40

setCurPos2,2,0

showStringLineD

setCurPos8,2,0

showStringDispay3

setCurPos11,2,0

showStringDisE

setCurPos13,2,0

showStringDisF

setCurPos15,2,0

showStringDisW

setCurPos10,2,0

showStringLineB

setCurPos18,2,0

showStringDispay5

setCurPos20,2,0

showStringDispay6

setCurPos16,2,0

showStringLineB

setCurPos24,2,0

showStringLineD

setCurPos21,2,0

showStringLinet

setCurPos10,25,0

showCharEQ

setCurPos12,25,0

showCharFAI

setCurPos14,25,0

showCharWIN

RET

SHOW2ENDP

SHOW3PROC

INCWIN

initShowModel0

initWindow0,9EH,0,0,25,40

setCurPos2,2,0

showStringLineD

setCurPos8,2,0

showStringDispay2

setCurPos10,2,0

showStringLineB

setCurPos11,2,0

showStringDisE

setCurPos13,2,0

showStringDisF

setCurPos15,2,0

showStringDisW

setCurPos18,2,0

showStringDispay5

setCurPos20,2,0

showStringDispay6

setCurPos16,2,0

showStringLineB

setCurPos24,2,0

showStringLineD

setCurPos21,2,0

showStringLinet

setCurPos10,25,0

showCharEQ

setCurPos12,25,0

showCharFAI

setCurPos14,25,0

showCharWIN

RET

SHOW3ENDP

xian1PROC

setCurPos3,2,0

showStringDispayt

setCurPos5,2,0

showStringDispayyt

RET

xian1ENDP

xian2PROC

setCurPos3,2,0

showStringDispayt

setCurPos5,2,0

showStringDispayys

RET

xian2ENDP

xian3PROC

setCurPos3,2,0

showStringDispayt

setCurPos5,2,0

showStringDispayyc

RET

xian3ENDP

xian4PROC

setCurPos3,2,0

showStringDispays

setCurPos5,2,0

showStringDispayyt

RET

xian4ENDP

xian5PROC

setCurPos3,2,0

showStringDispays

setCurPos5,2,0

showStringDispayys

RET

xian5ENDP

xian6PROC

setCurPos3,2,0

showStringDispays

setCurPos5,2,0

showStringDispayyc

RET

xian6ENDP

xian7PROC

setCurPos3,2,0

showStringDispayc

setCurPos5,2,0

showStringDispayyt

RET

xian7ENDP

xian8PROC

setCurPos3,2,0

showStringDispayc

setCurPos5,2,0

showStringDispayys

RET

xian8ENDP

xian9PROC

setCurPos2,2,0

showStringDispa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1