实模式到保护模式nasm汇编语言问题
答案:1 悬赏:40 手机版
解决时间 2021-02-16 21:50
- 提问者网友:溺爱和你
- 2021-02-16 04:24
实模式到保护模式nasm汇编语言问题
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-02-16 05:59
习惯了ARM汇编,80x86的生疏了。下面是个人见解:
对标号和跳转指令的处理(gas,nasm,masm...),依赖于汇编器。
(1)jmp begin 不改变便CS,所以后面在没有长跳转之前CS一直是0100H。
后面有mov sp,0100h,应该是递减堆栈,大小为0x0100H。
(2)add eax,lablel_gdt
label_gdt 是相对于CS(0x0100H)的偏移,得到label_gdt的绝对地址。
(3)add eax,label_seg_code32
同理,也是没问题的,计算出label_seg_code32的绝对地址。
这种问题,只要想明白“绝对地址”和“相对地址”的概念就好说了。
开启保护模式之后,“段”的概念就不像8086那样了,这个也要转变一下观念。
根据汇编器的不同,长跳转的支持形式也有所不同。
jmp far ptr ...
jmp dword ptr...
建议搜索一下“段间跳转”。
对标号和跳转指令的处理(gas,nasm,masm...),依赖于汇编器。
(1)jmp begin 不改变便CS,所以后面在没有长跳转之前CS一直是0100H。
后面有mov sp,0100h,应该是递减堆栈,大小为0x0100H。
(2)add eax,lablel_gdt
label_gdt 是相对于CS(0x0100H)的偏移,得到label_gdt的绝对地址。
(3)add eax,label_seg_code32
同理,也是没问题的,计算出label_seg_code32的绝对地址。
这种问题,只要想明白“绝对地址”和“相对地址”的概念就好说了。
开启保护模式之后,“段”的概念就不像8086那样了,这个也要转变一下观念。
根据汇编器的不同,长跳转的支持形式也有所不同。
jmp far ptr ...
jmp dword ptr...
建议搜索一下“段间跳转”。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯