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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验二算术运算实验.docx

1、实验二算术运算实验实验二 算术运算实验一、 实验目的1、 掌握MASM for Windows 环境下的汇编语言编程环境使用;2、 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3、 掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4、 掌握无符号数和有符号数运算区别及编程方法;5、 掌握BCD 码调整指令的使用方法二、 软硬件实验环境1、硬件环境:惠普64 位一体化计算机及局域网;2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。三、实验基本原理算术运算实验需要对运行结果进

2、行调试及查看状态字,其相关知识如下。 1) 标志位在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。表1标志名和状态符号的对照表参照表2) 加减法指令ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。3) 乘除法指令MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。4) 符号位扩展指令CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。5) BCD码的调整指令在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非

3、组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。组合的BCD码加法调整指令DAA;组合的BCD码减法调整指令DAS;非组合的BCD码加法调整指令AAA;非组合的BCD码减法调整指令AAS;乘法的非组合BCD码调整指令AAM;除法的非组合BCD码调整指令AAD。8088/8086指令系统提供了实现加、减、乘、除运算指令,可参照表2所示容。表2数据类型的数据运算表四、实验步骤与容1) 对于表格中三组无符号数,试编程求这三组数的指定运算结果,并考虑计算结果对标志寄存器中状态标志位的影响:实验分析本实验

4、要求简单,仅对指定三组数进行基本运算。只需使用ADD、SUB、MUL、DIV四个运算命令,并以MOV命令作为数值转移的手段即可。运算结果和状态标志的情况可以通过debug调试中的T命令进行逐步查看。需要注意的主要有以下几点:1. 在进行加法和乘法运算时,会出现对高位的进位扩展。因此,在记录结果的时候不能仅仅记录低2位(十六进制)的结果,应记录包含高位的完整结果;2. 在使用MUL和DIV命令时,语句的写法与ADD和SUB有区别;3. 除法运算既可得到商,也可得到余数,余数存在DL中;4. 查看结果时以三个语句为一次运算,输入三个T命令后的结果才是此次运算的结果。流程图程序样例1、DATAS S

5、EGMENT ;此处输入数据段代码 BUF1 DB 0ABH,64H,0A2H BUF2 DB 78H,5AH,3FH BUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV SI,0 MOV CX,2 Q1: MOV AH,0H MOV AL,BUF1SI MOV BL,AL MOV AL,BUF2SI ADD AX,BX ;进行运算 MOV BUF3SI,AL

6、 ADD SI,1H DEC CX JNZ Q1 ;跳转再做一次第二组数的加法运算 MOV AX,4CH INT 21HCODES ENDSEND START2、STACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV SI,0 MOV CX,2 Q1: MOV AH,0H MOV AL,BUF2SI MOV BL,AL MOV AL,BUF1SI SUB AX,BX MOV BUF3SI,AL ADD SI,1H ;

7、do the operation DEC CX JNZ Q1 ;do it again with the second group of numbers MOV AX,4CH INT 21HCODES ENDSEND START3、DATAS SEGMENT ;此处输入数据段代码 BUF1 DB 0ABH,64H,0A2H BUF2 DB 78H,5AH,3FH BUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:

8、 MOV AX,DATAS MOV DS,AX MOV SI,2 MOV CX,1 Q1: MOV AH,0H MOV AL,BUF2SI MOV BL,AL MOV AL,BUF1SI DIV BX MOV BUF3SI,AL ADD SI,1H ;do the operation DEC CX JNZ Q1 ;do it again with the second group of numbers MOV AX,4CH INT 21HCODES ENDSEND START实验结果0ABH+78H64H+5AH0ABH-78H64H-5AH0A2H*3FH0A2H/3FH计算状态标志算式结果

9、AFCFZFOFSFPF0ABH+78H123H1000000ABH-78H33H00000164H+5AH0BEH00000164H-5AH0AH1000010A2H*3FH27DEH1000010A2H/3FH2H余24H1000012) 在数据段定义了两个多精度的有符号16进制数,BUF1和BUF2。求两数的和与差,并将计算值存放在BUF2为首地址的缓冲区中;同时将两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在BUF2为首地址的缓冲区中。试编程实现上述运算。BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52H1 实

10、验分析本实验的思想是把这个两个多精度数进行按精度(每两位)进行运算,考虑进位与借位,每种运算都可以使用循环和带进位加法,或循环和带进位减法进行实现。对于十进制数运算的要求,再辅以DAA和DAS两种十进制调整命令,将结果变为BCD码即可。本实验中需要注意的有以下几点:1. 本实验要求就过存入以BUF2为首地址的缓冲区。为在运算时保护BUF2的数据,需定义另一个存储空间来存储和BUF2一样的数据;2. 在进行不同运算的间隙应当进行清除进位标志的操作,即使用CLC命令,避免上一运算的进位影响下一位运算的结果;3. DAA和DAS都只能对AL里的结果转换为压缩BCD码,因此十进制加减结果必须存入AL里

11、,且转换为压缩BCD码的结果要靠读取AL来获得。2 程序流程图3 程序样例1、DATAS SEGMENT ;此处输入数据段代码 BUF1 DB 92H,98H,45H,64H,78H BUF2 DB 33H,46H,17H,45H,52H BUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV SI,0 MOV CX,4 MOV AH,00H Q1: MOV AL

12、,BUF2SI MOV BL,AL MOV AL,BUF1SI ADC AL,BL MOV BUF2SI,AL INC SI DEC CX JNZ Q1 MOV AX,4CH INT 21HCODES ENDS END START2、DATAS SEGMENT ;此处输入数据段代码 BUF1 DB 92H,98H,45H,64H,78H BUF2 DB 33H,46H,17H,45H,52H BUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,

13、SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV SI,0 MOV CX,4 MOV AH,00H Q1: MOV AL,BUF2SI MOV BL,AL MOV AL,BUF1SI SBB AL,BL MOV BUF2SI,AL INC SI DEC CX JNZ Q1 MOV AX,4CH INT 21HCODES ENDS END START3、DATAS SEGMENT ;此处输入数据段代码 BUF1 DB 92H,98H,45H,64H,78H BUF2 DB 33H,46H,17H,45H,52H BUF3 DB 10 DUP(?)DATAS E

14、NDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV SI,0 MOV CX,4 MOV AH,00H Q1: MOV AL,BUF2SI MOV BL,AL MOV AL,BUF1SIADC AL,BLDAA MOV BUF2SI,AL INC SI DEC CX JNZ Q1 MOV AX,4CH INT 21HCODES ENDSEND START4、DATAS SEGMENT ;此处输入数据段代码 BUF1 DB 92H,98H,45H,64H,78H BUF2 DB 33H,46H,17H,45H,52H BUF3 DB

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

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