(1)在Debug中,用“d 0:0 1f”查看内存,结果如下

下面程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值。
| 执行指令 |
AX |
BX |
DS |
| mov ax,1 |
0001 |
0000 |
0000 |
| mov ds,ax |
0001 |
0000 |
0001 |
| mov ax,[0000] |
2662 |
0000 |
0001 |
| mov bx,[0001] |
2662 |
E626 |
0001 |
| mov ax,bx |
E626 |
E626 |
0001 |
| mov ax,[0000] |
2662 |
E626 |
0001 |
| mov bx,[0002] |
2662 |
D6E6 |
0001 |
| add ax,bx |
FD48 |
D6E6 |
0001 |
| add ax,[0004] |
2C14 |
D6E6 |
0001 |
| mov ax,0 |
0000 |
D6E6 |
0001 |
| mov al,[0002] |
00E6 |
D6E6 |
0001 |
| mov bx,0 |
00E6 |
0000 |
0001 |
| mov bl,[000C] |
00E6 |
0006 |
0001 |
| add al,bl |
0026 |
0006 |
0001 |
(2)内存的情况如图所示。
各寄存器的初始值:CS=2000H, IP=0, DS = 1000H, AX=0, BX=0;
(1)写出CPU执行的指令序列(用汇编写出)
(2)写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
(3)再次体会:数据和程序有区别么,如何确定内存中的信息是哪些数据,哪些是程序?

| 执行指令 |
CS |
IP |
DS |
AX |
BX |
| mov ax,6622H |
2000 |
0000 |
1000 |
0000 |
0000 |
| jmp 0ff0:0100 |
2000 |
0003 |
1000 |
6622 |
0000 |
| mov ax,2000H |
0ff0 |
0100 |
1000 |
6622 |
0000 |
| mov ds,ax |
0ff0 |
0103 |
1000 |
2000 |
0000 |
| mov ax,[0008] |
0ff0 |
0105 |
2000 |
2000 |
0000 |
| mov ax,[0002] |
0ff0 |
0108 |
2000 |
C389 |
0000 |
|
0ff0 |
010B |
2000 |
EA66 |
0000 |
由此可见,数据和指令在内存中是无差别存在的,其区别在于解释的方式不同,由CS:IP指向的数据为指令,而进行其他运算移位等操作时,所指向的地址均为数据。
相关文章:
-
2021-08-01
-
2022-01-06
-
2022-12-23
-
2022-12-23
-
2022-12-23
-
2021-07-22
-
2022-02-16
-
2021-09-30
猜你喜欢
-
2021-10-29
-
2021-04-20
-
2022-01-07
-
2022-12-23
-
2022-12-23
-
2022-12-23
-
2022-12-23
相关资源
-
下载
2022-12-04
-
下载
2023-03-17
-
下载
2023-03-24