鱼C论坛

 找回密码
 立即注册
查看: 3058|回复: 2

[技术交流] 汇编 实验九 程序优化,两次循环

[复制链接]
发表于 2011-8-14 23:43:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 javanetwork 于 2011-8-15 00:24 编辑
;编程题
;在B8000H~BFFFFH共32KB的内存地址空间,为80*25彩色字符模式的显式缓冲区
;分成8页,每页4KB 差不多4000字节
;25行,每行80个字符,每个字符占2个字节
;其中低位字节存放Ascii码,高位字节存放字符的颜色属性
;颜色属性的格式: 从高到低 BL   R G B  I   R G  B
;              闪烁  背景  高亮 前景
;向这个地址写入数据,写入的内容将显示在显示器上
;根据以上资料,在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'Welcome to masm!'
assume cs:mycode
mydat segment
     db 'Welcome to masm!' 
      dw 0720H,07C0H,0860H;显示三个字符串的起始地址,160*11行+80-16=720H 
      db 10001010B;闪烁绿色高亮黑底  
      db 00101100B;非闪烁红色高亮绿底   
      db 01110001B;非闪烁蓝色非高亮白底
mydat ends
mystack segment
      db 16 dup(0)
mystack ends
mycode segment
start:
      mov ax,mydat
      mov ds,ax;数据段
      mov ax,0B800H
      mov es,ax;显存段地址 
      mov ax,mystack  
      mov ss,ax 
      mov sp,10H;以上初始化栈    
    
      mov di,10H;显存偏移地址索引
      mov si,16H;颜色索引

      mov cx,3;循环输出三个字符串 
threestr:
      push cx;保存循环计数 
     push di

      mov ax,ds:[di];根据索引取得数据段中的显存偏移地址  
      mov di,ax;得到显存偏移地址
      mov bx,0;字符串索引
      mov cx,16;16个字符循环16次  
cir:
      mov al,ds:[bx]
      mov es:[di],al;di为显存偏移地址,将字符写入
      mov al,ds:[si]
      mov es:[di+1],al;写入颜色属性
      add di,2;一次循环写入2个字节
      inc bx;一次循环读取1个字符
      loop cir
     pop di
      add di,2
      inc si
      pop cx
      loop threestr
      mov ax,4c00h
      int 21H
mycode ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-7-2 22:47:52 | 显示全部楼层
看帖就要回帖支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-2 23:06:20 | 显示全部楼层
看看老帖,支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-17 07:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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