王爽老师寒假汇编语言作业全解全析共同交流_第1页
王爽老师寒假汇编语言作业全解全析共同交流_第2页
王爽老师寒假汇编语言作业全解全析共同交流_第3页
王爽老师寒假汇编语言作业全解全析共同交流_第4页
王爽老师寒假汇编语言作业全解全析共同交流_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Copyright: 百度: 水幸福 CSDN:msdys1王爽老师寒假汇编语言作业全解全析共同交流寒假程序设计项目14 年 2 月 6 日更新第 13 题,包括设计流程图请大家一定要自行思考解决后再参考( 暂时只做到了第 10 个)本文为原创,参见版权信息相应文件下载:1.字模提取软件 /s/1kT5F3mf2.程序 demo 图片 /s/1pJlUGUB版权信息:题目版权信息: 面向河北农业大学学生的计算机科学与技术学习活动解题代码,过程分析版权信息 : 参见页眉程序设计项目一data segmentdw ?data endsend要求:只在定义的数据段?中加入相关的内容,使得上面的程序可以在屏幕中间显示一个绿色的字符A。参考代码指令和数据没有本质上的区别 认真理解这句话Copyright: 百度: 水幸福 CSDN:msdys2分析:中间位置 160*13+80=2160 A=41h 绿=02h直接做不出,先写个可以显示的,再找 16 进制填进去浅析:先不用 data 段,写出一个简单的程序,即写出注释符号所在的程序 .运行程序,查看 cs:0 中的数据, 然后将数据填入 data 段,注意高地位html view plaincopy1. ;assume cs:data 2. data segment 3. dw 00b8h,8eb8h,0bbc0h,0870h,41b8h,0b900h,0002h,8926h 4. dw 2607h,4f89h,0b801h,4c00h,21cdh 5. ; mov ax,0b800h 6. ; mov es,ax 7. ; mov bx,2160 8. ; mov ax,41h 9. ; mov cx,02h 10. ; mov es:bx,ax 11. ; mov es:bx+1,cx 12. ;mov ax,4c00h 13. ;int 21h 14. data ends 15. end 程序设计项目二对加密的字符串进行解密。要求:(1)加密的字符串放在 Cryptography 段。Copyright: 百度: 水幸福 CSDN:msdys3(2)解密方法:将 Cryptography 段的每个字符的 ASCII 值减去 1。(3)用汇编语言实现程序,将 Cryptography 段的数据按照解密方法进行解密,将解密后的数据放在PlainText 段,然后再把解密之后的字符串以白底蓝字方式显示到屏幕中间。(4)密文和明文的数据段定义如下:Cryptography segmentdb tqsfbe!zpvs!xjohtdb !cf!zpvs!nbtufs!Cryptography endsPlainText segmentdb 2*17 dup ( )PlainText ends参考代码plain view plaincopy1. assume cs:code,ds:Cryptography ;ds 数据段,名字可以随便,但是段名必须是已有的 2. 3. 4. Cryptography segment 5. db tqsfbe!zpvs!xjoht 6. db !cf!zpvs!nbtufs! 7. Cryptography ends 8. 9. 10. PlainText segment 11. db 2*17 dup ( ) ;+3*16=48 12. PlainText ends 13. 14. 15. code segment Copyright: 百度: 水幸福 CSDN:msdys416. start: mov ax,Cryptography ;最后一次错在了这,必须加上这两句,要不然 ds 无数据 17. mov ds,ax 18. ;解密 19. mov ax,0b800h 20. mov es,ax 21. mov ah,71h 22. mov si,2126 ;中间是 160*13+80-34=2126 左偏移 34 位开始 23. mov bx,0 24. mov cx,34 25. s: 26. mov al,ds:bx 27. dec al ;-1 上次错在使用了 ax 28. mov ds:bx+48,al ;存入 PlainText 29. mov es:si,ax ;结合 ah al 显示 30. add si,2 31. inc bx 32. loop s 33. 34. 35. mov ax,4c00h 36. int 21h 37. 38. 39. code ends 40. end start 程序设计项目三加、减、除三则运算。要求:(1)读取字符串的内容,判断第四个字符是+、-或/,然后按照相应的符号进行运算,并把运算结果转换为字符串存放在等号后面,最后把算式显示到屏幕中间,白底蓝字。(2)注意数字字符的 ASCII 与数字的对应关系,数字的数值加 30H 为这个数字的字符所对应的 ASCII。Copyright: 百度: 水幸福 CSDN:msdys5(3)数据段定义如下:Calculate segmentdb 1. 3/1= db 2. 5+3= db 3. 9-3= db 4. 4+5= Calculate ends参考代码plain view plaincopy1. ;可能用到的知识: 1.and or p138 2. ;知识 + - * / add sub mul div 3. ;asc 2b 2d 2a 2f 101011 101101 101010 101111 4. ;asc-30 d f c 11 数字 asc - 30 就是真实数字 5. ;div:除数为 8 位时,被除数为 16 位,默认放在 ax 寄存器中.商则放在 al 中,余数放在 ah 中 6. 7. assume cs:code,ds:Calculate 8. 9. Calculate segment 10. db 1. 3/1= ;运算符号是第 5 个字符 11. db 2. 5+3= ;一个算式占用一行 12. db 3. 9-3= 13. db 4. 4+5= 14. Calculate ends 15. 16. code segment 17. start: mov ax,Calculate 18. mov ds,ax 19. 20. ;1.读取程式数据 2.将结果写入 ds 21. mov bx,0 ;字符开始 22. mov cx,4 ;4 行,只读取程式 23. s: push cx 24. mov ah,0 ;高位 0 25. mov al,ds:bx+3 ;低位 Copyright: 百度: 水幸福 CSDN:msdys626. sub al,30h 27. mov dl,ds:bx+4 ;运算符号 28. mov dh,ds:bx+5 29. sub dh,30h 30. call far ptr check ;跳转到判定 check 31. add al,30h 32. mov ds:bx+8,al ;写入结果 33. add bx,16 ;下一行 34. pop cx 35. loop s 36. 37. ;输出 38. mov ax,0b800h 39. mov es,ax 40. mov si,1826 ;输出位置 160*11+80-2*7=1826 41. mov bx,0 42. mov ah,71h ;蓝底白字 43. mov cx,4 44. s0: push cx 45. mov cx,16 46. s1: mov al,ds:bx 47. mov es:si,ax ;为什么 ax 可以,下面注释的 2 行就光剩 q 了 48. ;mov es:si,ah 49. ;mov es:si+1,al 50. inc bx 51. add si,2 52. loop s1 53. pop cx 54. add si,128 ;下一行 160-16*2=128 55. loop s0 56. 57. mov ax,4c00h 58. int 21h 59. 60. ;判定运算符号 dl (2b 2d 2a 2f) 61. check: ;用相减是否=0 判定并跳转到运算子程序 62. mov ch,0 63. mov cl,dl 64. sub cx,+ ;+ 65. jcxz do_add ;其实不用捣鼓+-*/的 16 进制,直接使用+就行了 66. mov cl,dl 67. sub cx,- ;- 68. jcxz do_sub 69. ;mov cl,dl Copyright: 百度: 水幸福 CSDN:msdys770. ;sub cx,* ;* 乘在题目中没有要求,大家可以试做 71. ;jcxz do_mul 72. mov cl,dl 73. sub cx,/ ;/ ax 是被除数 dh 是除数 商则放在 al 中,余数放在 ah 中 74. jcxz do_div 75. 76. ;运算子程序 ;5+3=8 al + dh = al 77. do_add: 78. add al,dh 79. retf 80. do_sub: 81. sub al,dh 82. retf 83. do_div: 84. div dh 85. retf 86. 87. code ends 88. end start 程序设计项目四编程计算 x(x2)的 y(y2)次方。使用 add 指令实现。另,若学到第 10 章,使用两种方式实现:(1)只使用 add 指令实现;(2)只使用 mul 指令实现;并将计算式显示在屏幕中央。Copyright: 百度: 水幸福 CSDN:msdys8例如:计算 4 的 3 次方。在屏幕中央显示格式如下:43-64注意:结果不能超过 16 位寄存器可存储的最大值。参考代码暂时没做出来呢,比较懒,可以先看下面的程序设计项目五定义一个数据段如下:data segmentdb h12E332lL#O*设定初始值 9. start: mov ax,data 10. mov ds,ax 11. mov ax,0b800h 12. mov es,ax 13. mov bx,0 14. mov ah,7h ;黑底白字 15. mov si,2140 ;大致中央 16. jmp read 17. ;读取字符串 18. read: 19. mov al,ds:bx 20. inc bx ;准备读取下一个 21. jmp spc 22. ;子程序 23. spc: 24. cmp al,0100000b 25. je show 26. jmp exc 27. exc: 28. cmp al,0100001b 29. je safe 30. jmp over 31. over: 32. cmp al,0111111b 33. jne A_a 34. mov ax,4c00h 35. int 21h 36. A_a: 37. or al,00100000b 38. jmp compare 39. b_B: 40. and al,11011111b 41. jmp show 42. safe: push si ;保存!的显示位置 43. jmp show 44. ;通过 asc 值范围判定是不是字母(全部转为小写好判定 ) 45. compare: 46. cmp al,1100000b 47. jna read ;不高于, 丢弃 48. cmp al,1111011b Copyright: 百度: 水幸福 CSDN:msdys1149. jnb read ;不低于,丢弃 50. cmp si,2140 ;判定是不是第一个字母 51. je b_B 52. pop dx 53. add dx,2 ;计算! 下一个显示位置 54. cmp si,dx 55. je b_B 56. jmp show 57. 58. ;显示字符 59. show: 60. mov es:si,ax 61. add si,2 ;准备写入下一个 62. jmp far ptr read 63. 64. code ends 65. end start 字模提取软件下载地址:点击下载操作步骤提示:可以先看看软件的 简介 选项分卡1.参数设置-更改字体,或者在文字输入区点右键更改字体, 选择合适的大小,比如我选的字号,就能在汇编中完整显示2.参数设置-其他设置,勾选横向取模 ,虽然显示出来的字是上下的,但是它是单个字分别取模,不会影响的. 取消勾选字节倒序. 取消勾选保留. 3.在文字输入区输入文字后按 ctrl+enter 进行显示4.在 取模方式 选项卡中点击选择 A51 模式 ,这是汇编形式编码.这个时候会在点阵生成去显示生成的点阵 16 进制代码5.基本操作-保存点阵数据程序设计项目六Copyright: 百度: 水幸福 CSDN:msdys12在屏幕中间显示:“中华”两个字。参看 demo0.png 示例。提示:通过字模提取工具,可以提取字的显示信息。参考代码分析:1.寻找字模提取软件,我找到了一个在本题最后给出大家链接2.生成点阵后分析点阵情况3.编写代码因为大量的注释,较简单的逻辑 ,大家根据注释,根据跳转走一遍,都能明白滴,当然, 我也在代码中留下了我自己的疑问,希望大大们帮助一下 .html view plaincopy1. assume cs:code,ds:data Copyright: 百度: 水幸福 CSDN:msdys132. data segment 3. ;- 文字: 中 - 4. ;- 宋体 18; 此字体下对应的点阵为:宽 x 高=24x24 - 5. DB 000H,000H,000H,000H,030H,000H,000H,03CH,000H,000H,038H,000H,000H,038H,000H,000H 6. DB 038H,000H,038H,038H,01CH,03FH,0FFH,0FCH,018H,038H,038H,018H,038H,038H,018H,038H 7. DB 038H,018H,038H,038H,018H,038H,038H,018H,038H,038H,03FH,0FFH,0F8H,038H,038H,038H 8. DB 000H,038H,000H,000H,038H,000H,000H,038H,000H,000H,038H,000H,000H,038H,000H,000H 9. DB 038H,000H,000H,038H,000H,000H,000H,000H 10. 11. ;- 文字: 华 - 12. ;- 宋体 18; 此字体下对应的点阵为:宽 x 高=24x24 - 13. DB 000H,000H,000H,000H,008H,000H,003H,08EH,000H,003H,0CCH,018H,007H,00CH,03CH,00EH 14. DB 00CH,0FCH,00FH,00DH,0E0H,01FH,00FH,080H,03FH,00EH,00CH,077H,03CH,00CH,067H,0ECH 15. DB 00EH,007H,08CH,00EH,007H,00FH,0FEH,007H,038H,000H,000H,03CH,000H,000H,038H,00CH 16. DB 0FFH,0FFH,0FEH,000H,038H,003H,000H,038H,000H,000H,038H,000H,000H,038H,000H,000H 17. DB 038H,000H,000H,038H,000H,000H,000H,000H 18. 19. data ends 20. 21. ;下面一部分是将 16 进制数据转换为二进制显示.用来比较清楚的明白点阵情况 22. ;因为点阵的宽高比 ,相当于 3*8 个为一行,可以隐约看到中字的尖 23. ;00000000 00000000 00000000 24. ;00000000 00110000 00000000 25. ;00000000 00111100 00000000 26. 27. code segment 28. start: 29. mov ax,0b800h 30. mov es,ax 31. mov ax,data 32. mov ds,ax 33. ;mov bx,0 34. mov si,0 35. mov bh,100b ;黑底红字 36. mov bl,03h ;心形 37. mov ah,0 ;用 ax 存点阵 Copyright: 百度: 水幸福 CSDN:msdys1438. mov dh,0 ;用于计数判定 3 字每行循环 39. mov di,180 ;“中“起始位置 40. jmp read 41. 42. ;子程序 43. over: mov ax,4c00h 44. int 21h 45. 46. ;hua: 47. ; mov di,92 48. ; ret 49. check: cmp si,72 50. jne next2 51. mov di,136 ;“华“起始位置;为什么是这个位置,而不是我算的中间偏右的位置开始才对? 52. next2:cmp si,144 53. je over 54. cmp dh,3 55. jne read 56. mov dh,0 57. add di,112 ;换行 58. jmp read 59. 60. read: 61. mov al,ds:si 62. inc si 63. inc dh 64. jmp div2 65. 66. ;show: mov es:di,bx 67. ; ret 68. doom: 69. mov cx,8 70. s1: 71. pop ax 72. cmp ah,1 73. jne next 74. mov es:di,bx 75. next: add di,2 76. loop s1 77. jmp check 78. 79. 80. ;16 进制转化为 2 进制,并入栈存储 81. div2: Copyright: 百度: 水幸福 CSDN:msdys1582. mov cx,8 83. s0: mov dl,2 84. div dl 85. mov dl,al ;商暂存于 dl 中 86. mov al,0 87. push ax ;余数入栈 88. mov al,dl ;上次除法的商恢复到 ax 中 89. loop s0 90. jmp doom 91. 92. code ends 93. end start 程序设计项目七在屏幕上显示一个兔子图形。参看 demo1.gif 示例。无法正确显示动态图,请根据文章开头下载 demo 图片文件参考代码这部分最重要的是延时显示,参看代码中 sleep 部分,可以看到,是一个大的双重循环,通过加大运算时间实现.汇编第十章的学习程度,没有更好的办法了吧?html view plaincopy1. ; 绿 黄 紫 红 蓝 青 2. ;010 110 101 100 001 011 3. ; 2 6 5 4 1 3 4. ;123456 蓝绿青红紫黄 5. 6. assume cs:code,ds:data 7. Copyright: 百度: 水幸福 CSDN:msdys168. data segment 9. db .*. ;22 列 10. db *.*.* 11. db .*. 12. db *.*.*. 13. db .*.* 14. db .*.* 15. db *.*. ;中间 8,上 6,下 20 16. db .*.* 17. db *.*. 18. db *.*. 19. db *.*.*.*. 20. db *.*. 21. db *.U.*. 22. db .*.* 23. db *.*. ;15 行 24. data ends 25. 26. code segment 27. start: mov ax,0b800h 28. mov es,ax 29. mov ax,data 30. mov ds,ax 31. mov dh,1 ;初始化颜色 1 32. 33. show: 34. mov bx,0 35. mov si,1018 ;显示开始位置 36. mov cx,15 37. s0: push cx 38. mov cx,22 39. s1: mov dl,ds:bx 40. mov es:si,dx 41. inc bx 42. add si,2 43. loop s1 44. pop cx 45. add si,116 ;换行 46. loop s0 47. 48. sleep: mov cx,9999 ;约 1 秒 49. s3: push cx 50. mov cx,9999 51. s: mov ax,98h Copyright: 百度: 水幸福 CSDN:msdys1752. mov bl,3 53. div bl 54. loop s 55. pop cx 56. loop s3 57. 58. inc dh 59. cmp dh,7 60. je over 61. jmp show 62. 63. over: mov ax,4c00h 64. int 21h 65. 66. code ends 67. end start 程序设计项目八实现笑脸阶梯走效果。参看 demo2.gif 示例。参考代码分析:20 个- 分别间隔 6 行1.先显示横线,图片中是点,我用的横线2.然后显示笑脸,笑脸是显示一个后延时 ,再删除这一个笑脸后,显示下一个笑脸无法正确显示动态图,请根据文章开头下载 demo 图片文件Copyright: 百度: 水幸福 CSDN:msdys183.我的实现顺序是:1.显示所有横线,2.不删除,一个横线对应一个笑脸,全部显示,3.添加延时 sleep,查看显示全部笑脸过程 4 添加删除上一个笑脸代码html view plaincopy1. assume cs:code 2. code segment 3. start: mov ax,0b800h 4. mov es,ax 5. mov dh,02h 6. mov si,18*160 ;-起始位置 7. 8. mov dl,- 9. mov cx,3 10. s: push cx 11. mov cx,20 12. s0: mov es:si,dx 13. add si,2 14. loop s0 15. pop cx 16. sub si,160*6 17. loop s 18. 19. mov si,17*160 20. mov dl,2 21. smile: mov cx,3 22. s1: push cx 23. mov cx,20 24. s2: mov es:si,dx 25. push cx 26. call sleep 27. pop cx 28. add si,2 29. loop s2 30. pop cx 31. sub si,160*6 32. loop s1 33. jmp over 34. 35. sleep: mov cx,4444 ;约 0.5 秒 36. s8: push cx 37. mov cx,4444 38. s9: mov ax,98h 39. mov bl,3 Copyright: 百度: 水幸福 CSDN:msdys1940. div bl 41. loop s9 42. pop cx 43. loop s8 44. mov ax,0 45. mov es:si,ax 46. ret 47. 48. over: mov ax,4c00h 49. int 21h 50. code ends 51. end start 程序设计项目九将 ASCII 码按顺序在屏幕上竖列显示。参看 demo3.gif 示例。无法正确显示动态图,请根据文章开头下载 demo 图片文件要求:(1)逐个显示字符,相邻的两个字符之间显示要有时间间隔。(2)字符颜色为绿色。(3)每列显示 20 个字符,列间距为 5 个字符。显示完 128 个 ASCII 码,共需 7 列。参考代码不太难,没问题滴html view plaincopyCopyright: 百度: 水幸福 CSDN:msdys201. assume cs:code 2. code segment 3. start: mov ax,0b800h 4. mov es,ax 5. mov dh,02h 6. mov si,430 ;起始位置 7. 8. mov dl,0 ;从 0-127 9. mov cx,7 10. s: push cx 11. mov bp,0 12. mov cx,20 13. s0: mov es:si+bp,dx 14. add bp,160 15. inc dl 16. cmp dl,128 17. je over 18. push cx 19. call sleep 20. pop cx 21. loop s0 22. pop cx 23. sub si,10 24. loop s 25. 26. sleep: mov cx,4444 ;约 0.5 秒 27. s8: push cx 28. mov cx,4444 29. s9: mov ax,98h 30. mov bl,3 31. div bl 32. loop s9 33. pop cx 34. loop s8 35. ret 36. 37. over: mov ax,4c00h 38. int 21h 39. code ends 40. end start Copyright: 百度: 水幸福 CSDN:msdys21程序设计项目十在屏幕上斜着显示三个happy spring festival!,字符串的颜色分别为蓝色、绿色和红色,并且各个字符串的颜色按规律变换。参看 demo4.gif 示例。无法正确显示动态图,请根据文章开头下载 demo 图片文件参考代码个人思路分析:1.先显示的字母,直接显示,不考虑颜色2.给字母刷色 .我真的是刷色, 不是一个一个字母的上色,我是把整个屏幕全部上色了. 只要每行刷色时错开2 个显示位就可Copyright: 百度: 水幸福 CSDN:msdys223.加入延时程序后,开始刷色,因为每行颜色都是错开的, 而我又给整个屏幕刷色了,那我只要第一次从第一行开始刷,第二次从第二行开始刷 ,第三次从第三行开始刷 ,就能刷出不同颜色.当然也遇到了问题,在代码中有提到,希望高人帮助解决.html view plaincopy1. ;刷色: 全屏刷三色,因为颜色因行错 2 位,换行刷即换色 2. 3. assume cs:code,ds:data 4. data segment 5. db happy spring festival! ;22 个字符 6. data ends 7. 8. code segment 9. start: mov ax,0b800h 10. mov es,ax 11. mov ax,data 12. mov ds,ax 13. mov di,0 ;data 字符位置 14. 15. show: mov si,346 ;起始位置 16. mov bp,0 ;每三个显示一个字, 并显示 3 个后换行 17. mov cx,22 18. s: push cx 19. mov cx,3 20. s0: mov al,ds:di 21. mov es:si+bp,al 22. add bp,6 23. loop s0 24. pop cx 25. inc di 26. add bp,146 27. loop s 28. mov dx,1 29. color: 30. mov bp,0 31. mov cx,25 32. s1: push cx 33. mov si,dx 34. mov cx,9 35. s2: mov ah,1 36. mov es:si+bp,ah 37. add si,6 38. mov ah,2 Copyright: 百度: 水幸福 CSDN:msdys2339. mov es:si+bp,ah 40. add si,6 41. mov ah,4 42. mov es:si+bp,ah 43. add si,6 44. loop s2 45. pop cx 46. add bp,164 ;160 换行,4 对齐 47. loop s1 48. jmp sleep 49. 50. sleep: mov cx,8888 ;约 1 秒 51. s8: push cx 52. mov cx,8888 53. s9: mov ax,98h 54. mov bl,3 55. div bl 56. loop s9 57. pop cx 58. loop s8 59. cmp dx,317 ;到第三行停止, 即刷三次停止 60. je over 61. add dx,158 ;从第二行开始刷, 问题:虽然通过显示分析,解决了,但为什么不是+160 ? 62. jmp color 63. 64. over: mov ax,4c00h 65. int 21h 66. code ends 67. end start 程序设计项目十一半残程序动态画出一个棵七彩圣诞树。参看 demo5.gif 示例。无法正确显示动态图,请根据文章开头下载 demo 图片文件Copyright: 百度: 水幸福 CSDN:msdys24参考代码这道题做了个开头,遇到了问题 ,把残废代码放出,希望大大们帮助解决 我的疑问是:1.怎样才能简便的显示这颗圣诞树, 我是用 excel 计算的每一个的位置,这样不符合懒的风格啊2.这一小段代码是想完成字母流, 但只出现第一行和最后一行,为啥中间没有?我查看代码,也没有发现错误啊html view plaincopy1. assume cs:code,ds:data 2. data segment 3. db ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCD ;40 个 4. dw 80,236,392,548,704,860,1016 5. dw 1172,1176,1180,1184,1188,1192,1196 6. dw 1352,1508,1664,1820,1976,2132,2288,2444,2600 7. dw 2756,2760,2764,2768,2772,2776,2780,2784,2788,2792,2796 8. dw 2956,3116,3276,3436,3596,3756,3916 9. dw 3920,3924 10. dw 3928,3768,3608,3448,3288,3128,2968 11. dw 2808,2812,2816,2820,2824,2828,2832,2836,2840,2844,2848 12. dw 2684,2520,2356,2192,2028,1864,1700,1536,1372 13. dw 1208,1212,1216,1220,1224,1228,1232 14. dw 1068,904,740,576,412,248,84 ;84 个 15. data ends 16. 17. code segment 18. start: mov ax,0b800h 19. mov es,ax 20. mov ax,data 21. mov ds,ax 22. ;mov si,0 ;si 记录 data 中数据位 23. mov di,0 ;di 记录显示的位置 由上至下 24. mov bp,3844 ; 右下至上 25. 26. mov ah,2 ;绿色字母 27. mov cx,25 28. s: mov si,0 29. push cx 30. mov cx,20 31. s0: mov al,ds:si Copyright: 百度: 水幸福 CSDN:msdys2532. mov es:di,ax 33. add di,8 34. mov al,ds:si+1 35. mov es:bp,ax 36. add bp,8 37. add si,2 38. loop s0 39. pop cx 40. sub di,320 41. loop s 42. 43. mov ax,4c00h 44. int 21h 45. 46. code ends 47. end start 程序设计项目十二还没有做编写字符雨程序。参看 demo6.gif 示例。Copyright: 百度: 水幸福 CSDN:msdys26提示:(1)每列是一个单独的单元,在数据段中定义的数据要保证各列要显示的字符和开始显示的时机不一样。(2)每一滴雨完全移出屏幕后,该雨滴所在列生成一个新的雨滴。程序设计项目十三还没有做编写左手逃生法则演示程序。参看 demo7.gif 示例。demo 是动态图,下面是我做出的最后效果图片Copyright: 百度: 水幸福 CSDN:msdys27提示:(1)地图中只有三种元素:墙、通道、出口。设计地图时,要给不同的元素赋予不同的编码。(2)什么情况下改变行进的方向。遇到这些情况后根据当前方向决定下一步方向变化的规律是什么。(3)左手逃生法则简述:在一个有出入口,没有回路的迷宫中,一直保持左手贴着墙壁向前走,总能找到迷宫出口。参考代码:( 代码后附思路和程序流程图)html view plaincopy1. ;数据段要小于 64kb 2. 3. assume cs:code,ds:data 4. data segment 5. ;- 宽度 x 高度=80x25 - 地图 6. DB 0F0H,000H,000H,01FH,0FFH,0FFH,0F0H,000H,000H,01FH,0F0H,000H,000H,01FH,0FFH,0FFH 7. DB 0F0H,000H,000H,01FH,0F0H,000H,000H,01FH,0FFH,0FFH,0F0H,000H,000H,01FH,0F1H,0FFH Copyright: 百度: 水幸福 CSDN:msdys288. DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,01FH,0F1H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH 9. DB 0FFH,01FH,0F1H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,01FH,0F0H,000H,000H,003H 10. DB 0FFH,0FFH,080H,000H,000H,01FH,0F0H,000H,000H,003H,0FFH,0FFH,080H,000H,000H,01FH 11. DB 03FH,0FFH,0FFH,0E0H,000H,000H,00FH,0FFH,0FFH,0FFH,03FH,0FFH,0FFH,0E0H,000H,000H 12. DB 00FH,0FFH,0FEH,000H,03FH,0FFH,0FFH,0FFH,000H,001H,0FFH,0FFH,0FCH,000H,000H,000H 13. DB 000H,000H,000H,000H,000H,000H,001H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H 14. DB 001H,0FFH,03FH,0FFH,0FFH,0FFH,0F8H,00FH,0FFH,0FFH,0FCH,000H,03FH,0FFH,0FFH,0FFH 15. DB 0F8H,00FH,0FFH,0FFH,0FEH,000H,03FH,0FFH,0FFH,0FFH,0F0H,087H,0FFH,0FFH,0FFH,0FFH 16. DB 0FFH,0E0H,003H,0FFH,0E1H,0C3H,0FFH,0E0H,003H,0FFH,0FFH,0E0H,003H,0FFH,0C3H,0E1H 17. DB 0FFH,0E0H,003H,0FFH,0FFH,0E7H,0F3H,0FFH,087H,0F0H,0FFH,0E7H,0F3H,0FFH,0FFH,0E7H 18. DB 0F3H,0FFH,00FH,0F8H,07FH,0E7H,0F3H,0FFH,0FFH,0E7H,0F3H,0FEH,01FH,0FCH,03FH,0E7H 19. DB 0F3H,0FFH,0FFH,0E7H,0F0H,000H,03FH,0FEH,000H,007H,0F3H,0FFH,0FFH,0E7H,0F0H,000H 20. DB 03FH,0FEH,000H,007H,0F3H,0FFH,000H,007H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F0H,000H 21. DB 000H,007H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F0H,000H 22. db 2048 dup(0) 23. 24. data ends 25. 26. 27. code segment 28. start: 29. mov ax,0b800h 30. mov es,ax 31. mov ax,data 32. mov ds,ax 33. 34. lattice: 35. mov di,0 ;读取段位 36. mov si,250 ;存储段位 37. mov ah,0 38. mov cx,250 39. s: push cx 40. read: mov al,ds:di 41. inc di 42. ;16 进制转化为 2 进制,入栈存储,出栈保

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论