回 帖 发 新 帖 刷新版面

主题:求助 初学汇编 麻烦大家帮我看看哪里错了?~谢谢

字符串从左右两侧移动到中央并重合
报错 fatal error A1010:unmatched block nesting
想了好久都不知道哪里错了 麻烦大家帮我看一下 谢谢

disp    macro    y,x,length,flag,var ;宏定义 显示字符串的行 列 长度 标志 字符串
        mov      ah,13h              ;flag=0 var为字符串偏移地址 否则为字符串内容
        mov      al,01h
        mov      bx,COLOR
        mov      cx,length
        mov      dh,y
        mov      dl,x
        if       flag  eq  0
        mov      bp,offset var
        else 
        mov      bp,var
        end if
        int      10h
endm


data    segment
;----------------
YYY     equ     2                              ;定义行
XXX     equ     60                             ;定义边框长度
COLOR   equ     5fh
TTT     equ     5                              ;延迟时间
L1      db      201,XXX dup (205),187
L2      db      186,XXX dup (' '),186
L3      db      200,XXX dup (205),188
ll      equ      $-L3
xx      equ     (80-ll)/2
L4      db      'Happy Birthday!'
l       equ      $-L4                           ;字符串长度
i       equ      (80-l)/2                       ;右移起始列
j       equ      i+l-1                          ;左移起始列
lorg    db       j+1
count   dw       0


data    ends

code    segment
        assume cs:code,ds:data,es:data

begin:  
        mov   ax,data
        mov   ds,ax
        mov   es,ax
;-----------------------------



        mov   ah,0                    
        mov   al,3
        int   10h

        disp  YYY,xx,ll,0,L1             ;显示边框
        disp  YYY+1,xx,ll,0,L2
        disp  YYY+2,xx,ll,0,L3

last:   inc   count
        dec   lorg
        disp  YYY+1,lorg,count,0,L4        ;左移
        mov   bp,offset L4+l
        sub   bp,count
        disp  YYY+1,lorg,count 1,bp        ;右移
        call  delay
        cmp   count,l
        jne   last
    
        mov   ah,4ch
        int   21h

;-----------------------------       

delay   proc  near                  ;延迟程序
        push  ax
        push  dx
        mov   ah,2dh
        mov   dx,0
        int   21h

read:   mov   ah,2ch
        int   21h
        cmp   dl,TTT
        jc    read 
        pop   dx
        pop   ax
        
        ret
delay   endp


codes    end
        end begin

回复列表 (共3个回复)

沙发

在哪里抄的破程序
错误那么多
列几个:codes    end

L4      db      'Happy Birthday!'
l       equ      $-L4    

L3      db      200,XXX dup (205),188
ll      equ      $-L3


if       flag  eq  0
        mov      bp,offset var
        else 
        mov      bp,var
        end if

汇编有 if 吗

建议抛弃 

板凳


哈哈.......新手预了新手了,那个说汇编里面没有IF,我还第一次听说

3 楼


条件编译~~~

http://bbs.bccn.net/thread-253452-1-1.html

我来回复

您尚未登录,请登录后再回复。点此登录或注册