ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:20.02KB ,
资源ID:10790130      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10790130.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(24点游戏实验报告 汇编语言.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

24点游戏实验报告 汇编语言.docx

1、24点游戏实验报告 汇编语言 24点游戏实验报告 汇编语言微机原理实验报告 学院名称 : 通信与信息工程学院 实验名称 : 24点游戏 班级 : 安全0801 学生姓名 : 王宇,吴洁,吴泽鹏,石育妹,魏圆圆 学号(班内序号) : 060830(31,32,33,34,36) 一、实验题目: 24点游戏 二、实验目的与要求: 1、实验目的:操作者任意输入4个牌张数字(1-9,A算1,花牌不算),程序要给出将这4个数字计算出24的表达式,如果不能计算出这个结果,显示“no answer”; 2、基本要求:(1)图形显示牌张效果;(2)结果显示表达式清晰;(3)若查询结果有超过20%比例不能计算出

2、正确表达式,视为没有达到要求。 三、实验扩展: 1、可以在当前运行状态下,可以重新发牌,进行新一轮的游戏; 2、游戏结束后,可按“Esc”键退出游戏。 四、实验所完成的功能: 1、运行程序,输入四张牌(19)后,会自动显示四张牌,并显示牌张效果,其中1显示的是A。 2、命令提示: A-AUTO,SP-RESTART,ESC-QUIT;(SP为空格键) 3、自动部分:按下“A”键后,若有解,则显示运算表达式,若无解,则显示“no answer ! ”; 五、实验代码基本框架: (1)数据段部分:(Data Segment) 1、定义欢迎界面; 2、定义光标位置; 3、定义方框; 4、自动24点部

3、分数据段; 5、界面显示部分; 6、数据段结束(Data Ends) (2)代码段部分:(Code Segment) 1、设置BIOS调色板; 2、显示欢迎语句; 3、输入牌号并同时生成花色; 4、输入命令:A-AUTO, SP-RESTART,ESC-QUIT 5、自动24点显示部分; 6、显示部分子程序:显示4个方框;显示牌号;显示花色; 7、设置修改光标位置的子程序; 8、绘制一个方块的子过程; 9、输入牌号子程序; 10、输入数据处理子程序;(转换1-A,及其他数字处理) 11、24点计算函数(5种树的计算函数); 12、5种树的显示函数; 13、结束程序。 六、流程图 一、数据段部分

4、: 数据段部分结束数据段部分开始定义欢迎界面 数据段部分结束 数据段部分开始 定义欢迎界面 定义光标位置 定义方框 自动24点部分数据段 二、代码段部分: 输入牌号及生成随机花色并显示牌张效果显示欢迎语句设置BIOS调色板代码段开始 输入牌号及生成随机花色并显示牌张效果 显示欢迎语句 设置BIOS调色板 代码段开始 输入命令 输入命令 自动24点显示 自动24点显示 各子程序代码段结束 各子程序 代码段结束 1、输入牌号及生成随机花色并显示牌张效果: 开始 开始 CX=0?循环次数CX-1DI+1SI+2将花色送入偏移地址为(DI)的单元内将牌号送入偏移地址为(SI)和(SI+1)的单元内调用

5、输入牌号及生成花色的子程序循环次数送CX存放花色数组偏移地址送DI牌号数组偏移地址送SI CX=0? 循环次数CX-1 DI+1 SI+2 将花色送入偏移地址为(DI)的单元内 将牌号送入偏移地址为(SI)和(SI+1)的单元内 调用输入牌号及生成花色的子程序 循环次数送CX 存放花色数组偏移地址送DI 牌号数组偏移地址送SI 处理数据 N 处理数据 Y 调用显示四个方框及牌号的子程序 调用显示四个方框及牌号的子程序 2、wait-key输入命令: 开始 开始 判断键盘是否输入A 判断键盘是否输入A Y N 判断键盘是否输入空格 判断键盘是否输入空格 Y N 判断键盘是否输入退出键 判断键盘是

6、否输入退出键 Y 退出程序 退出程序 重新开始程序 重新开始程序 自动24点显示 自动24点显示 3、自动24点显示 调用24点计算函数docal5调用24点计算函数docal4调用24点计算函数docal3调用24点计算函数docal2开始 将输入的数放入dat-g和dat中调用24点计算函数docal1结果=24/?调用24点计算函数docal2结果=24/? 调用24点计算函数docal5 调用24点计算函数docal4 调用24点计算函数docal3 调用24点计算函数docal2 开始 将输入的数放入dat-g和dat中 调用24点计算函数docal1 结果=24/? 调用24点计算

7、函数docal2 结果=24/? N Y 结果=24/? 结果=24/? N Y 结果=24/? 结果=24/? N Y 结果=24/? 结果=24/? N Y 结果=24/? 结果=24/? N调用24点显示函数 调用24点显示函数 显示NO ANSWER 显示NO ANSWER 除数=0? 除数=0? N Y 将数100放入trans-val中(说明得数!=24)用idiv除法指令,除以bx退出transval 将数100放入trans-val中(说明得数!=24) 用idiv除法指令,除以bx 退出transval子程序 将余数放入dx中,商放入ax中 dx=0? N 退出transva

8、l子程序商放入 退出transval子程序 商放入trans-val中 七、实验代码:(以上基本框架会在以下代码中有所标注) ;* 运行程序,自己输入4张纸牌,通过命令键可实现自动运算24点,并将结果显示在纸牌下方 * ;* 命令提示: A-AUTO,SP-RESTART,ESC-QUIT ;* 自动部分:若有解,则显示运算表达式,若无解,则显示' NO ANSWEWR ! ' ;/显示部分数据段/ ;*定义欢迎界面* DATA segment NOTE1 DB 0AH,0DH,' WELCOME TO THE 24 POINTS GAME ',

9、9;$' NOTE2 DB 0AH,0DH,' A-AUTO,SP-RESTART,ESC-QUIT','$' NOTE3 DB 0AH,0DH,' no answer! ','$' NOTE4 DB 0AH,0DH,' Input the numbers:','$' ;*定义光标位置* X_POS DB 10 ;行 Y_POS DB 10 ;列 ;*定义方框* ypos dw ? ;定义列起始位置 xpos dw ? ;定义行起始位置 color db ? ;0-

10、无色,1-绿,2-红,3-橘黄,4-橙红,5-紫红,7-白,8*-灰,9-蓝,10-绿,11-青绿,12-粉红,14-黄,15-白 cnt1 DW 0 ;定义方框宽度 cnt2 DW 0 ;定义方框长度 len db 0 dat_disp db 4 dup(' ') ;显示的牌的数字 dat_g dw 4 dup(?) ;输入的数的数组 Input_d dw ? card_ran db ? card db 4 dup (?) ;牌的花色 ;/自动24点部分数据段/ dat dw 4 dup(?) B DW ? i db 0 ;i,j,k循环变量 j db 0 k db 0

11、t1 dw ? ;临时计算结果 t2 dw ? t3 dw ? trans_val dw ? ;运算结果 docal_1 dw ? ;树的计算结果 docal_2 dw ? docal_3 dw ? docal_4 dw ? docal_5 dw ? buff1 db 11 dup(?),0dh,0ah,'$' ;各树输出结果缓存 buff2 db 11 dup(?),0dh,0ah,'$' buff3 db 11 dup(?),0dh,0ah,'$' buff4 db 11 dup(?),0dh,0ah,'$'

12、buff5 db 11 dup(?),0dh,0ah,'$' opstr db '+','-','*','/' nosolve_flag db 0 ;nosolve标志 data ends ;/界面显示部分/ code segment ASSUME CS:code,DS:data start: MOV AX,data MOV DS,AX ;*设置BIOS调色板* mov ah, 00h ;设置绘图模式 mov al, 12h ;16色图形模式 int 10h mov ah, 0bh ;设置调色板

13、 mov bh, 0Fh ;调色板ID mov bl, 02h ;颜色 int 10h ;*显示欢迎语句* LEA DX,NOTE1 MOV AH,09H INT 21H LEA DX,NOTE2 MOV AH,09H INT 21H MOV B,0260H MOV AH,2 MOV BX,0 MOV DX,B INT 10H MOV SI,OFFSET NOTE4 MOV DX,SI MOV AH,9 INT 21H ;* *输入牌号及随机花色* lea si,dat_g LEA DI,CARD mov cx,4 MOV B,0370H Input_loop: call Input_g mo

14、v bx,Input_d mov word ptrsi,bx MOV AL,CARD_RAN MOV BYTE PTRDI,AL inc si inc si INC DI INC B loop Input_loop call deal_data call FRAME1 call FRAME2 ;*输入命令:A-AUTO ,SP-RESTART,ESC-QUIT * wait_key: MOV AH,08H INT 21H cmp al,'A' JZ AUTO CMP AL,1BH JZ EXIT CMP AL,20H JZ START JMP WAIT_KEY ;/自动24

15、点显示/ AUTO: part_24: MOV X_POS,12 ;行,定义光标位置,显示24点算式 MOV Y_POS,24 ;列 CALL POSITION mov cx,4 lea si,dat_g ;将数放入dat_g和dat中 lea di,dat copy_data: mov ax,word ptr si mov word ptrdi,ax inc si inc si inc di inc di loop copy_data loop1: ;显示自动运算结果 loop2: loop3: call docal1 ;调用各树并产生结果与24比较,相等则显示该运算表达式 cmp doca

16、l_1,24 jz disp1 call docal2 cmp docal_2,24 jz disp2 call docal3 cmp docal_3,24 jz disp3 call docal4 cmp docal_2,24 jz disp4 call docal5 cmp docal_5,24 jz disp5 jmp no_solve disp1: call display1 ;显示运算表达式并返回到wait_key处 jmp wait_key disp2: call display2 jmp wait_key disp3: call display3 jmp wait_key dis

17、p4: call display4 jmp wait_key disp5: call display5 jmp wait_key loop1_2: jmp loop1 no_solve:inc k ;遍历各运算符以确定是否有解,无解则显示NO ANSWER cmp k,4 jnz loop3 inc j mov k,0 cmp j,4 jnz loop2 inc i mov j,0 mov k,0 cmp i,4 jnz loop1_2 LEA DX,NOTE3 MOV AH,09H INT 21H mov nosolve_flag,1 jmp wait_key key_in: mov ah,

18、08h int 21h cmp al,1bh ;esc 退出 jz exit cmp al,20h jz start exit: mov ah,4ch int 21h ;/显示部分/ ;*显示4个方框 * FRAME1 PROC PUSHF MOV xpos,70 ;定义行 MOV ypos,60 ;定义列 mov color,13 ;存像素值 CALL RECT MOV xpos,70 MOV ypos,160 mov color,9 CALL RECT MOV xpos,70 MOV ypos,260 mov color,14 CALL RECT MOV xpos,70 MOV ypos,

19、360 mov color,12 CALL RECT MOV xpos,70 MOV ypos,460 mov color,0 CALL RECT popf RET FRAME1 ENDP ;*显示牌号* FRAME2 PROC PUSHF lea si,dat_disp MOV X_POS,7 ;行 MOV Y_POS,12 ;列 CALL POSITION MOV AL,si MOV BL,0bH ;像素值 MOV AH,0EH INT 10H MOV X_POS,7 MOV Y_POS,25 CALL POSITION MOV AL,si+1 MOV BL,0bH MOV AH,0EH

20、INT 10H MOV X_POS,7 MOV Y_POS,37 CALL POSITION MOV AL,si+2 MOV BL,0bH MOV AH,0EH INT 10H MOV X_POS,7 MOV Y_POS,49 CALL POSITION MOV AL,si+3 MOV BL,0bH MOV AH,0EH INT 10h ;*显示花色* MOV X_POS,5 ;行 MOV Y_POS,8 ;列 CALL POSITION MOV AL,DI MOV BL,0AH ;像素值 MOV AH,0EH INT 10H MOV X_POS,5 MOV Y_POS,21 CALL POS

21、ITION MOV AL,DI+1 MOV BL,0AH MOV AH,0EH INT 10H MOV X_POS,5 MOV Y_POS,33 CALL POSITION MOV AL,DI+2 MOV BL,0AH MOV AH,0EH INT 10H MOV X_POS,5 MOV Y_POS,46 CALL POSITION MOV AL,DI+3 MOV BL,0AH MOV AH,0EH INT 10H POPF RET FRAME2 ENDP ;*设置/修改光标的位置* POSITION PROC NEAR PUSH BX PUSH DX MOV BH,00H ;页码 MOV D

22、H,X_POS ;行 MOV DL,Y_POS ;列 MOV AH,02H ;设置光标位置 INT 10H POP DX POP BX POSITION ENDP ;*绘制一个方块的子过程* RECT proc near push ax push dx push cx mov ah, 0ch mov al, color ;存像素值 mov dx, xpos ;存入行0-199 mov cnt1,120 ;方框宽度 disp1_r: mov cx, ypos ;存入列0-639 mov cnt2,80 ;方框长度 disp2_r: int 10h inc cx dec cnt2 jnz disp

23、2_r inc dx dec cnt1 jnz disp1_r pop ax pop dx pop cx Ret Rect endp ;*牌号的输入及随机花色* Input_g proc PUSH CX PUSH DX PUSH BX MOV AH,2 MOV BX,0 MOV DX,B INT 10H ;输入部分 MOV AH,01H INT 21H SUB AL,30H MOV AH,0 MOV Input_d,AX ;随机花色 MOV AX,0 MOV AL,DL CBW MOV BL,4 DIV BL ADD AH,3 MOV CARD_RAN,AH POP BX POP DX POP

24、 CX ret Input_g endp ;*输入数据处理的子程序* deal_data proc push bx push cx lea si,dat_g lea di,dat_disp mov cx,4 deal_on: mov word ptr bx,si ;转换1_A cmp bx ,1 jz deal1 jmp deal_others deal1: mov word ptr si,1 mov byte ptr di,'A' jmp deal_over deal_others:add bx,30h mov byte ptrdi,bl deal_over: inc s

25、i inc si inc di loop deal_on pop cx pop bx ret deal_data endp ;/ 24点计算函数/ ;/*5种树的计算函数* ;/*/(1*2)*(3*4)*1 docal1 proc lea si,dat mov ax,si mov bx,si+2 ;计算(1*2) mov dl,i call transval mov dx,trans_val ;将计算结果保存 mov t1,dx mov ax,si+4 mov bx,si+6 ;计算(3*4) mov dl,k call transval mov dx,trans_val mov t2,dx

26、 mov ax,t1 mov bx,t2 mov dl,j call transval ;计算(1*2)*(3*4) mov dx,trans_val mov docal_1,dx ret docal1 endp ;/*/1*(2*(3*4)*2 docal2 proc lea si,dat mov ax,si+4 mov bx,si+6 mov dl,k call transval mov dx,trans_val mov t1,dx mov ax,si+2 mov bx,t1 mov dl,j call transval mov dx,trans_val mov t2,dx mov ax,

27、si mov bx,t2 mov dl,i call transval mov dx,trans_val mov docal_2,dx ret docal2 endp ;/*/1*(2*3)*4)*3 docal3 proc lea si,dat mov ax,si+2 mov bx,si+4 mov dl,j call transval mov dx,trans_val mov t1,dx mov ax,t1 mov bx,si+6 mov dl,k call transval mov dx,trans_val mov t2,dx mov ax,si mov bx,t2 mov dl,i c

28、all transval mov dx,trans_val mov docal_3,dx ret docal3 endp ;/*/(1*2)*3)*4*4 docal4 proc lea si,dat mov ax,si mov bx,si+2 mov dl,i call transval mov dx,trans_val mov t1,dx mov ax,t1 mov bx,si+4 mov dl,j call transval mov dx,trans_val mov t2,dx mov ax,t2 mov bx,si+6 mov dl,k call transval mov dx,trans_val mov docal_4,dx ret docal4 endp ;/*/(1*(2*3)*4*5* docal5 proc lea si,dat mov ax,si+2 mov bx,si+4 mov dl,j call t

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

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