请帮忙给调一下程序

hcj2002 2003-11-09 07:20:49
输出九九乘法表,输出格式如下:

* 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

请各位大虾们给看看为什莫?
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
skystar2001 2003-11-09
  • 打赏
  • 举报
回复
等一会~我帮你看~
fisheryj 2003-11-09
  • 打赏
  • 举报
回复
mov ax,bL BL 中的数据是什么?
你这样用是错误的
cambest 2003-11-09
  • 打赏
  • 举报
回复
搞这么长,哪有时间给你一行一行的看.
csdsjkk 2003-11-09
  • 打赏
  • 举报
回复
;*************************************
;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 bh,1
loop1:
cmp bh,9
jnbe exit1
mov bl,1
mov ah,02h
mov dl,bh
add dl,30h
int 21h
loop2:
cmp bl,bh
jnbe exit2
; Print carriage return and linefeed
print1:
;Print the blank of table
mov al,bl
dec al
mul bh
cmp ax,9
mov cx,2
ja l1
mov cx,3
l1:
print_blank1:
mov ah,02h
mov dl,20h
int 21h
loop print_blank1
mov ah,02h
mov dl,bl
add dl,30h
int 21h

mov dl,2ah
int 21h
mov dl,bh
add dl,30h
int 21h
mov dl,3dh
int 21h
mov al,bl
mul bh
cmp ax,9
jnbe print2
mov al,bl
mul bh
add 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 al,bh
mul bl
mov cl,10
div cl
mov cx,ax
mov ah,02h
add cl,30h
mov dl,cl
int 21h
add ch,30h
mov dl,ch
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

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧