CPU从何处执行指令是有CS、IP中的内容决定的,mov指令不能用来修改CS、IP的值,修改CS、IP的指令为“jmp 段地址:偏移地址”,例如jmp 2AE3:3,执行后,CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。jmp也可以用来修改 IP的内容:“jmp 寄存器”,如 jmp ax,这是IP的内容极为ax中的内容。
代码段:将一段内存当做代码段,要让CPU执行代码段中的指令,必须将CS:IP指向所定义的代码段中的第一条指令的首地址。
Debug:DOS、Windows提供的实模式程序调试工具。用来查看CPU寄存器、内存的内容何在机器码级跟踪程序的运行。
Debug的功能:
R:查看、修改CPU寄存器中的内容。
E:修改内存中的内容。
U:将内存中的机器指令翻译成汇编指令。
T:执行一条机器指令。
A: 以汇编指令形式在内存中写入一条机器指令。
寄存器/内存访问:DS寄存器用来存放要访问数据的段地址,例如读取1000H单元的内容:
mov bx,1000h
mov ds,bx ;8086CPU不支持直接将地址送入段寄存器
mov al,[0] ; [0]中的0表示内存单元的偏移地址,自动取ds中数据为内存单元的段地址