8086问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:17:03
书上写8086复位后CS=FFFFH,IP=0000H,故CPU总是从FFFF0地址开始读指令,这地方要放一条JMP转到真正程序地址,那么这个JMP是谁放的呢?是汇编程序还是我们写的呢?
请问,那我是不是可以理解成,程序是汇编选择位置存放,然后自动生成一条指令在FFFF0里,跳到真正程序执行的地方呢?还有,在数据段定义DW 1,2,3.这块定义有何用呢?如果说是汇编给他分配地址的话,分的只是偏 移地址吧,应该不是定位在内存的具体单元吧,谢谢。我这块遇到问题想不通。

当然是汇编写了。你写的话你怎么写?jmp是代码吧,代码你就得写在代码段吧,难道你直接把代码段从这里FFFF0开始吗?明显不是,代码段的cs一般是汇编弄的,从这个你就知道这个jmp不是你弄的了。一般不都是assume cs:code。
code不一定是ffff0h吧?那cs:ip不是你的jmp了。
这只是相对最小系统而说的。
IBM pc中,8086 CPU 加电或复位后 CS和IP 被设置为 cs=FFFFH ip=0000H 执行跳转指令 执行bios检测和初始化程序 调用int 19h中断 进行操作系统引导。
org是和第个段相距多少的,也就是和段首址的偏址,假设org是代码段内,ORG 100H 就是说接下来的第一条代码相距这个代码段段首址100H处。
你想放到哪就放到哪呗,如果不想的话那你就不用写了。汇编会帮你完成放在哪里的了。
理论上你放不到吧,你放不到CS=FFFFH,IP=0000H,因为这ORG只是个偏址,不是实址。实址一般要汇编之后才产生。