- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 运算类编程实验
实验二 运算类编程实验
一 实验目的
1.1 掌握使用运算类指令编程及调试方法。
1.2 掌握运算类指令对各个状态标志位的影响及其测试方法。
二 实验设备
2.1 TDN86/88教学实验系统一台。
2.2 微型计算机(PC机)一台。
三 实验内容
8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表2-1所示的数据类型进行算术运算。
表 2-1 数据类型算术运算表
数制 二进制 BCD码带符号无符号 组合 非组合运算符+、-、×、÷ +、-+、-、×、÷操作数字节,字,多精度字节(二位数字)字节(一位数字)3.1 二进制双精度加法运算
3.1.1 实验要求:
计算X+Y=Z,将结果Z存入某存储单元。
3.1.2 实验原理:
本实验程序是双精度(2个16位,既32位)运算,利用累加器AX,先求低16位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需要用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
3.1.3 参考程序清单:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
XL DW ? ;请在此处给X低位赋值
XH DW ? ;请在此处给X高位赋值
YL DW ? ;请在此处给Y低位赋值
YH DW ? ;请在此处给Y高位赋值
ZL DW ?
ZH DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX ;段地址送DS
MOV AX,XL ;X的值送AX
ADD AX,YL ;X低位加Y低位,65A0+B79E=1D3E且CF=1
MOV ZL,AX ;存低位和
MOV AX,XH ;X高位送AX
ADC AX,YH ;X高位加Y高位,0015+0021+CF=0037
MOV ZH,AX ;存高位和
CODE ENDS
END START
3.1.4 调试提示:
(1) 输入程序并检查无误,经汇编、链接后装入系统(设:CS=0000H,IP=2000H)。
(2) 打开寄存器窗口,观察各寄存器内容的变化。
(3) 用U0000:2000查看MOV AX,XXXX(DATA)语句,即得到宝贵的数据段的段地址,即DS=XXXX=002A,用E命令EXXXX:0000↙给XL,XH和YL,YH赋值存入二进制数AO,65,15,00和9E,B7,21,00。
(4) G=0000:2000↙,运行以上程序。
(5) DXXXX:0008↙,显示计算结果:3E,1D,37,00,CC,…。
(6) 重新赋值,用T(T=0000:2000)↙命令逐步运行程序,观察寄存器内容的变化。
(7) 反复试几组数,考察程序的正确性。
3.2 十进制数的BCD码减法运算
3.2.1 实验要求:
计算X-Y=Z(40-12=28),其中X,Y,Z为BCD码。
3500
3501
3502
3503
3504
3505
3506000402010802CC
3.2.2 参考实验程序及流程图如下:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
X DW ? ;请在此处给X赋值
Y DW ? ;请在此处给Y赋值
Z DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX ;段地址送DS
MOV AH,00H
SAHF ;清CF
MOV CX,0002H
MOV SI,OFFSET X
MOV DI
文档评论(0)