请帮忙给调一下程序
输出九九乘法表,输出格式如下:
* 1 2 3 4 5 6 7 8 9
1 1*1=1
2 2*1=2 2*2=4
3 3*1=3 3*2=6 3*3=9
.
.
.
程序如下:
---------------------------------------------------------------
;*************************************
;print the Table of multiply
;*************************************
;Define data segment
data segment
Head_table db '* 1 2 3 4 5 6 7 8 9',0ah,0dh,'$'
data ends
;Define code segment
code segment
assume ds:data,cs:code
main proc far
start:
;Set stack for return
push ds
sub ax,ax
push ax
;Set DS register to current data segment
mov ax,data
mov ds,ax
;Print the head of table
mov ah,02h
mov dl,0ah
int 21h
mov dl,0dh
int 21h
mov ah,09h
lea dx,Head_table
int 21h
;print multiply table
mov bl,1
mov bh,1
loop1:
cmp bh,9
jnb exit1
loop2:
cmp bl,bh
jnb exit2
; Print carriage return and linefeed
mov ah,02h
mov dl,bh
int 21h
mov ax,bl
mul ax,bh
cmp ax,9
jnb print2
print1:
;Print the blank of table
mov cx,3
print_blank1:
mov ah,02h
mov dl,20h
int 21h
loop print_blank1
mov ah,02h
mov bl,30h
mov dl,bl
int 21h
mov dl,2ah
int 21h
mov bl,30h
mov dl,bh
int 21h
mov dl,3dh
int 21h
mov ax,bl
mul ax,bh
mov ax,30h
mov dx,ax
mov ah,2
int 21h
inc bl
jmp loop2
print2:
mov cx,2
print_blank2:
mov ah,02h
mov dl,20h
int 21h
loop print_blank2
mov ax,bh
mul ax,bl
div ax,10h
mov cx,ax
mov ah,02h
mov ch,30h
mov dl,ch
int 21h
mov cl,30h
mov dl,cl
int 21h
inc bl
jmp loop2
exit2:
mov ah,02h
mov dl,0ah
int 21h
mov dl,0dh
int 21h
inc bh
jmp loop1
exit1:
ret
main endp
code ends
end start
-------------------------------------------------------------------
运行程序,只能输出* 1 2 3 4 5 6 7 8 9
请各位大虾们给看看为什莫?