微机原理实验报告之算术运算编程.docx
《微机原理实验报告之算术运算编程.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告之算术运算编程.docx(10页珍藏版)》请在冰点文库上搜索。
微机原理实验报告之算术运算编程
成绩
评阅人
《微型计算机原理与接口技术》
实验报告
(一)
班级:
姓名:
学号:
指导老师:
实验时间:
实验地点:
实验一
一、实验名称
算术运算编程实验
二、实验目的
通过实验掌握下列知识:
1.8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。
2.求累加和程序和多字节加减法程序。
工具/准备工作
三、实验内容
1.内存操作数及各种寻址方式使用
2.求累加和程序
3.多字节加法程序
4.自编程序
四、 实验步骤
1.内存操作数及各种寻址方式使用
程序内容:
CODESEGMENT
ASSUMEDS:
CODE,CS:
CODE
START:
MOVAX,CODE
MOVDS,AX
MOVAX,1234
MOVBX,1000
MOV[BX],AX
MOVBX,1002
MOVBYTEPTR[BX],20
MOVDL,39
INCBX
MOV[BX],DL
DECDL
MOVSI,3
MOV[BX+SI],DL
MOV[BX+SI+1],DL
MOVWORDPTR[BX+SI+2],2846
CODEENDS
ENDSTART
步骤:
1)用A命令键入上述程序,并用T命令逐条运行。
2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及双字节数存放法。
思考:
有关指令中BYTEPTR及WORDPTR伪操作不加行不行?
试一试。
不行,当DEBUG不能确定某些操作数涉及的是字类型存储单元还是字节类型存储单元是,再这种情况下,必须用前缀“WORDPTR”或“BYTEPTR”来加以说明
2.求累加和程序
程序内容:
DATASEGMENT
DATAENDS
STACKSEGMENT'stack'
DB200DUP(0)
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE
START:
MOVBX,1000
MOVCX,10
SUBAX,AX
LOP:
ADDAL,[BX]
ADCAH,0
INCBX
LOOPLOP
J:
INT3
CODEENDS
ENDSTART
步骤:
1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。
2)用E命令在内存地址1000H处键入16个数字
3)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查
AX,BX的值是否符合你的预计值。
4)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,
若不一样,检查程序是否有错。
5)重复GJ与T,再检查AX是否正确。
6)用G命令使程序运行到结束,检查AX值是否正确。
3.多字节加法程序
程序内容:
:
MDATASEGMENT
DATAENDS
STACKSEGMENT'stack'
DB200DUP(0)
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE
START:
MOVDI,1000
MOVCX,8
MOVSI,2000
CLC
LOP:
MOVAL,[SI]
ADC[DI],AL
INCSI
INCDI
LOOPLOP
INT20
ENDSTART
步骤:
1)用A命令键入此程序
2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。
3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?
),是否正确?
4)将INT20H指令改为INT3,有何区别?
若这条指令不加,行不行?
试一试。
4.自编程序
程序内容:
DESGSEGMENT
DATA1WD0F865H
DATA2WD360CH
DSEGENDS
;
ESEGSEGMENT
SUBWD2DUP(?
)
ESEGENDS
;
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,ES:
ESEG
START:
MOVAX,DSEG
MOVDS,AX
MOVAX,ESEG
MOVES,AX
LEASI,SUB
MOVAX,DATA1
SUBAX,DATA2
MOVES:
[SI],AX
HLT
CSEGENDS
ENDSTART
五、实验心得
1、 通过本次实验,首先了解到了N命令给程序文件命名、W命令存盘及Q命令退出
DEBUG ;
2、 对G命令也有了新的认识,如G命令等号后的地址指定程序段运行的起始地址。
3、 为了使指令中存储单元操作数具有明确的属性,我们可以使用强制属性操作符
PTR。
4、 通过本次实验,更加了解到了中断指令INT使用。
该指令执行完后,CPU将转去
执行中断服务程序。
程序遇到断点(INT3),停止执行,并显示当前所有寄存器和标志位的内容、以及下一条将要执行的指令,以便观察程序运行到此的情况。
程序正常结束,将显示“Program terminated normally”