资源描述:
《微机原理设计实验之两个数相乘.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程设计题目:两个数相乘一、实验目的1、领会汇编语言的编程思想;2、掌握汇编语言的指令,加深乘法指令和循环指令的用法;3、学会DOS功能的调用。二、实验内容实现两个十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。三、实验原理本实验设计A、B两个数相乘。巧妙地运用了数学中的乘法原理,将B的低位和A的最低位相乘得到的数的低位存到AL中,这个数的进位存到AH中,再用B的低位和A的次低位相乘,得到一个数,这个数的低位和上一次的进位相加。循环此过程直到到B与A的最高位相乘结束,并与上一次结果的进位相加,得到最后的结果。四、程序设计流程图
2、(此处画上是实验纸上的流程图)五、实验程序DATASEGMENT;定义数据段DATA1DB32H,39H,30H,35H,34H;用ASCII码表示被乘数45092DATA2DB34H;用ASCII码表示乘数4MES1DB'*','$'MES2DB'=','$'BUFDB'Result$'RESULTDB6DUP(00H);定义存放结果的数据缓冲区,6个字节长,初值为0DATAENDS;数据段结束STACKSEGMENT;定义堆栈段STADB20DUP(?);为变量STA分配20个字节的空间TOPEQULENGTHSTA;返回利用DUP定义的数组元素的个数到TO
3、P,TOP=20STACKENDS;堆栈段结束CODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AX;DS→AXMOVAX,STACKMOVSS,AX;SS→STACKMOVSP,TOP;栈顶指针指向TOPMOVDX,OFFESETBUFMOVAH,9;DOS功能号09H送AHINT21H;显示字符串‘pleaseinput’LEASI,DATA1;被乘数首地址送SIMOVBX,05HL1:MOVAH,02H;DOS功能号02H送AHMOVDL,[SI+BX-
4、1];被乘数送DLINT21H;DOS功能号调用(显示器输出)DECBXJNZL1MOVAH,09H;DOS功能号09H送AHLEADX,MES1;MES1的偏移地址送DXINT21H;DOS功能号调用(显示字符串)LEASI,DATA2;乘数地址送SIMOVAH,02HMOVDL,[SI];乘数送DLINT21H;显示乘数MOVAH,09HLEADX,MES2;MES2的偏移地址送DXINT21HMOVSI,OFFSETDATA2MOVBL,[SI];DATA2中的乘数送BLANDBL,00001111B;屏蔽乘数高4位,ASCII码转换为十六进制MOVSI,
5、OFFSETDATA1;被乘数偏移地址送SIMOVDI,OFFSETRESULT;运算结果偏移地址送DIMOVCX,05;设置循环次数LOOP1:MOVAL,[SI];被乘数送ALANDAL,00001111B;屏蔽被乘数高4位,ASCII码转换为十六进制INCSIMULBL;AL*BL送AXAAM;乘法十进制调整ADDAL,[DI];结果低位与前次计算的进位相加AAA;BCD码加法十进制调整指令MOV[DI],AL;计算结果低位送DIINCDIMOV[DI],AH;计算结果高位进位送DI+1LOOPLOOP1;循环MOVCX,06MOVSI,DI;计算结果送S
6、IDISPL:MOVAH,02H;调用DOS功能号02H送AHMOVDL,[SI]ADDDL,30H;结果转换为ASCII码INT21H;显示一位数据DECSI;地址减一,继续后面的数据显示LOOPDISPL;显示运算结果MOVAX,4C00H;返回DOSINT21H;结束CODEENDSENDSTART一、DOS功能调用在DOS软中断指令中最常用的是系统功能调用(INT21H),主要完成文件管理,输入/输出设备控制,系统参数操作等等。它本身包含80多个子程序,每个字程序对应一个功能号,其编号为0~62H。此次课程设计用到的几个常用DOS系统功能调用。1)键盘显
7、示并回显(01H号功能)。此功能程序将扫描键盘并等待输入一个字符,直到按下一个键(输入一个字符),先检查是否有Ctrl+Break键,若是则退出,否则把字符的ASCⅡ码送入寄存器AL,并在屏幕上显示该字符。2)在屏幕显示一个字符(02H号功能)。该功能要求的入口参数为:将将要显示的字符的ASCⅡ码存入DL,功能号存入AH。在执行INT21H时,会把DL寄存器中的ASCⅡ码字符送到屏幕显示。02H号功能可显示任意字符,如果DL。09H号功能不能显示‘﹩’符号,所以02H号功能可作为09H号功能的补充。3)字符串显示(09H号功能)。09H号功能子程序将指定的内存缓
8、冲区中的字符串送屏幕显示