. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9,很笨的办法……不会计算屏幕中间的位置……  [待解决] 回复[ 2次 ]   点击[ 330次 ]  
glcwolf
[帖 主]   [ 发表时间:2010-10-24 14:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-23 15:46
代码如下:


assume        cs:code

data        segment
        db        'Welcome to masm!'
data        ends

code        segment
start:
        mov        ax,data
        mov        ds,ax
        mov        bx,0
        mov        ax,0B866H
        mov        es,ax
        mov        bp,0000H
        mov        si,0
        mov        cx,07H
        ;;;;;;;;;;;;;;;;;输出welcome;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        s:                                
        mov        al,ds:[bx]
        mov        es:[bp],al
        mov        es:[bp+1],00000010B
        add        bp,2
        inc        bx
        loop        s
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        mov        cx,2
        inc        bx
        add        bp,2
        ;;;;;;;;;;;;;;;;;;输出to;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
        s1:
        mov        al,ds:[bx]
        mov        es:[bp],al
        mov        es:[bp+1],00100100B
        add        bp,2
        inc        bx
        loop        s1
        ;;;;;;;;;;;;;;;;;;输出masm!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        mov        cx,5
        inc        bx
        add        bp,2
        s2:
        mov        al,ds:[bx]
        mov        es:[bp],al
        mov        es:[bp+1],01110001B
        add        bp,2
        inc        bx
        loop        s2
        mov        ax,4c00h
        int         21h
code        ends
end        start


屏幕的中间位置如何计算啊?高人帮说下……谢谢!
masmaster
[第1楼]   [ 回复时间:2010-10-25 17:31 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
assume        cs:code,ds:data
data        segment
_str        db        'Welcome masm!'
data        ends
code        segment
start:
        mov ax,data
        mov ds,ax
        mov ax,0b800h
        mov es,ax
        mov si,offset _str
        mov di,12*160+40*2    ;屏幕是80X25,所以,12行就是中间行,40列就是中间列
        mov cx,lengthof _str
        mov ah,2
s:
        mov al,[si]
        mov es:[di],ax
        inc si
        add di,2              ;由于一个字符占两个字节, 故加2
        loop s

        mov ah,4ch
        int 21h
code        ends
end        start
hdu_sgy
[第2楼]   [ 回复时间:2010-11-17 00:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-11 23:17
assume cs:code

data segment
        db 'welcome to masm!'
data ends

code segment
start:  mov ax,0b800h
        mov ds,ax
        mov ax,data
        mov es,ax
        mov si,0
        mov bx,64
        mov cx,16
     s0:mov al,es:[si]
             mov 1760[bx],al
             mov 1920[bx],al
             mov 2080[bx],al
             mov byte ptr 1760[bx+1],02h
             mov byte ptr 1920[bx+1],24h
             mov byte ptr 2080[bx+1],71h
             add bx,2
             inc si
             loop s0
             mov ax,4c00h
             int 21h
code ends
end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved