. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9,根据材料编程  [待解决] 回复[ 7次 ]   点击[ 462次 ]  
hansonjan
[帖 主]   [ 发表时间:2009-05-21 22:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-13 22:27
;花了不少时间,终于做出来了。贴出来跟大家分享一下.   (汇编还是蛮好玩的^_^)
;每行为80个字符.即160个字节.共25行要写三行,共有22个空行.即前面空11行
;160字节*11行=1760个字节
;"welcome to masm"字符串共15字符30个字节
;属性15个字符30个字节
assume cs:code
;先将要填充的数据定义好,然后将其复制到目标内存中即可.
data segment
  ;160字节*11行+30字符+30字节=1760+60字节=1820字节
  db 1820 dup(0)
  db 'w',2,'e',2,'l',2,'c',2,'o',2,'m',2,'e',2,0,2,'t',2,'o',2,32,0,'m',2,'a',2,'s',2,'m',2
  ;160字节-30字节=130字节
  db 130 dup(0)
  db 'w',44,'e',44,'l',44,'c',44,'o',44,'m',44,'e',44,0,44,'t',44,'o',44,0,44,'m',44,'a',44,'s',44,'m',44
  db 130 dup(0)
  db 'w',71,'e',71,'l',71,'c',71,'o',71,'m',71,'e',71,0,71,'t',71,'o',71,0,71,'m',71,'a',71,'s',71,'m',71
  ;后面补0填满一屏
  db 3000 dup(0)
data ends
code segment
start:        mov ax,0B800H
        mov es,ax
        mov ax,data
        mov ds,ax
        mov bx,0
        ;4000不是一个很精确的数字,但是足以填满一屏
        mov cx,4000
    s:  mov al,[bx]
        mov es:[bx],al
        inc bx
        loop s
        
        mov ax,4c00H
        int 21H
code ends
end start
deepblue
[第1楼]   [ 回复时间:2009-05-22 14:48 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51
显示三次 同样的字符串,只是颜色不同了,你这程序可以再”精致“一点 :)
hansonjan
[第2楼]   [ 回复时间:2009-05-23 15:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-13 22:27
谢谢点评
hu123he
[第3楼]   [ 回复时间:2009-05-23 15:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-14 14:04
循环4000次也太恐怖了........
jackli715239314
[第4楼]   [ 回复时间:2011-09-05 16:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-05 09:58
佩服!
chinatree
[第5楼]   [ 回复时间:2011-09-05 17:29 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
这样的程序效率低。
killkk
[第6楼]   [ 回复时间:2011-09-20 17:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-20 08:45
有点意思这个程序。。不过可以优化好一点。
rickystudio
[第7楼]   [ 回复时间:2011-10-01 17:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-11 00:23
assume cs:codesg, ds:datasg, ss:stack

datasg segment
  db 'welcome to masm!'
  db 02h,24h,71h
datasg ends

stack segment
  dw 8 dup(0)
stack ends

codesg segment

start:  mov ax,datasg
             mov ds,ax
        mov ax,stack
        mov ss,ax
        mov sp,10h
        mov bx,0
        mov ax,0b872h       
        mov es,ax
        mov cx,3
        mov si,16

    s0:        push cx        
        push si
        mov si,0
        mov di,0
        mov cx,16
        
    s1: mov al,[si]
        mov es:[bx+di],al
        add si,1
        add di,2
        loop s1

        mov di,1
        mov cx,16
        pop si
    s2: mov al,[si]
        mov es:[bx+di],al
        add di,2
        loop s2

        pop cx
        add bx,160
        add si,1
        loop s0

        mov ax,004ch
        int 21h

codesg ends

end start
小弟花了2天时间写的。。。
有不对的地方往指教。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved