. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验九----我的方法---希望各位帮忙找出优化的方法  [待解决] 回复[ 1次 ]   点击[ 331次 ]  
hymhblf
[帖 主]   [ 发表时间:2011-07-09 13:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-13 08:16
assume ds:data,cs:codesg
data segment
  db 'welcome to masm!'
  db 02h,24h,71h
data ends
codesg segment
        ;首先获取屏幕的中间位置,也即要写入内容的位置
        ;每行160个字符,也即0aH个长度,起始位置为00h
        ;横向:每页有25行,中间三行为12,13,14行,其中第12行的起始位置为
        ;      00H+0a0H*0bh(  ;即0a0h相加11次得到第12行的起始位置
        ;纵向:每页160列,则中间6列的列位为64到95列,即起始位置为
        ;      00h+0a0h*0bh+040h
   start:mov ax,0b800h
         mov es,ax
         mov cx,11
         mov bx,0h
      s1:add bx,0a0h
         loop s1
         add bx,040h
         
        ;获取数据段的段地址
        mov ax,data
        mov ds,ax
     
        ;将数据段中的数据写入到显存中
        ;写入第十一行数据,循环16次
        mov si,0
        mov di,0
        mov cx,16
    s31:mov al,[si]
        mov byte ptr es:[bx+di],al
        mov al,ds:[16]
        mov byte ptr es:[bx+di+1],al
        add di,2;
        inc si
        loop s31
               ;第一行写入完毕,写入位置增加0a0h
        ;同时写入第二行数据,循环16次
        mov si,0
        mov di,0
        add bx,0a0h
            mov cx,16
    s32:mov al,[si]
        mov byte ptr es:[bx+di],al
        mov al,ds:[17]
        mov byte ptr es:[bx+di+1],al
        add di,2
        inc si
        loop s32

               ;第二行写入完毕,写入位置增加0a0h
        ;同时写入第三行数据,循环16次
        mov si,0
        mov di,0
        add bx,0a0h
        mov cx,16
    s33:mov al,[si]
        mov byte ptr es:[bx+di],al
        mov al,ds:[18]
        mov byte ptr es:[bx+di+1],al
        add di,2;
        inc si
        loop s33
        
        ;执行完毕,退出
        mov ax,4c00h
        int 21h
codesg ends
end start
chaplinyip
[第1楼]   [ 回复时间:2011-08-01 11:27 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:1
注册日期:2011-07-28 10:58
代码有点累赘,循环貌似用多了
其实都可以并入一个loop里面
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved