鱼C论坛

 找回密码
 立即注册
查看: 1829|回复: 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。

至于白底色怎么调出来的是用三个原色相加,就可以出现了白底
assume cs:codesg
codesg segment
db 'welcome to masm!'

kk:
  mov ax,0B800H
  mov ds,ax
  mov bx,780H
  mov di,80
  mov si,0
  mov cx,3
s1w:push cx
  mov cx,16
s1n:
  mov al,cs:[si]
  mov byte ptr ds:[bx+di],al
  add si,1
  add di,2
  
loop s1n
  mov si,0
  mov di,80
  add bx,160
  pop cx
loop s1w


  mov di,81
  mov bx,780H
  mov cx,16
ys1:
  mov al,02H
  mov byte ptr ds:[bx+di],al
  add di,2
loop ys1 
  
  mov di,81
  add bx,160
  mov cx,16
ys2:
  mov al,24H
  mov byte ptr ds:[bx+di],al
  add di,2
loop ys2

  mov di,81
  add bx,160
  mov cx,16
ys3:
  mov al,71H
  mov byte ptr ds:[bx+di],al
  add di,2
loop ys3

  mov ax,4c00h
  int 21h

codesg ends
end kk
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-7 20:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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