1实验3寻址方式实验一、实验目的1、熟练掌握DEBUG的常用命令。2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。3、掌握简单指令的执行过程。单步运行程序,通过观察窗口观察指令对寄存器中数据的影响二.实验要求:1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。2、本实验只要求在DEBUG调试程序状态下进行,包括调试程序和执行程序。三、实验内容1、立即寻址:-t;查看当前各寄存器数值,注意下一步地址指向AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1385ES=1385SS=1385CS=1385IP=0102NVUPEINGNZNAPONC1385:01020000ADD[BX+SI],ALDS:0000=CD-a;1385:0100movax,0110;源操作数为立即数寻址1385:0103-t=0100;单步执行,使下一步操作IP指针指向命令所在地址AX=0110BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1385ES=1385SS=1385CS=1385IP=0103NVUPEINGNZNAPONC1385:01030000ADD[BX+SI],ALDS:0000=CD22、寄存器寻址-a1385:0103movax,0100;目的操作数采用寄存器寻址,源操作数为立即数寻址1385:0106movbx,ax;两个操作数均为寄存器寻址1385:0108-t;观察ax内容发生改变AX=0100BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1385ES=1385SS=1385CS=1385IP=0106NVUPEINGNZNAPONC1385:010689C3MOVBX,AX-t;观察bx内容发生改变AX=0100BX=0100CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1385ES=1385SS=1385CS=1385IP=0108NVUPEINGNZNAPONC1385:01080000ADD[BX+SI],ALDS:0100=B83、直接寻址-a1385:0108movax,[2000]1385:010B-t;单步执行注意下一步地址指向,查看当前各寄存器数值,但是此处ax没有变化AX=0000BX=0100CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1385ES=1385SS=1385CS=1385IP=010BNVUPEINGNZNAPONC1385:010B0000ADD[BX+SI],ALDS:0100=B8-a1385:010Bmovax,[000a];重新输入直接寻址命令1385:010E-t=010B;单步执行,使下一步操作IP指针指向想要运行命令所在地址AX=034FBX=0100CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1385ES=1385SS=1385CS=1385IP=010ENVUPEINGNZNAPONC1385:010E0000ADD[BX+SI],ALDS:0100=B83;直接寻址成功,观察ax内容发生改变4、寄存器间接寻址-a1385:010Emovsi,0100;设置si内容为01001385:0111movax,[si];输入寄存器间接寻址命令1385:0113-t;单步执行,观察si内容已经改变AX=034FBX=0100CX=0000DX=0000SP=FFEEBP=0000SI=0100DI=0000DS=1385ES=1385SS=1385CS=1385IP=0111NVUPEINGNZNAPONC1385:01118B04MOVAX,[SI]DS:0100=10B8-t;单步执行,观察ax内容发生改变AX=10B8BX=0100CX=0000DX=0000SP=FFEEBP=0000SI=0100DI=0000DS=1385ES=1385SS=1385CS=1385IP=0113NVUPEINGNZNAPONC1385:01130000ADD[BX+SI],ALDS:0200=005、寄存器相对寻址-a1385:0113movdi,0110;设置di内容为01101385:0116movax,[di+06];输入寄存器相对寻址命令1385:0119-t;单步执行,观察di内容已经改变AX=10B8BX=0100CX=0000DX=0000SP=FFEEBP=0000SI=0100DI=0110DS=1385ES=1385SS=1385CS=1385IP=0116NVUPEINGNZNAPONC1385:01168B4506MOVAX,[DI+06]DS:0116=458B-t;单步执行,观察ax内容发生改变AX=458BBX=0100CX=0000DX=0000SP=FFEEBP=0000SI=0100DI=0110DS=1385ES=1385SS=1385CS=1385IP=0119NVUPEINGNZNAPONC1385:01190000ADD[BX+SI],ALDS:0200=0046、基址变址寻址-a1385:011Bmovcx,0001;设置cx内容为00011385:011Emovax,[cx+si];输入基址变址寻址命令,发生错误^Error;应该是地址超过ffffh导致1385:011Emovbp,0001;设置bp内容为00011385:0121movax,[bp+di];重新输入基址变址寻址命令1385:0123-t=011B;单步执行,观察si内容已经改变AX=0000BX=0100CX=0001DX=0000SP=FFEEBP=0000SI=0100DI=0110DS=1385ES=1385SS=1385CS=1385IP=011ENVUPEINGNZNAPONC1385:011EBD0100MOVBP,0001-t;单步执行,观察di内容已经改变AX=0000BX=0100CX=0001DX=0000SP=FFEEBP=0001SI=0100DI=0110DS=1385ES=1385SS=1385CS=1385IP=0121NVUPEINGNZNAPONC1385:01218B03MOVAX,[BP+DI]SS:0111=048B-t;单步执行,基址变址寻址命令运行,ax内容改变AX=048BBX=0100CX=0001DX=0000SP=FFEEBP=0001SI=0100DI=0110DS=1385ES=1385SS=1385CS=1385IP=0123NVUPEINGNZNAPONC1385:01230000ADD[BX+SI],ALDS:0200=007、相对基址变址寻址-a1385:0123movax,[bp+di+01];输入相对基址变址寻址命令1385:0126-t;单步执行,相对基址变址寻址命令运行,ax内容改变AX=BF04BX=0100CX=0001DX=0000SP=FFEEBP=0001SI=0100DI=0110DS=1385ES=1385SS=1385CS=1385IP=0126NVUPEINGNZNAPONC51385:01260000ADD[BX+SI],ALDS:0200=008、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,分析每条指令的源操作数物理地址的形成过程,并用单步执行的方法观察指令的执行结果,当数据传送完毕时,AX中的内容是什么。程序清单如下:MOVAX,BXMOVAX,0304HMOVAX,[0304H]MOVAX,[BX]MOVAX,[BX+0001]MOVAX,[BX+SI]MOVAX,[BX+SI+0001]HLT9、先使用DEBUG编写汇编程序、再使用DEBUG的跟踪命令P对上面程序进行单步跟踪,观察指令的执行结果。实验过程及结果:1)、进入DEBUG环境下,按以下步骤输入指令:62)分析上述指令执行后,各寄存器的值变化。3)用P命令单步跟踪,验证自己的分析结果,跟踪参考结果如下图所示:7四.实验报告:写出调试说明。包括上机调试的情况、步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。