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

《汇编语言》(王爽)检测点3.1

下面程序执行前,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)再次体会:数据和程序有区别么,如何确定内存中的信息是哪些数据,哪些是程序?

《汇编语言》(王爽)检测点3.1

执行指令 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
相关资源
相似解决方案