ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:18.76KB ,
资源ID:21459495      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21459495.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理实验报告两个数相乘Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理实验报告两个数相乘Word格式.docx

1、MOV LEA L1:INT DEC JNZ AND LOOP1: MOV INC MUL AAM ADD AAA INC AX,STACK SS,AXSP,TOP SI,DATA1 BX,05H AH,02H DL,SI+BX-1 21H BX L1 AH,09H DX,MES1 21H SI,DATA2 AH,02H DL,SI 21H AH,09H DX,MES2 21H SI,OFFSET DATA2 ;显示算式 BL,SI;乘数DATA2?BL BL,00001111B ;屏蔽高4位,ASCII码转化为十六进制数 SI,OFFSET DATA1 DI,OFFSET RESULT CX

2、,05AL,SI AL,00001111B ;取被乘数DATA1,ASCII变十六进制数 SI ;指向被乘数1的下一字符单元 BL ;相乘;AAM调整 AL,DI;结果低位与前次计算的进位相加;AAA调整 DI,AL DI ;结果送存到下一单元 MOV DI,AH LOOP LOOP1 ;计算结果高位进位送存MOV CX,06 MOV SI,DI DISPL: MOV AH,02 MOV DL,SI ADD DL,30H INT 21H DEC SI L OOP DISPL MOV AX,4C00H CODE ENDS END START ;显示结果;结束 篇二:微机原理设计实验之两个数相乘

3、课程设计题目:两个数相乘 一、实验目的 1、领会汇编语言的编程思想;2、掌握汇编语言的指令,加深乘法指令和循环指令的用法;3、学会DOS功能的调用。二、实验内容 实现两个十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。三、实验原理 本实验设计A、B两个数相乘。巧妙地运用了数学中的乘法原理,将B的低位和A的最低位相乘得到的数的低位存到AL中,这个数的进位存到AH中,再用B的低位和A的次低位相乘,得到一个数,这个数的低位和上一次的进位相加。循环此过程直到到B与A的最高位相乘结束,并与上一次结果的进位相加,得到最后的结果。四、程序设计流程图 (此处画上是实验纸上的

4、流程图) 五、实验程序 DATA SEGMENT;定义数据段 DATA1 DB 32H,39H,30H,35H,34H ;用ASCII码表示被乘数45092 DATA2 DB 34H ;用ASCII码表示乘数4 BUF DB &Result$&RESULT DB 6 DUP(00H) ;定义存放结果的数据缓冲区,6个字节长,初值为0 DATA ENDS ;数据段结束 STACK SEGMENT ;定义堆栈段 STA DB 20 DUP(?) ;为变量STA分配20个字节的空间 返回利用DUP定义的数组元素的个数到TOP,TOP=20 STACK ENDS;堆栈段结束 CODE SEGMENT;

5、定义代码段 CODE,DS:MOVDS,AX;DS?AX MOVAX,STACK MOVSS,AX ;SS?STACK MOVSP,TOP ;栈顶指针指向TOP MOV DX,OFFESET BUF MOV AH,9;DOS功能号09H送AH INT 21H ;显示字符串please input LEASI,DATA1;被乘数首地址送SI MOVBX,05H MOVAH,02H ;DOS功能号02H送AH MOVDL,SI+BX-1 ;被乘数送DL INT21H; DOS功能号调用(显示器输出) DECBX JNZL1 MOVAH,09H ; DOS功能号09H送AH LEADX,MES1;M

6、ES1的偏移地址送DX DOS功能号调用(显示字符串) LEASI,DATA2 ;乘数地址送SI MOVAH,02H MOVDL,SI;乘数送DL INT21H ;显示乘数 MOVAH,09H LEADX,MES2 ; MES2的偏移地址送DX INT21H MOVSI,OFFSET DATA2 MOVBL,SI ;DATA2中的乘数送BL ANDBL,00001111B ;屏蔽乘数高4位,ASCII码转换为十六进制 MOVSI,OFFSET DATA1 ;被乘数偏移地址送SI MOVDI,OFFSET RESULT;运算结果偏移地址送DI MOVCX,05;设置循环次数 MOVAL,SI ;

7、被乘数送AL AND AL,00001111B ;屏蔽被乘数高4位,ASCII码转换为十六进制 INCSI MULBL ;AL * BL送AX AAM ;乘法十进制调整 ADDAL,DI;结果低位与前次计算的进位相加 AAA;BCD码加法十进制调整指令 MOVDI,AL ;计算结果低位送DI INCDI MOVDI,AH ;计算结果高位进位送DI+1 循环 MOVCX,06 MOVSI, DI ;计算结果送SI MOVAH,02H;调用DOS功能号02H送AH MOVDL,SI ADDDL,30H ;结果转换为ASCII码 显示一位数据 DECSI;地址减一,继续后面的数据显示 LOOP DI

8、SPL ;显示运算结果 MOVAX,4C00H ;返回DOS ENDSTART 六、DOS功能调用 在DOS软中断指令中最常用的是系统功能调用(INT 21H),主要完成文件管理,输入/输出设备控制,系统参数操作等等。它本身包含80多个子程序,每个字程序对应一个功能号,其编号为0,62H。此次课程设计用到的几个常用DOS系统功能调用。1)键盘显示并回显(01H号功能)。此功能程序将扫描键盘并等待输入一个字符,直到按下一个键(输入一个字符),先检查是否有Ctrl+Break键,若是则退出,否则把字符的ASC?码送入寄存器AL,并在屏幕上显示该字符。2)在屏幕显示一个字符(02H号功能)。该功能要

9、求的入口参数为:将将要显示的字符的ASC?码存入DL,功能号存入AH。在执行INT 21H时,会把DL寄存器中的ASC?码字符送到屏幕显示。02H号功能可显示任意字符,如果DL。09H号功能不能显示,符号,所以02H号功能可作为09H号功能的补充。3)字符串显示(09H号功能)。09H号功能子程序将指定的内存缓冲区中的字符串送屏幕显示。要现实的字符串必须事先存放在内存数据区中,且字符串以,作为结束标志,除此之外,还需要把存放待显示字符串的内存首地址分别存入DS和DX中。也可以将非显示字符(如:回车,换行)的ASC?码(如:0AH,0DH)插入字符串中。4)读入字符串操作(0AH号功能)。这个功

10、能子程序入口参数是DS:DX=输入缓冲区首地址。5)返回操作系统(4CH号功能)。这个功能子程序无入口参数,结束当前正在执行的程序,并返回操作系统,屏幕上显示操作系统提示符。七、部分指令介绍 1、AAA是对BCD码的加法十进制进行调整,用于对两个非组合的BCD码相加的结果进行调整,产生一个非组合的BCD码。2、AAM指令总是跟在乘法指令之后,对两个非组合BCD码相乘结果进行调整,最后得到一个正确的非组合BCD码结果。3、EQU:标号赋值伪指令,代表数据、数据地址或程序地址。4、DB:伪指令,是用来定义字节类型的伪变量 八、实验结果 九、实验总结及体会 通过此次实验,我查阅了相关资料,学习汇编语

11、言,了解了汇编语言的编程思路,同时还学到一些DOS功能以及其调用方式。从汇编语言的编程思路上来看,汇编的编程思路一般是基于最基础的原理,易理解,这样就会产生较清晰的编程思路,但是在编程上还是有些吃力。一方面与自身编程经历少有关外,还有一方面就是没有很系统地掌握这门计算机语言,对计算机内部运行机制的理解还不到位,感觉很简单,却不知道从何下手,知道如何实现部分功能,却不能系统地联系起来,可以说,只能写程序段,不熟悉怎么写程序。此次实验最大的收获就是了解并学习了DOS功能。这是我们上课没有涉及到的,感觉很新鲜,觉得这是汇编很关键的地方,可以大大减轻用户的编程负担,使用起来也很简单方便。有了这些调用这

12、些DOS功能号可使编写的程序简单,易读,代码紧凑,调试也方便。而且,我们可以利用DOS的这些功能实现更便捷更广泛的功能。例如,我们可以适当修改程序,增加一个键盘输入字符并显示的功能号,使得我们可以从键盘输入两个十进制数来实现这两个数的乘积,而不是每次要计算就要修改DARA1和DATA2中的数。另外,此程序对溢出的结果无法显示,那么,我们可以修改程序,判断乘数被乘数的范围,如果溢出,屏幕显示的因溢出引起的错误, 篇三:微机原理实验报告 实 验 报 告 课程名称:实验名称:班 级 学 号 姓 名 指导教师 李北明 实验一 两个多位十进制数相加实验 1、学习数据传送和算术运算指令的用法。2、熟悉在p

13、c机上建立、汇编、链接、调试和运行汇编语言程序的过程。1、将两个五位十进制相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。2,改变程序手动输入2个数相加 三、实验程序 原程序 CRLF MACRO ;建立宏指令CRLF MOV DL,0DH MOV AH,02H MOV DL,0AH ENDM DATA1 DB 32H,33H,34H,35H,36H ;第一个数据(作为被加数) DATA2 DB 31H,32H,33H,34H,34H ;第二个数据(作为加数) DATA ENDS 堆栈段 STADB20 D

14、UP (?TOPEQU LENGTH STA MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA2 MOV BX,05 CALL DISPL;显示被加数 CRLF MOV SI,OFFSET DATA1 显示加数 MOV DI,OFFSET DATA2 CALL ADDA ;加法运算 MOV BX,05 ;显示结果 CALL DISPL DISPL PROC NEAR;显示子功能 DS1:MOV DL,SI+BX-1 ;显示字符串中一字符 DEC BX;修改偏移量 JNZ DS1 RET DISPL ENDP ADDA

15、PROC NEAR MOV DX,SI MOV BP,DI AD1: SUB BYTE PTR SI+BX-1,30H SUB BYTE PTR DI+BX-1,30H DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共五位 CLC ;清位进位 AD2: MOV AL,SI MOV BL,DI ADC AL,BL ;带进位相加 AAA ;非组合BCD码的加法调整 MOV SI,AL ;结果送被加数区 INC SI INC DI ;指向下一位 LOOP AD2 ;AD3: ADD BYTE PTR SI+BX-1,30H ADD BYTE P

16、TR DI+BX-1,30H JNZ AD3 ADDA ENDP 手动输入相加 CRLFMACRO MOVDL,0DH MOVDL,0AH DATASEGMENT DATA1 DB20 DUP(?DATA2 DB20 DUP(?DATAENDS TOP EQULENGTHSTA CODESEGMENT ASSUMECS:CALL INPUT MOVSI,OFFSET DATA2 MOV BX,06CALL DISPL MOV SI,OFFSET DATA1MOV BX,06 MOV DI,OFFSET DATA2 CALL ADDA MOV SI,OFFSET DATA1 MOV BX,06 MOV AX,4C00H INT 21H DISPL PROC NEAR DSI:MOV DL,SI+BX-1 INT 21H DEC BX JNZ DSI MOV BX,06 SUB BYTE PTRSI+BX-1,30H SUB BYTE PTRDI+BX-1,30H

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1