(1)在debug中,用“d 0:01f”查看内存,结果如下。
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 88
下面的程序执行前,AX=0,BX=0,写出每条指令执行完后相关寄存器中的值。
MOV AX,1
MOV DS,AX
MOV AX,[0000] AX=2662
MOV BX,[0001] BX=E626
MOV AX,BX AX=E626
MOV AX,[0000] AX=2662
MOV BX,[0002] BX=D6E6
ADD AX,BX AX=FD48
ADD AX,[0004] AX=2C14
MOV AX,0 AX=0
MOV AL,[0002] AX=00E6
MOV BX,0 BX=0
MOV BL,[000C] BX=0026
ADD AL,BL AX=000C
(2)内存中的情况
各寄存器的初始值:CS=2000,IP=0,DS=1000,AX=0,BX=0
<1>写出CPU执行的指令序列(用汇编指令写出).
<2>写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
<3>再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?
答<1>:
mov ax,6622
jmp 0ff0:0100
mov ax,2000
mov ds,ax
mov ax,[0008]
mov ax,[0002]
答<2>:
汇编指令 CS IP DS AX BX
初始值 2000 0 1000 0 0
mov ax,6622 2000 3 1000 6622 0
jmp 0ff0:0100 0ff0 100 1000 6622 0
mov ax,2000 0ff0 103 1000 2000 0
mov ds,ax 0ff0 105 2000 2000 0
mov ax,[0008] 0ff0 108 2000 C389 0
mov ax,[0002] 0ff0 10B 2000 EA66 0
答<3>:
在计算机中数据和程序没有区别,都是以二进制形式存放的;
在任意刻,CPU将CS:IP指向的内容当作指令执行。