1、实验 1 DEBUG 的使用实验 1、 进入 Debug 环境,完成下列步骤,熟悉 DEBUG 指令。1、 用 R 命令查看寄存器的值,将 AX 的值修改为 1,BX 的值修改为 10。2、 用 D 命令查看内存 0:0200 处的内容。3、 用 E 命令将 ”I am a student!”写入内存 0:0200 处。用 D 命令查看是否写入成功。4、 用 A 命令向内存 0:0210 处写入汇编指令MOV AX,1234MOV BX,0158ADD AX, BX(注意:在一般的 PC 机中, DOS 方式下,DOS 和其他合法的程序一般都不会使用0:2000:2FF( 0:200h0:2F
2、Fh)的 256 个字节的空间。所以,我们使用这段空间是安全的。)5、 使用 U 命令反汇编,并用 T 命令执行指令,查看执行后的结果,3 条指令执行后 AX的值为多少?实验 2、 使用 Debug 命令设置下列寄存器及存储器的内容( DS)=2000H, (BX)=0100H, (SI)=0002H, (20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H.,用汇编(A )、单步执行(T)等命令求解下列7 个问题的答案,记录每条指令执行后 AX
3、 的值并分析每条指令中源操作数使用的是何种寻址方式。 (1)MOV AX,1200H(2) MOV AX,BX(3) MOV AX,1200H(4) MOV AX,BX(5) MOV AX,1100BX(6) MOV AX,BXSI(7) MOV AX,1100BXSI各种寻址方式的特点:(1) 立即寻址方式:操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段;(2) 寄存器寻址方式:操作数在寄存器中,指令指定寄存器号;(3) 直接寻址方式:操作数的有效地址包含位移量的一种成分,其值就存放在中指令的操作码之后;(4) 寄存器间间接寻址:操作数的有效地址只包含基址寄存器内容
4、或变址寄存器内容的一种成分;(5) 寄存器相对寻址方式:操作数的有效地址为基址寄存器或变址寄存器的内容和指令中指定的位移量之和,所以有效地址由两种成分组成;(6) 基址变址寻址方式:操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,所以有效地址由两种成分组成;(7) 相对基址变址寻址方式操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和指令中指定的位移量之和,所以有效地址由三种成分组成。实验 3、 用 A 命令写入汇编指令,使用寄存器、段寄存器、存储器和立即数等作为操作数,验证 mov、add 等指令的格式并得出结论。汇编指令的格式特点:(1)立即数不能传给段寄存器(如:MOV
5、 CS,1000H),寄存器和存储器操作数都可以传给段寄存器(如:MOV CS,AX / MOV CS, 1000H);(2)不允许段寄存器之间的直接数据传送(如:MOV DS,ES) ; (3)不允许修改 IP 的值;(4)ADD 指令只允许在通用寄存器和存储器间操作,不允许有专用寄存器和段寄存器作为。实验 4、 将下面 3 条指令写入从 2000:0 开始的内存单元中,利用这 3 条指令计算 2 的 8 次方,体会 jmp 指令的作用。mov ax, 1add ax, axjmp 2000:003 (注:jmp 指令将 CS:IP 转移到 2000:003)解:(1)jmp 指令的作用:无条件的转移到指令指定的地址去执行从该地址开始的命令,指令必须指定转移的目标地址(或称转向地址) 。(2)计算 2 的 8 次方 add ax,ax 指令执行了 8 次。实验 5、 PC 机主板上的 ROM 中写有一个生产日期,在内存 FFF00H-FFFFFH 的某几个单元中,请找到这个生产日期并试图改变它。解释现象。解:生产日期在 FFFF5 该单元中,用 E 指令修改不了其值,因 ROM 中的内容是不能改变的。