实验二 内存操作数及寻址方法1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、回答思考题。

相关文档
最新文档