wei522688662 发表于 2012-6-5 20:12:41

实验九 编译不通过

本帖最后由 wei522688662 于 2012-6-5 20:27 编辑

assume ds:data,cs:code,ss:sta

data      segment
      db      'welcome to masm!'         ;用si定位
      db      2,36,113,122      ;用di定位 这里我想打印4行 增加一行白底绿色高亮
data         ends
sta                segment
      dw      0,0
sta                ends
code      segment
start:      mov ax,0b800h
                mov es,ax
                mov sp,4h
                mov bx,0h       ;定位行
                mov si,0h
                mov di,10h
                mov dx,0h
                mov cx,4h ;4行文字
                push cx
      lie:      mov cx,10h ;16列字符
                hang:      mov al,ds:
                              mov es:,al
                              mov ah,ds:
                              mov es:,ah
                        
                              add dl,2h
                              inc si
                              loop hang
                        pop cx
                        mov bx,0a0h
                        inc di
                        loop lie
      
                mov ax,4c00h
                int 21h
code      ends

end      start

离骚 发表于 2012-6-5 21:18:07

这是我的代码


assume cs:code,ds:data,ss:stackdata segment
db 'welcome to masm!'
db 02h,24h,71h
data endsstack segment
dw 8 dup(8)
stack endscode segmentstart: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h

mov bx,10h
mov ax,0b872h

mov cx,3
s1:
push ax
push cx

mov es,ax
mov si,0
mov di,0

mov cx,10h
s2:
mov al,ds:
mov es:,al
mov ah,ds:
mov es:,ah
inc si
add di,2
loop s2

inc bx
pop cx
pop ax
add ax,0ah

loop s1
    mov ax,4c00h
int 21h

code ends
end start


wei522688662 发表于 2012-6-5 22:11:50

离骚 发表于 2012-6-5 21:18 static/image/common/back.gif
这是我的代码

你的代码 我能看懂,现在我想用我的思路编程,帮个忙,看一下到底哪里有错误啊,先谢谢了{:5_96:}

静雨纷纷 发表于 2012-6-6 11:37:14

   mov es:,al
编译不出来 好像是这的原因·好像不能用dx··
就是能编译出来   你的那个程序好像也不是很对吧···
si··列··都得入栈··你栈空间不够··
还有你那个mov bx,oaoh·不是很懂···
我也是新手能看出来的就这么多了····
呵呵·····

wei522688662 发表于 2012-6-6 15:42:34

静雨纷纷 发表于 2012-6-6 11:37 static/image/common/back.gif
mov es:,al
编译不出来 好像是这的原因·好像不能用dx··
就是能编译出来   你的那个程序好像也不是很 ...

十分感谢你,mov bx,0a0h是每次增加以达到换行的目的{:5_93:}

静雨纷纷 发表于 2012-6-6 23:33:12

wei522688662 发表于 2012-6-6 15:42 static/image/common/back.gif
十分感谢你,mov bx,0a0h是每次增加以达到换行的目的

弱弱的说一下 ··不应该是add bx,0a0h

wei522688662 发表于 2012-6-7 08:34:45

静雨纷纷 发表于 2012-6-6 23:33 static/image/common/back.gif
弱弱的说一下 ··不应该是add bx,0a0h

你是对的 ⊙﹏⊙b汗是我粗心 打错了 但是本意是add的

wei522688662 发表于 2012-6-8 08:34:08

:L唉...求人不如求己 最后还是自己解决了

assume ds:data,cs:code,ss:stack

data        segment
        db        'welcome to masm!'         ;用si定位
        db        2,36,113,122                ;用di定位
data         ends
stack        segment stack
        dw        0,0,0,0,0,0,0,0
stack        ends

code segment
;==================初始化==========================================
start:        mov ax,0b800h
                mov es,ax
                mov ax,data
                mov ds,ax
                mov ax,stack
                mov ss,ax
                mov sp,16

                mov ax,0h
                mov si,0h                                ;为数据区字符索引
                mov di,10h                                ;为数据区属性索引
                mov bx,0c0h                                ;显存行索引+列索引
                mov cx,4h                                ;
;==================初始化结束=======================================
;==================循环4行==========================================
                lie:        push cx
                                mov cx,10h                        ;每一行16个字符
                                mov si,0h                        ;每一次打印完成一行之后,索引回到行首
               
                                hang:        mov al,ds:                ;取字符
                                                mov es:,al                ;字符装入显存
                                                mov ah,ds:                ;取属性
                                                mov es:,ah        ;属性装入显存
                                               
                                                inc si                       
                                                add bx,2
                                                loop hang
               
                                pop cx
                                inc di
                                add bx,0a0h                        ;bx为行索引,此行代码为换行
                                sub bx,20h                        ;换行后回到行首列(相对来说,不是绝对行首)
                                loop lie
;==================循环4行结束=======================================
                mov ax,4c00h
                int 21h
code ends
end start
页: [1]
查看完整版本: 实验九 编译不通过