1 / 7
文档名称:

计算机原理实验二实验报告.doc

格式:doc   大小:106KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机原理实验二实验报告.doc

上传人:pppccc8 2022/7/19 文件大小:106 KB

下载得到文件列表

计算机原理实验二实验报告.doc

文档介绍

文档介绍:实验二四则运算
一、 实验目的
巩固DEBUG及宏汇编的使用。
加深对运算指令的理解。
注意标志寄存器的变化。
二、 实验内容
16位二进制加减法运算
1) 内容:
在数据区中定义两个16位的二进制数(16位的二进制数在内存 99 97 99 99 99
重复累加的方式计算两位BCD码数乘以两位BCD码数的积
1)内容:用重复累加的方法计算两位BCD码数乘以两位BCD码数的积。被乘 数和乘数都用压缩的BCD码形式存放于数据区,各占一单元。乘积顺序存放 在后两个单元中(低位在前,高位在后)。
2)思路:
流程图如下:
袪乘数—a BL 乘数f CL 清零DX (乘积)
技乘数+积—►积 十进制调整
CL-1 f CL
十进制调笠
积送存
结束
首先在数据段定义两个两位的压缩性BCD码(表面上是两位十六进制数)。
用DX来存暂存乘积(累加结果),每次将DL和被乘数BL相加,然后进 行十进制调整;在将DH和CF相加,十进制调整;如此共进行CL (看做压缩性 BCD码)次即可得到乘积结果。
上述加法和减法由于要进行十进制调整,故要先将被加数移至AL中,然 后进行加减和调整,最后再送回原来的寄存器。
最后将DX的内容送存到内存中。
3)源程序(重要部分):
a)数据段:
BUFFER1
DB
88H
BUFFER2
DB
99H
RES
DW
b)核心源码:
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, BUFFER1
LEA DI, BUFFER2
MOV BL, [SI]
MOV CL, [DI]
XOR DX, DX
NEXT:
CLC ;每次的累加是独立的,故要进行CF清零
MOV AL, DL
ADC AL, BL
DAA
MOV DL,AL ;利用AL完成DL和BL的加法
MOV AL, DH
ADC AL, OOH
DAA
MOV DH,AL ;利用AL完成DH和CF的加法
MOV AL, CL
SUB AL, 01H
DAS
MOV CL, AL ;利用AL完成CL的减一操作
JNZ NEXT ;循环CL次
MOV [ :结果底存
4)结果:
-d 6?6a:0 076A:0000 88 99 1Z 87
88*99=8712;
修改数据:
-e 076a:0 O76A:00OO
执行结果:
-d 076a:0 076A:0OO0 09 99 91 G8
用乘法指令计算十进制数乘法2754x3
1) 内容:用乘法指令计算十进制数乘法 2754x3。被乘数和乘数都用ASCII码形 式存放在内存中(低位在前),乘积以 ASCII码存入后续单元(低位在前)。由于 此题被乘数是四位而乘数仅一位,可以用 乘数逐次去乘被乘数的每一位(用字节 乘,先低位后高位),然后相加。由于两 个1位数相乘除产生本位积以外还可能 产生进位,这时可以将本位积存入最终结 果单元,而进位还要加到高位积中去。相 乘前要将ASCII码变成十六进制数,运 算后还要进行十进制调整。
2) 思路:
流程图如右:
3)源程序(重要部分):