汇编实验二算术运算类操作实验.docx
- 文档编号:8813328
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:34.77KB
汇编实验二算术运算类操作实验.docx
《汇编实验二算术运算类操作实验.docx》由会员分享,可在线阅读,更多相关《汇编实验二算术运算类操作实验.docx(20页珍藏版)》请在冰豆网上搜索。
汇编实验二算术运算类操作实验
汇编语言实验报告
实验二算术运算类操作实验(基础与设汁)
班级:
姓名:
学号:
实验日期:
实验二算术运算类操作实验(基础与设汁)
一、实验要求和目的
1、了解汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;
2、掌握各类运算类指令对各状态标志位的影响及测试方法;
3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;
4、熟悉无符号数和有符号数乘法和除法指令的使用;
5、掌握符号位扩展指令的使用。
6、掌握BCD码调整指令的使用方法
二、软硬件环境
1、硬件环境:
汁算机系统windows;
2、软件环境:
装有MASM、DEBUG.LINK、等应用程序。
三、实验涉及的主要知识
本实验主要进行算术运算程序设计•和调试,涉及到的知识点包括:
1.加减法处理指令
主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令
SBBo
2.乘除法指令和符号位扩展指令
主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW和从字扩展到双字的指令CWD。
3.BCD码的调整指令
主要有非压缩的BCD码加法调整指令DAA,压缩的BCD码减法调整指令DAS,非压缩的BCD码加法调整指令AAA,非压缩的BCD码减法调整指令AAS,乘法的非压缩BCD码调整指令AAM,除法的非压缩BCD码调整指令AAD。
8088/8086指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表1所示的数据类型进行数据运算。
数制
二进制
BCD码
带符号
无符号
组合
非组合
运算符
+、-、X、-j-
+、-
+、-、X、4-
操作数
字节、字、多精度
字节(二位数字)
字节(一位数字)
表1数据类型数据运算表
各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不
再赘述。
四、实验内容与步骤
1、对于两组无符号数,087H和034H,0C2H和5FH,试编程求这两组数的和差积商,并考
虑计算结果对标志寄存器中状态标志位的影响
2、在数据段定义了两个多精度的有符号16进制数,FIRST和SECOND,1)求两数的和
与差,并将结果存放在THIRD为首地址的缓冲区中;2)如果把两组数据当作十进制数据
来处理,再次求两数的和与差,并将结果存放在FORTH为首地址的缓冲区中。
试编程实现
上述运算。
3、编程计算((Z+X*Y-328)-V)/Y,其中X、Y、Z、V均为16位带符号数,假设初始数
据分别装入X、Y、Z、V单元,要求上式计算结果的商存入AX,余数存入DX寄存器。
同
学自行给出初始值加以验证程序。
五、程序设计•:
实验1:
流程图如下:
开始
输入数据
进行运算
输出结果
结束
实验2:
以16进制加法为例,流程图如下:
开始
输入FIRST
和SECOND
SI二3,CX二4
Y
CX二0?
输出
THIRD
[THIRD+1][SI]=FIRST[SI]+SECOND[SI]
CX-1,SI-1结束
其他程序流程图类似。
六、实验过程及结果:
实验1:
1.根据要求,设计程序如下:
0203仙O506O7O8O91O11121311*151********02122232J4252627282930313233叢
DATASSEGMENTdatalDU087Hdata2DU034Hdata3DU0C2Hdata4DW5FH
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATASSTART:
MOU
MOUDS,AX
MOUAX7datal
ADDAX7data2
MOUAX7datal
SUBAX7data2
MOUAX7datal
MOUBX7data2
MULBX
MOUAJC,datal
MOUBX,data2
DIUBX
MOUA}C,data3
ADCAJC^ataU
MOU般,data3
SBBAX.dataU
MOUAK9data3
MOUBX.dataU
IMUL畔
MOUAX,data3
MOUBX,data4
IDIUBK
MOUAH,4CH
INT21H
CODESENDS
ENDSTART
2.编译代码,生成OBJ文件,再生成EXE文件,可成功运行。
3.进行程序调试可得运算结果如下:
087H+034H的结果:
t
nx-eeBBBx^oeeocx=ggs9ox-eeoesp咖gBp^ooeesimx®di咖00
DS=077©ES=O76QSS=076FCS=©771IP^KKCNUUPElPLNZNAPENC
O?
?
l:
96ecAioeooMOUftXJOOOG)ds:
0000=000?
087H-034H的结果:
AX6053KX二6008
DS旳7?
0e?
?
l:
66)13A1GO00
CX;*53DX0000SP^OQGO
SStTGFCS,0?
71IPW13iwAxjoeee)
087HX034H的结果:
-t
AX二1B6CBXWOHI>S=0?
?
0ES旳730771:
9©1CA16009
excessDX二098SF二0099
SS=e?
6FCS=0?
?
1!
P=G01C
nowAxjooeoi
刖©00si^ooeoD.OOOG
HUUPElPLMZNAPEHC
DS:
eO99«367
087H/034H的结果:
AX9092BX0R34DS6?
?
0ES0?
f>0O771:
GG2SH1M09
CX=GG59DX^eOlFSF-0900ss=0?
fercs=G?
?
iip-eera
«nunx.roow)
BP9060SJ0909
NUUPElPLHZNrtPENC
DS:
eG04=6GC2
0C2H+5FH的结果:
AX01Z1BX0034
DS二0776ES二0760e?
?
l:
662C10468
CX=6e59DX091FSPOOGG
SS=OT6FOS旳771IF^OBZCH)UAXJOGOI)
bfeeeosieeeodieeeo
NUUTEIFLNZACPENC
DS;oo^eec2
0C2H-5FH的结果:
AX0063BX0934PS=0776ES=07690?
?
1:
6633ftl0460
exoesgdxcoifspooggSS二€T76FCS=07?
1IF二0933rt)UnXJOGCH)
BP09GGSiO06ODi0960
NUUPElPLNZACPEHC
IXS:
“MO0C2
0C2HX5FH的结果:
AXM7FEBX^OCKF
DS=07?
0ES=0?
8e
CX二妙9DX^OOOGSP^GOOOSS=076F00771IP二G03C
BP-GOtWSIPO09DIPQ09
NUUPElPLNZACPENC
9771:
O0:
JC
rtju
DS:
66CH^GCZ
0C2H4-5FH的结果:
BP-0900SI-6CO5DI6060
KUUPElPLKZNAPENCftS:
000O=GG8?
AX6002BX-6Q5F
DS=W?
0ES=0?
6O
|G7?
l;0O15B44C
CX二0O5PDX二0004SP二0009BP-00(*)SI二0660DI^G090SS=0?
6FCS=07?
1IF=9045MUUPElPLNZftCPENC
MOUrtH.4C
4•总结两组数的和差积商及标志状态位悄况如下表:
计算
状态标志
表达式
结果
CF
AF
ZF
OF
SF
PF
087H+034H
OBBH
NC
XA
NZ
NV
PL
PE
087H-034H
53H
NC
\A
NZ
NV
PL
PE
087H*034H
1B6CH
NC
\A
NZ
NV
PL
PE
087H/034H
商2H
余1FH
NC
\A
ZR
NV
PL
PE
0C2H+5FH
121H
NC
AC
NZ
NV
PL
PE
0C2H-5FH
63H
NC
AC
NZ
NV
PL
PE
0C2H*5FH
47FE
NC
XA
NZ
NV
PL
PO
0C2H/5FH
商2H
余4H
NC
\A
ZR
NV
PL
PE
状态标志位
加法
减法
乘法
除法
0
1
0
1
0
1
0
1
CF
最高有效
位向高位
无进位
最高有效位向高位有进位
二进制减法运算中最高有效为向高位无借位
(被减数〉=减数,够减
二进制减法运算中最高冇效位向高位有借位(被减数小于减数,不够减的情况
CFOF二00乘积的高一半为0(字节操作的
(AH)或字操作的(DX))
CF
OF二11乘积的高一半不为0
不
确
定
的情况)
AF
玉响
无影响
ZF
结果不为
零
结果为零
*影响
无影响
OF
两个不同符号数相加,或同符号数相加,结果符号与其相同。
两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。
同符号数相减时,或不同符号数相减,其结果符号与减数不同。
两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
CF0F=00乘积的高一半为0(字节操作的
(AH)或字操
作的(DX))
CF
OF二11乘积的高一半不为0
SF
结果不为负
结果为负
无影响
无影响
PF
无影响
无影响
|
实验2:
1.根据要求,编译程序如下:
FIRST+SECOND的16进制:
02
03
04
05
06
07
ns
09
012345678901
111111111122
DATASSEGMENT
FIRSTDB1|5H,82H,96H,57HSECONDDB12H,46H,83H,45H
THIRDDB5dup(8)
FORTHDB5dup(O)DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATftS
ENDSTART
FIRST-SECOND的16进制:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
START:
MOU
MOUDS,AX
MOUSI,3
MOUAL.FIRST[SI]
SUBAL,SECOND[SI]
MOU[THIRD+1][SI],
MOUCX,4
next:
DECSI
MOUAL,FIRST[SI]
SUBAL,SECOND[SI]
MOU[THIRD+1][SI],
LOOPnext
MOUAL,0
SUBAL,0
MOU[THIRD][SI],AL
MOU
INT21H
CODESENDS
ENDSTART
DATASSEGMENT
FIRSTDB45H,82H,96H,57HSECONDDB12H,46H,83H,45HTHIRDDB5dup(O)
FORTHDB5dup(O)DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
FIRST+SECOND的10进制:
01
DATASSEGMENT
02
FIRSTDD45H,82II,96II,57H
03
SECONDDB12H,46H,83H,45H
04
THIRDDB5dup(O)
05
FORTHDB5dup(O)
06
DATASENDS
07
CODESSEGMENT
08
ASSUMECS:
CODES,DS:
DATAS
09
START:
10
MOUAX,DATfiS
11
MOUDS,AX
12
MOUSI,3
13
MOUAL,FIRST[SI]
14
ADCAL,SECOND[SI]
15
Dtlti
16
MOU[F0RTH+1][SI],AL
17
MOUCX,4
18
next:
19
DECSI
20
MOUAL,FIRST[SI]
21
ADCAL,SECOND[SI]
22
DAA
23
MOU[F0RTH+1][SI],AL
24
LOOPnext
25
MOUAL,0
26
ADCALJ
27
DAA
2S
29
MOU[FORTH][SI],AL
30
MOUAH詁CH
31
IHT21II
32
CODESENDS
33
cB.
EHDSTART
FIRST-SECOND的10进制:
01
DfiTfiSSEGMENT
02
FIRSTDBU5H,82H,96H,57H
03
SECONDDB12H,46H,83H,45H
04
THIRDDB5dup(0)
05
FORTHDB5dup(0)
06
DfiTfiSENDS
07
CODESSEGMENT
08
ASSUMECS:
CODES,DS:
DATAS
09
STfiRT:
10
MOUAX,DATAS
11
MOUDS,AX
12
MOUSI,3
13
MOUAL,FIRST[SI]
14
SBBAL,SECOND[SI]
15
DAS
16
MOV[F0RTH+1][SI],fiL
17
MOUCX,4
18
next:
19
DECSI
20
MOUAL,FIRST[SI]
21
SBBAL,SECOND[SI]
22
DAS
23
MOV[FORTH+1][SI],I1L
24
LOOPnext
25
MOUAL,0
26
SBBAL90
27
DAS
28
MOU[FORTH][SI],ftL
29
30
MOUAH94CH
31
INT21H
32
CODESENDS
33
ENDSTART
2.编译代码,生成OBJ文件,再生成EXE文件,可成功运行。
3.进行程序调试可得运算结果如下:
FIRST+SECOXD的16进制结果:
BX-0999CX二0900DX二决炯SF旳609册二60阳SXFFFFDl=0999
977Z:
962E
M4(:
EU
AH.4(:
dds:
6
刃?
8:
飯旧0
45
57
eo-s?
o?
?
e:
eeio
eo
00
eo®
ET773:
磁0
册
OE
eo-tw
0773:
0030
00
00
4E-8A
(•r779:
96H0
00
eo-e^
0770:
0850
CD
00
G03
叨8:
0660
eo
00
QO-G9
3779:
0070
00
00
eooo
e0ooGHsn4ooQOGO
090eH4o4舸090900
%ee6z&创
DS二©?
?
eES二07WSS^076FCS=0?
?
21P^G2£NUUPElPLZRNrtPEHC
FIRST-SECOND的16进制结果:
gZc
X076OBX-GOO)
cxeoee
i)xeeoesp^oeeo
BP=006G
SI=FFFFDI6600
DS^OT70DS二G760
SS捋76F
CSe?
7ZIF
、二妙E
HUUPElPL贡
NAFENC
07?
2:
6G2E
B44C
MIU
"MC
dds:
O
刃70:
6000
33
E..W.F...3<
cr?
?
o:
eoio
00
0770:
ecize
(14
0770:
6030
M
N....M...
0770.0040
00
L
0?
?
0:
6C60
GO
»
cr7?
o:
eo60
GO
ET770:
e0?
9
00
FIRST-SECOND的10进制结果:
Ax=e?
*nBx=oo0e曲旳?
?
0£S=0?
66
0?
?
2:
0fniJVHC
-dds:
©
0770:
00004502
0?
?
e:
00106060
0779:
0020BO70
0770:
0030ZF8B0779:
0010GOZF9779:
0E5960M0776:
0060GOOO9779:
00766099
E..W.F..C36
CX0609DX=090eSP45009
SS=6?
6FCS=0?
?
2IP=0G31
MOU«L4C
99-43OB00008A
OG-4E
F9-B6
00-6900OG冷99
BP=ooeoSI=FFFFDI=O0e©
NUUP£1MGMZACPECY
4・最终结果如下:
十六进制结果
十进制结果
FIRST+SECOND
57H,C8H,19H,9CH
5&29,80,03
FIRST-SECOND
33H,3CH,13H,12H
33,36,13,12
实验3:
1.依据题意编写代码如下:
01
DATASSEGMENT
02
XDW87H
03
VDW3即H
04
ZDW0C2H
05
UDW5FH
06
DATASENDS
07
CODESSEGMENT
98
ASSUMECS:
CODES,DS:
DATAS
99
START:
10
MOUAX,DfiTfiS
11
MOUDS,fiX
12
MOUAX,X
13
IMULV
14
MOUCX5AX
15
MOUBX,DX
16
MOUAX52
17
CWD
18
ADDAX.CX
19
ADCDX.BX
20
SUBAX.328
21
SBBDX.Q
22
MOUCX,AX
23
MOUBX.DX
24
MOUAK9U
25
CWD
26
SUBCX,fiX
27
SBBBX,DX
28
MOUfiX,CX
29
MOUDX,BX
30
IDIUY
31
MOUAH/CH
32
33
34
INT21H
CODESENDSENDSTART
2•编译代码,生成OBJ文件,再生成EXE文件,可成功运行。
3.进行程序调试可得运算结果如下:
粧
HX-O08ZBX-69G0CX-lft8?
DX-OO1FSP-0090BPP9O0SI-eGOODI-0009DS=0770ES=0?
bOSS二W6FCS=0771IP=0O3ZMUUPElPLZBMAPEMCe?
71:
«MZB44CMOUAH.4C
即商为82H,余数为1FH
七、实验感想:
经过两次实验,渐渐熟悉了编程环境,对汇编语言中的二进制、十六进制、
十进制、BCD码的表示形式有了一定了解,也对从汇编课上学习到的有关BCD码调整指令方面理论知识有了更深刻的认识,经过自己动手编程,熟悉了二进制多字节加减法基本指令的使用方法以及无符号数和有符号数乘法和除法指令的使用,通过分析和思考,掌握了各类运算类指令对个状态标志位的影响和测试方法。
继续阅读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 实验 算术 运算 操作