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

发布时间 : 星期一 文章实验2 内存操作数及寻址方法更新完毕开始阅读

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

2.1 实验目的

通过实验掌握下列知识: ①DEBUG命令:G,N,W,L及Q。

②8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。 ③8088指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。 ④8088汇编语言伪操作:BYTE PTR,WORD PTR。 ⑤求累加和程序和多字节加减法程序。

2.2 实验类型

验证型实验

2.3 实验内容及步骤

2.3.1 内存操作数及各种寻址方式使用 1. 实验程序 MOV MOV MOV MOV MOV INC MOV DEC MOV MOV MOV MOV

AX,1234 [1000],AX BX,1002

BYTE PTR [BX],20 DL,39 BX [BX],DL DL SI,3 [BX+SI],DL [BX+SI+1],DL

WORD PTR [BX+SI+2],2846

2. 实验步骤

1)用A命令键入上述程序,并用T命令逐条运行。

2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容

注明是什么寻址方式。

写出段地址和偏移地址,各指令的功能

3. 注意

D命令显示结果中右边的ASCII字符及双字节数存放法。 4. 思考

有关指令中BYTE PTR及WORD PTR伪操作不加行不行? -A0100

0B40:0100 MOV AX,1234 //立即数寻址方式 0B40:0103 MOV [1000],AX //存储器直接寻址 0B40:0106 MOV BX,1002 //立即数寻址方式

0B40:0109 MOV BYTE PTR [BX],20 // 用BYTE PTR 伪指令来指定操作数的长度 0B40:010C MOV DL,39 //立即数寻址方式

0B40:010E INC BX //寄存器寻址 INC增量指令,操作数自加1 0B40:010F MOV [BX],DL //存储器间接寻址

0B40:0111 DEC DL //寄存器寻址 DEC减量指令,操作数自减1 0B40:0113 MOV [BX],DL //存储器间接寻址

0B40:0115 DEC DL //寄存器寻址 DEC减量指令,操作数自减1 0B40:0117 MOV SI,3 //寄存器相对寻址 0B40:011A MOV [BX+SI],DL //基址加变址寻址 0B40:011C MOV [BX+SI+1],DL //相对基址加变址寻址

0B40:011F MOV WORD PTR [BX+SI+2],2846 //相对基址加变址寻址(段内间接寻址) 0B40:0124 -T=0100

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B40 ES=0B40 SS=0B40 CS=0B40 IP=0103 NV UP EI PL NZ NA PO NC 0B40:0103 A30010 MOV [1000],AX DS:1000=1AEB -T

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B40 ES=0B40 SS=0B40 CS=0B40 IP=0106 NV UP EI PL NZ NA PO NC 0B40:0106 BB0210 MOV BX,1002 -D 0B40:1000

0B40:1000 34 12 55 51 E8 A6 FF 8B-E9 59 CD 21 73 02 EB 0B 4.UQ.....Y.!s...

2.3.2 求累加和程序 1. 实验程序 MOV MOV SUB LOP:ADD

ADC INC J: LOOP

INT3 2. 实验步骤

1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)。 4)用命令W100将此程序存到AA命名的磁盘文件中。 5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。

7)用E命令在内存地址1000H处键入16个数字

8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。

9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。

10)重复GJ与T,再检查AX是否正确。

11)用G命令使程序运行到结束,检查AX值是否正确。 2.3.3 多字节加法程序 1. 实验程序

MOV MOV MOV CLC

DI,1000 CX,8 SI,2000 BX,1000 CX,10 AX,AX AL,[BX] AH,0 BX LOP

LOP: MOV

ADC INC INC

AL,[SI] [DI],AL SI DI

LOOP LOP INT

2. 实验步骤

1)用命令键入此程序。

2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确? 4)将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试一试。

20

2.4 自编程序

用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同上题。调试并做记录。

2.5 实验报告

① 各项实验结果记录。

② 自编程序原稿及调试后修正稿,写出原稿错在那里。

联系合同范文客服:xxxxx#qq.com(#替换为@)