检测点3.1
(1)
寄存器是互相独立的
(2)内存中的情况如图3.6所示
各寄存器的初始值: CS=2000H, IP=0, DS=1000H, AX=0, BX=0;
①写出CPU执行的指令序列(用汇编指令写出)
CS:IP
2000H*10H+0=20000H 物理地址
20000H对应指令——》mov ax,6622H
jmp 0ff0:0100H
FF0H*10H+100H=10000H——》mov ax,2000H
mov ax,[0000]
mov ax,[0002]
读到指令缓冲器中
IP=IP+所读指令的长度(字节数)
执行指令缓器中的内容,回到第一步
②写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
mov ax,6622H cs=2000H ip=0+3=3 ax=6622H
jmp 0ff0:0100H cs=2000H ip=3+5=8
mov ax,2000H cs=0FF0H ip=100H+3=103H AX=2000H
mov ds,ax cs=0FF0H ip=103H+2=105H DS=2000H 2000:8 C389H
mov ax,[0000] CS=0FF0H ip=105H+3=108H ax=C389H
mov ax,[0002] cs=0FF0H ip=108H+3=10BH ax=EA66H 2000:2 EA66H
③再次体会:数据和程序(就是指令)有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?
CS:IP读取的都是指令
DS:【偏移地址】 读取 当作数据
去修改寄存器中的内容 去决定 数据从哪里来 指令从哪里来