鱼C论坛

 找回密码
 立即注册
查看: 2028|回复: 0

[技术交流] 实验9,独立完成独立程序

[复制链接]
发表于 2013-4-7 17:04:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jeset 于 2013-4-7 17:18 编辑

实验9,独立完成独立程序,做程序就是要考自己的头脑做,不要跟着别人的头脑走,那么永远做不出来程序,只有靠自己的头脑才能一步一步的实现程序的功能,欢迎大家和我一同交流,我的Google Talk:crackkay@gmail.com
任务:在中间依次显示'welcome to masm!'
材料:一行有80个字符串,每个字符串后面有它的属性,即偶数为字符串,奇数为属性,一行占用160个内存单元,每页显示25行。那么我先取中间的12行,即12*160.
设计:首先考虑到字符串是一样的,那么我就可以先在代码段的开头定义一个'welcome to masm!'(或者另外一个段也行,记住挂钩就行),因为3行需要显示的字符串都是一样的,那么就可以利用双层循环进行控制,在这里字符串控制我用ds控制结构组(显存段),用bx控制结构体(控制行),用di控制结构体元素(控制列),用si控制cs段最开始的字符串进行传送,这样的好处就是减少了CPU的工作量
颜色因为属性不同,所以需要3次循环,循环中我用bx控制结构体(控制行),用di控制结构体中的元素(控制列),最重要的是因为属性为奇数位,所以我把di设置为81。

至于白底色怎么调出来的是用三个原色相加,就可以出现了白底



  1. assume cs:codesg
  2. codesg segment
  3. db 'welcome to masm!'

  4. kk:
  5.   mov ax,0B800H
  6.   mov ds,ax
  7.   mov bx,780H
  8.   mov di,80
  9.   mov si,0
  10.   mov cx,3
  11. s1w:push cx
  12.   mov cx,16
  13. s1n:
  14.   mov al,cs:[si]
  15.   mov byte ptr ds:[bx+di],al
  16.   add si,1
  17.   add di,2
  18.   
  19. loop s1n
  20.   mov si,0
  21.   mov di,80
  22.   add bx,160
  23.   pop cx
  24. loop s1w


  25.   mov di,81
  26.   mov bx,780H
  27.   mov cx,16
  28. ys1:
  29.   mov al,02H
  30.   mov byte ptr ds:[bx+di],al
  31.   add di,2
  32. loop ys1
  33.   
  34.   mov di,81
  35.   add bx,160
  36.   mov cx,16
  37. ys2:
  38.   mov al,24H
  39.   mov byte ptr ds:[bx+di],al
  40.   add di,2
  41. loop ys2

  42.   mov di,81
  43.   add bx,160
  44.   mov cx,16
  45. ys3:
  46.   mov al,71H
  47.   mov byte ptr ds:[bx+di],al
  48.   add di,2
  49. loop ys3

  50.   mov ax,4c00h
  51.   int 21h

  52. codesg ends
  53. end kk
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 05:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表