. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  实验9 欢迎交流  [待解决] 回复[ 5次 ]   点击[ 298次 ]  
benzhemin
[帖 主] [ 发表时间:2012-12-28 13:18 ] 
荣誉值:2
信誉值:2
注册日期:2011-09-18 20:07
assume cs:code

data segment
    db 'welcome to masm!'
data ends

color segment
    dw 00000010B ;绿色
    dw 00100100B ;绿底红色
    dw 01110001B ;白底蓝色
color ends

stack segment
    dw 8 dup(0)
stack ends

code segment
start:
    mov ax, color
    mov ds, ax
    
    mov ax, data
    mov es, ax
    
    mov ax, stack
    mov ss, ax
    mov sp, 10h
    
    push ds:[4]
    push ds:[2]
    push ds:[0]
    
    mov ax, 0B800H
    mov ds, ax
    
    mov bx, 780h ;第12行 dos默认为80×25,第12行为中间行
    
    mov cx, 3
display:
    pop dx
    push cx
    
    mov si, 40h  ;每次从第40h单元开始写字符,显示在中间 
    mov di, 0    ;di作为welcome字符串的偏移指针
   
    mov cx, 10h
perrow:
    mov al, es:[bp][di]
    mov [bx][si], al
    inc si
    inc di
    mov [bx][si], dl
    inc si
    
    loop perrow
    pop cx
    
    add bx, 0a0h  ;继续下一行
    loop display
    
    mov ax, 4c00h
    int 21h
code ends

end start
benzhemin
[第3楼] [ 回复时间:2012-12-28 14:01 ] 
荣誉值:2
信誉值:2
注册日期:2011-09-18 20:07
再粘贴一下修改的代码

assume cs:code

data segment
    db 'welcome to masm!'
data ends

color segment
    dw 00000010B ;绿色
    dw 00100100B ;绿底红色
    dw 01110001B ;白底蓝色
color ends

stack segment
    dw 8 dup(0)
stack ends

code segment
start:
    mov ax, color
    mov ds, ax
    
    mov ax, data
    mov es, ax
    
    mov ax, stack
    mov ss, ax
    mov sp, 10h
    
    push ds:[4]
    push ds:[2]
    push ds:[0]
    
    mov ax, 0B800H
    mov ds, ax
    
    mov bx, 6e0h ;第11行 dos默认为80×25,第11行为起始
    
    mov cx, 3
display:
    pop dx
    push cx
    
    mov si, 40h  ;每次从第40h单元开始写字符,显示在中间 
    mov di, 0    ;di作为welcome字符串的偏移指针
   
    mov cx, 10h
perrow:
    mov al, es:[bp][di]
    mov [bx][si], al
    inc si
    inc di
    mov [bx][si], dl
    inc si
    
    loop perrow
    pop cx
    
    add bx, 0a0h  ;继续下一行
    loop display
    
    mov ax, 4c00h
    int 21h
code ends

end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved