两个数相乘的实验
实验二. 两个数相乘的实验
一. 实验目的
掌握乘法指令和循环指令的用法
二.实验内容
实现十进制数的乘法。被乘数和乘数均以ASC11码形式存放在内存中,乘积在屏幕上显示出来
三. 程序框图
四.实验程序与运行结果
DA TA SEGMENT
DA TA1 DB 32H,39H,30H,35H,34H
DA TA2 DB 33H
RESULT DB 6 DUP (00H)
DA TA ENDS
STACK SEGMENT
STA DB 20 DUP (?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV SI,OFFSET DATA2
MOV BL,[SI]
AND BL,00001111B
MOV SI,OFFSET DATA1
MOV DI,OFFSET RESULT
MOV CX,05
LOOP1:MOV AL,[SI]
AND AL,00001111B
INC SI
MUL BL
AAM
ADD AL,[DI]
AAA
MOV [DI],AL
INC DI
MOV [DI],AH
LOOP LOOP1
MOV CX,06
MOV SI,OFFSET RESULT
ADD SI ,05
DISPL:MOV AH,02
MOV DL,[SI]
ADD DL,30H
INT 21H
DEC SI
LOOP DISPL
MOV AX,4C00H
INT 21H
CODE ENDS
END START
五.实验中遇到的问题及解决的方法
在做实验时, 开始结果不对,显示如下
经过分析和思考,发现显示的时候顺序出现了问题,在显示部分前,即LOOP1最后加了ADD SI,05 解决了问题
六. 心得与收获
通过实验学会了建立,汇编,链接,调试和运行汇编语言程序的过程,对乘法运算有了更深的认识,同时对汇编语言的编写风格有了一定的了解,在出现问题的时候,能够自己思考解决方案,提高了实践能力。