实验二 内存操作数及寻址方法1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二内存操作数及寻址方法
一、实验目的:
通过实验掌握下列知识:
1、DEBUG命令:G,N,W,L及Q。
2、8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。
3、8088指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。
4、8088汇编语言伪操作:BYTE PTR,WORD PTR。
5、求累加和程序和多字节加减法程序。
二、实验内容和步骤:
1、内存操作数及各种寻址方式使用:
MOV AX,1234 ;立即寻址
MOV [1000],AX;直接寻址
MOV BX,1002
MOV BYTE PTR[BX],20;存在一个字节里
MOV DL,39
INC BX
MOV [BX],DL
DEC DL
MOV SI,3
MOV [BX+SI],DL 间接寻址
MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846;存在两个字节中
步骤:
1)输入程序:A 起始地址(默认100H);
2)单步执行程序:采用T命令;
3)查看结果:D 内存单元地址
实验要求:每运行一条指令,检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及双字节数存放法。
思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。
2、求累加和程序:
MOV BX,1000
MOV CX,10
SUB AX,AX
LOP: ADD AL,[BX]
ADC AH,0
INC BX
J: LOOP LOP
INT 3
步骤:
1)输入程序:用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实
际地址,在键入LOOP指令时LOP用实际地址值代替。
2)保存程序
I)给文件命名: N ** ;将此程序命名为文件**(文件名可任取)。
II)存储程序长度值:采用BX:CX存储程序的长度值, BX 存储高位,CX存储地位程序长度值的计算:最后一条指令后面的地址减去起始地址
采用修改寄存器命令:R BX 回车/输入数据
R CX 回车/输入数据
III)将起令行写入文件: W 起始地址;将此程序存到**命名的文件中。
3)退出DEBUG:在’_’提示符下键入Q退出DEBUG。
4)调入程序:
I)在dos操作符下键入DEBUG ** 回车;再次调入DEBUG和文件**
显示程序:在DEBUG操作符下用U 起始地址命令显示程序。
II)若调入DEBUG时忘了加**文件名,用N命令和L命令将文件调入.
例:N ** ↙
L↙
5)调试程序:
I)在内存中存储数据:
在1000H为起始地址的内存中存入16个数据:E 1000 16个数字
II)执行到断点:
G=100 J(J用实际地址代替),使程序运行并停在断点J上,
检查AX,BX的值并判断程序执行是否正确。
III)用T命令单步运行一步,观察程序方向(IP值)和CX值是否正确。
IV)重复II)和III)步,完成程序的调试;记录寄存器的变化情况和IP地址的变化V)连续执行程序: G 起始地址终止地址;检查AX值是否正确。
6)查看结果:D 内存地址
实验要求:记录程序运行结果,累加和存放的地址是多少?
3、多字节加法程序。
MOV DI,1000
MOV CX,8
MOV SI,2000
CLC
LOP: MOV AL,[SI]
ADC [DI],AL
INC SI
INC DI
LOOP LOP
INT 20
步骤:
1)输入程序;A 起始地址
2)在内存中存储数据:
E 1000 8字节被加数,
E 2000 8字节加数。
3)连续运行程序: G 起始地址终止地址
4)查看结果: D 内存地址
实验要求:记录运行结果,和存放的地址是多少?
思考:将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试一试。
4、自编程序(选做):
用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放
地址同上题。调试并做记录。
三、实验报告要求:
1、记录程序调试结果。
2、回答思考题。