预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验三两个数相乘实验 一、实验目的 掌握乘法指令和循环指令的用法。 二、实验内容 实现十进制数的乘法。被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。 三、程序框图 四、程序清单及分析 DATA SEGMENT;定义数据段 DATA1 DB 32H,39H,30H,35H,34H;定义被乘数 DATA2 DB 33H;定义乘数 RESULT DB 6 DUP(00H);定义乘积存放位置 DATA ENDS STACK SEGMENT;定义堆栈段 STADB20DUP(?);从STA开始留出20个单元作为堆栈空间 TOP EQU LENGTH STA;给TOP赋值 STACK ENDS CODE SEGMENT;定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX;给DS赋初值 MOV AX,STACK MOV SS,AX;给SS赋初值 MOV AX,TOP MOV SP,AX;给SP赋初值 MOV SI,OFFSET DATA2 MOV BL,[SI];取乘数 AND BL,00001111B;乘数ASCLL转化为十六进制数 MOV SI,OFFSET DATA1;取被乘数偏移地址 MOV DI,OFFSET RESULT;取乘积存放的偏移地址 MOV CX,05;乘5次 LOOP1: MOV AL,[SI];取被乘数 AND AL,00001111B;被乘数ASCLL转化为十六进制数 INC SI;指向下一个被乘数字节(高位) MUL BL;乘法运算 AAM ;乘法调整,AH←AL/10所得的商AL←AL/10所得的余数 ADD AL,[DI];乘积低位加部分乘积 AAA;非压缩形式BCD码调整指令 MOV [DI],AL;存调整后的低位积 INC DI MOV [DI],AH;存调整后的高位积 LOOP LOOP1;判断乘法运算是否结束 MOV CX,06;取六个乘积字节 MOV SI,OFFSET RESULT;给定乘积存放的起始地址 DISPL: MOV AH,02;调用2号系统功能调用 MOV DL,[SI+5];取出乘积(从高位开始取) ADD DL,30H;将乘积的十六位进制数转化为ACSLL码 INT 21H;调用2号调用进行显示 DEC SI LOOP DISPL;判断是否6位显示结束 MOV AX,4C00H;显示结束,调用4CH号系统功能调用 INT 21H;返回系统提示符状态 CODE ENDS;代码段结束 END START;整个程序结束 程序运行结果如下图所示: