汇编语言课程设计做九九乘法表!谁能帮忙解释每行代码的功能吗?我明天上午课程设计的论文答辩!谢谢

datasegmentd1db'','$'d2db'',13,10,'$'dataendsassumecs:code,ds:datacodesegmentstart:mo... data segment
d1 db ' ','$'
d2 db ' ',13,10,'$'
data ends
assume cs:code,ds:data
code segment
start:
mov ax,data
mov ds,ax
mov bh,1
mov bl,1
mov cx,9
lop_0:
push cx
push bx
mov bh,0
mov cx,bx
pop bx
mov bh,1
lop_1:
mov ah,02h
mov dl,bl
or dl,30h
int 21h
mov ah,02h
mov dl,'*'
int 21h
mov ah,02h
mov dl,bh
or dl,30h
int 21h
mov ah,02h
mov dl,'='
int 21h
mov al,bh
mul bl
mov dl,al
cmp al,09h
ja dtoc
jb disp0
je disp0
ff:
mov dx,offset d1
mov ah,09h
int 21h
inc bh
loop lop_1
lea dx,d2
mov ah,09h
int 21h
inc bl
pop cx
loop lop_0
jmp exit00
disp0:
mov ah,02h
or dl,30h
int 21h
jmp ff
dtoc:
push ax
push bx
push cx
push dx
mov cx,2
lp5:
mov ah,0
mov bh,10
div bh
push ax
loop lp5
mov cx,2
lp6:
pop ax
mov dl,ah
or dl,30h
mov ah,02h
int 21h
loop lp6
pop dx
pop cx
pop bx
pop ax
jmp ff
exit00:
mov ah,4ch
int 21h
code ends
end start
您看能不能帮忙解释下咯?同道中人非常感谢,明天我们汇编的老师要课程设计的论文答辩啊!!各位IT的大神们,帮忙啊,顺便的话,能帮忙画个流程图我就感激不尽了!!非常感谢!!!
展开
 我来答
做而论道
高能答主

2012-12-22 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
显示乘法表,其实,用不着大动干戈,如下一小段就够用了。

DATA SEGMENT
JJ DB '1*1=1', 10, 13
DB '2*1=2 2*2=4', 10, 13
DB '3*1=3 3*2=6 3*3=9', 10, 13
DB '4*1=4 4*2=8 4*3=12 4*4=16', 10, 13
DB '5*1=5 5*2=10 5*3=15 5*4=20 5*5=25', 10, 13
DB '6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36', 10, 13
DB '7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49', 10, 13
DB '8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64', 10, 13
DB '9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81', 10, 13, '$'
DATA ENDS
ASSUME CS:CODE,DS:DATA
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
LEA DX, JJ
MOV AH, 9
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END START

想要显示什么?写在数据段里面,就能显示出来。
人才不1234
2012-12-21 · TA获得超过100个赞
知道答主
回答量:112
采纳率:0%
帮助的人:123万
展开全部
data segment ;数据段定义
d1 db ' ','$' ;输出空格
d2 db ' ',13,10,'$' ;输出回车换行
data ends
assume cs:code,ds:data
code segment
start:
mov ax,data ;装载ds
mov ds,ax ;
mov bh,1 ;准备开始做乘法
mov bl,1 ;
mov cx,9 ;从1—9的乘法
lop_0:
push cx ;保护cx,保障大循环的次数
push bx
mov bh,0
mov cx,bx
pop bx
mov bh,1
lop_1:
mov ah,02h ;输出1
mov dl,bl
or dl,30h
int 21h
mov ah,02h ;输出*
mov dl,'*'
int 21h
mov ah,02h ;输出bh
mov dl,bh
or dl,30h
int 21h
mov ah,02h ;输出等于号
mov dl,'='
int 21h
mov al,bh ;做乘法用BH里面的乘以bL里面的数
mul bl
mov dl,al
cmp al,09h ;判断数的大小 选择输出的函数,建议写一个函数!
ja dtoc
jb disp0
je disp0
ff:
mov dx,offset d1 ;输出换行
mov ah,09h
int 21h
inc bh ;bh加1
loop lop_1 ;循环做 bl * bh ,bl一直没变,通过bh增加得到 1*1 1*2 1*3 .........
lea dx,d2 ;输出换行
mov ah,09h
int 21h
inc bl ;bl增加1 下次从2开始 2*1 2*2 ,,, 不断循环 从而得到 3 , 4 , 5, 6
pop cx ;恢复cx 得到大循环次数
loop lop_0

jmp exit00 ;下面都是转换输出的,建议写一个函数 就不多说了
disp0:
mov ah,02h
or dl,30h
int 21h
jmp ff
dtoc:
push ax
push bx
push cx
push dx
mov cx,2
lp5:
mov ah,0
mov bh,10
div bh
push ax
loop lp5
mov cx,2
lp6:
pop ax
mov dl,ah
or dl,30h
mov ah,02h
int 21h
loop lp6
pop dx
pop cx
pop bx
pop ax
jmp ff
exit00:
mov ah,4ch
int 21h
code ends
end start
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式