| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2376 人关注过本帖
标题:[求助]用汇编语言编九九乘法表程序!
只看楼主 加入收藏
lovegydx
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-1-7
收藏
 问题点数:0 回复次数:3 
[求助]用汇编语言编九九乘法表程序!
在屏幕上显示如下:
1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4=12 4*4=16
1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25
1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
在这里谢谢各位啦
搜索更多相关主题的帖子: 乘法表 汇编语言 
2007-01-08 09:23
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 

又是一道:来个例子吧
CR MACRO ;换行宏
MOV AH,2
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
ENDM
SHOW MACRO ;显示乘积的宏
LOCAL NEXT1
MOV AH,0
AAM ;因为乘积最大为81,所以可采用BCD码乘法调整
MOV DX,AX
MOV AH,2
OR DX,3030H
XCHG DH,DL
CMP DL,30H ;这里加了个判断,用于判断10位是否为零,例如乘积为09,则打头的零就不用输出
JZ NEXT1
INT 21H
NEXT1:
XCHG DH,DL
INT 21H
MOV DL,20H
INT 21H
ENDM
DSEG SEGMENT
SEN DB ?,'*',?,'= $' ;为输出乘式做准备,第一个问号处存放被乘数,第二个放乘数
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV BL,1 ;在控制行数的同时,控制乘数的最大值(1-9)
NEXT: MOV BH,BL
INC BH ;这里的BH用于存放(BH)+1,用于控制被乘数的循环乘积
MOV CL,1 ;CL存放被乘数,从1开始乘直到等于(BH)的值
NEXT0: MOV AL,BL
MOV AH,0
MUL CL
PUSH AX
MOV AH,9
MOV SEN,CL ;在这里开始存放显示的乘数、被乘数
ADD SEN,30H
MOV SEN+2,BL
ADD SEN+2,30H
LEA DX,SEN
INT 21H ;输出乘式
POP AX
SHOW ;显示乘积
INC CL
CMP CL,BH
JB NEXT0
CR
INC BL
CMP BL,10
JB NEXT
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
相应的对比下简单的C语言例子:
void main()
{
int i,j,m;
for(i=1;i<10;i++)
{
for(j=1;j<i+1;j++)
{
m=i*j;
printf("%d*%d= %d ",j,i,m);
}
printf("\n");
}
}


我是金子,我要闪光的
2007-01-11 18:08
流浪_汉
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-1-12
收藏
得分:0 

自己写的,就是没有上面的简单,可是比较容易看懂
code segment
main proc far
assume cs:code
push ds
mov ax,0
push ax
mov bl,1
lop2: mov bh,1
lop1: mov al,bh
mul bl
aam //乘法调整指令
add bh,30h //变为ASCII的值
add bl,30h
mov cx,ax
mov dl,bh //显示被乘数
mov ah,2
int 21h
mov dl,'*' //显示乘号
mov ah,2
int 21h
mov dl,bl //显示乘数
mov ah,2
int 21h
mov dl,'=' //显示等号
mov ah,2
int 21h
cmp ch,0 //查看高位有没有值
je diwei
add ch,30h //若有显示
mov dl,ch
mov ah,2
int 21h
diwei:add cl,30h //显示低位
mov dl,cl
mov ah,2
int 21h
mov dl,' ' //显示空格
mov ah,2
int 21h
sub bh,30h //将ASCII还原为BCD数
sub bl,30h
inc bh //将被乘数加一
cmp bh,bl //比较看是不是要换行
jna lop1
mov dl,0ah //换行与置首位
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
inc bl
cmp bl,9 //比较是不是要结束
jna lop2
mov ah,4ch //返回
int 21h
main endp
code ends
end main


2007-01-21 00:39
bh342633854
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-5-11
收藏
得分:0 

我也来发一个 大家多多指教 是我自己写的
.MODEL SMALL
.STACK
.DATA
ET DB 0DH,0AH,'$'
TEMP DB '?*?=??',' ','$'
.CODE
.startup

MOV AL,31H
MOV BL,30H

CC: PUSH AX
PUSH BX
INC BL
MOV [TEMP],BL
MOV [TEMP+2],AL
SUB AL,30H
SUB BL,30H
MUL BL
MOV BL,10
DIV BL
ADD AL,30H
ADD AH,30H
CMP AL,31H
JL AA

MOV [TEMP+4],AL
MOV [TEMP+5],AH
JMP BB

AA: MOV AL,' '
MOV [TEMP+4],AH
MOV [TEMP+5],AL

BB: MOV DX,OFFSET TEMP
MOV AH,09
INT 21H
POP BX
POP AX
INC BX
CMP BL,AL
JNE CC

MOV BX,30H
PUSH AX
MOV DX,OFFSET ET
MOV AH,09
INT 21H
POP AX
INC AL
CMP AL,39H
JLE CC

.EXIT 0
END

2007-05-11 14:17
快速回复:[求助]用汇编语言编九九乘法表程序!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028113 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved