主题:求助 初学汇编 麻烦大家帮我看看哪里错了?~谢谢
字符串从左右两侧移动到中央并重合
报错 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
报错 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