北理工汇编实验二算术运算类操作实验.docx
- 文档编号:6991255
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:13
- 大小:244.33KB
北理工汇编实验二算术运算类操作实验.docx
《北理工汇编实验二算术运算类操作实验.docx》由会员分享,可在线阅读,更多相关《北理工汇编实验二算术运算类操作实验.docx(13页珍藏版)》请在冰豆网上搜索。
北理工汇编实验二算术运算类操作实验
本科实验报告
实验名称:
实验二算术运算类操作实验(基础与设计)
课程名称:
CPU与汇编实验
实验时间:
任课教师:
实验地点:
实验教师:
实验类型:
□原理验证
■综合设计
□自主创新
学生姓名:
学号/班级:
组号:
无
学院:
信息与电子
同组搭档:
无
专业:
信息工程
成绩:
一、实验要求和目的
1.了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;
2.掌握各类运算类指令对各状态标志位的影响及测试方法;
3.熟悉汇编语言二进制多字节加减法基本指令的使用方法;
4.熟悉无符号数和有符号数乘法和除法指令的使用;
5.掌握符号位扩展指令的使用;
6.掌握BCD 码调整指令的使用方法 。
二、软硬件环境
1、硬件环境:
计算机系统 windows;
2、软件环境:
装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识
1.加减法处理指令
2.乘除法指令和符号位扩展指令
3.BCD码的调整指令
四、实验内容
(一)对于两组无符号数,087H和034H,0C2H和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:
计算
状态标识
表达式
结果(H)
CF
AF
ZF
OF
SF
PF
087H+034H
00BB
0
0
0
0
0
1
087H-034H
0053
0
0
0
0
0
1
087H*034H
1B6C
0
0
0
0
0
1
087H/034H
0002(1F)
0
0
0
0
0
1
0C2H+5FH
0121
0
1
0
0
0
1
0C2H-5FH
0063
0
1
0
0
0
1
0C2H*5FH
47FE
0
1
0
0
0
1
0C2H/5FH
0002(04)
0
1
0
0
0
1
1.
流程图
2.程序代码:
DATASSEGMENT
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,0C2H
MOVBX,5FH
ADDAX,BX;add
MOVAX,0C2H
MOVBX,5FH
SUBAX,BX;sub
MOVAX,0C2H
MOVBX,5FH
MULBX;mul
MOVAX,0C2H
MOVBX,5FH
DIVBX;div
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
(将数据改变得到另一组输出结果)
3.实验结果
以第一组数的加法为例
(已将截图以上输入-t进行debug的步骤省略)
此时右下角信息(NVUP……)代表标志寄存器的值。
4.结果分析:
由资料可得:
1.CF(carryflag):
进位标志位,运算结果需要进位为1,不需进位为0
2.PF(parityflag):
奇偶标志位,当运算结果的低8位中的“1”的个数为偶数时PF=1,为奇数时,PF=0。
3.AF(auxiliaryflag):
辅助进位标志,第3位有进位为1,无进位为0
4.ZF(zeroflag):
零标志位,当运算结果为零时ZF=1,否则ZF=0。
5.SF(signflag):
符号标志位,当运算结果的最高位为1时SF=1,否则SF=0。
6.OF(overflowflag):
溢出标志位,当算术运算结果超出了带符号数的范围,即溢出时,OF=1,否则OF=0.
其中注意在本程序中,SUB影响全部的条件标志:
1.减法的CF反应的是无符号数运算中的借位情况:
当减数>被减数是CF=1,否则CF=0;
2.OF:
如果两个数的符号相反而结果的符号与减数相同,则OF=1,否则OF=0;
3.SF(运算结果<0为1否则为0)、ZF(零标志)、AF(辅助进位标志)、PF(奇偶标志)根据其含义设置。
(二)在数据段定义了两个多精度的有符号16进制数,FIRST和SECOND,1)求两数的和与差,并将结果存放在THIRD为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH为首地址的缓冲区中。
试编程实现上述运算。
FIRSTDW45H,82H,96H,57H
SECONDDW12H,46H,83H,45H
16进制结果
10进制结果
FIRST+SECOND
0057C9199CH
0058298002D
FIRST-SECOND
00333C1312H
0033361312D
1.流程图
十六进制减法及十进制显示部分略。
十进制加法前设置寄存器值为SI=0,DI=0,CX=3,在每步相加后用DAA显示为十进制数,十进制加法前设置寄存器值为SI=0,DI=5,CX=3,在每步相减后用DAS显示为十进制数。
2.程序代码:
DATASSEGMENT
FIRSTDB45H,82H,96H,57H
SECONDDB12H,46H,83H,45H
THIRDDB10DUP(?
);注意保证数组空间足够大
FORTHDB10DUP(?
)
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVSI,0
MOVDI,0
MOVCX,3;设置寄存器值,作为计数器
L1:
;十六进制显示加法
MOVAL,FIRST[SI+3]
MOVBL,AL
MOVAL,SECOND[SI+3]
ADCAL,BL
MOVTHIRD[DI+4],AL
DECSI
DECDI
DECCX
JNZL1;若CX不为零,则未到最高位,循环
DECDI;CX为零,跳出循环
MOVAL,FIRST[SI+3]
CBW;扩充,符号位存入AH
MOVBX,AX
MOVAL,SECOND[SI+3]
CBW
ADCAX,BX
MOVWORDPTRTHIRD[DI+4],AX;将AX强制显示。
即高位存入下一位。
MOVDI,5;重置寄存器值,避开加法结果位置。
MOVSI,0
MOVCX,3
L2:
;十六进制显示减法
MOVAL,FIRST[SI+3]
MOVBL,SECOND[SI+3]
SBBAL,BL
MOVTHIRD[DI+4],AL
DECSI
DECDI
DECCX
JNZL2
DECDI
MOVAL,FIRST[SI+3]
CBW
MOVBL,SECOND[SI+3]
CBW
SBBAX,BX
MOVWORDPTRTHIRD[DI+4],AX
MOVDI,0
MOVSI,0
MOVCX,3
L3:
;十进制显示加法
MOVAL,FIRST[SI+3]
MOVBL,AL
MOVAL,SECOND[SI+3]
ADCAL,BL
DAA;显示为十进制
MOVFORTH[DI+4],AL
DECSI
DECDI
DECCX
JNZL3
DECDI
MOVAL,FIRST[SI+3]
CBW
MOVBX,AX
MOVAL,SECOND[SI+3]
CBW
ADCAX,BX
DAA
MOVWORDPTRFORTH[DI+4],AX
MOVDI,5
MOVSI,0
MOVCX,3
L4:
;十进制显示减法
MOVAL,FIRST[SI+3]
MOVBL,SECOND[SI+3]
SBBAL,BL
DAS
MOVFORTH[DI+4],AL
DECSI
DECDI
DECCX
JNZL4
DECDI
MOVAL,FIRST[SI+3]
CBW
MOVBL,SECOND[SI+3]
CBW
SBBAX,BX
DAS
MOVWORDPTRFORTH[DI+4],AX
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
3.调试结果
4.结果分析
(1)CWB为扩充,符号位置于AH;
(2)将AX放入THIRD中时,由于AX为WORD型,THIRD为BYTE型,故需要PTR指令;
(3)最高位相加时,将进位结果强制存入数组,结果如图显示,第二位00为最高位进位结果。
(三)编程计算((Z+X*Y-328)-V)/Y,其中X、Y、Z、V均为16位带符号数,假设初始数据分别装入X、Y、Z、V单元,要求上式计算结果的商存入AX,余数存入DX寄存器。
同学自行给出初始值加以验证程序。
1.流程图
2.程序代码
DATASSEGMENT
XDW0FF3H
YDW1117H
ZDW000FH
VDW5B12H
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,X
IMULY;x*y,保存在DX,AX中
MOVCX,AX
MOVBX,DX;此时DX,AX存入BX,DX中
MOVAX,Z;扩展,存入AX
CWD
ADDCX,AX
ADCBX,DX
SUBCX,328
SBBBX,0
MOVAX,V
CWD
SUBCX,AX
SBBBX,DX
IDIVY
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
3.调试结果
4.
经检验结果正确
5.结果分析
需注意数据计算可能产生的进位,及时使用CWB扩充,保证结果正确。
五.总结
通过这次实验,自己对汇编语言终于有了一个系统的认识,并初步理解了汇编中四则运算的机制,熟悉了课上所学的CBW,CWD,PTR,IMUL,IDIV,DAA,DAS等命令的使用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北理工 汇编 实验 算术 运算 操作