16位代码段与32位代码段的区别

16位代码段与32位代码段的区别:

16位代码段与32位代码段的区别如下:

16位代码段最长只能为64k,段内偏移量为16位,默认的指令地址及操作地址为16位;

32位代码段最长可以4G,段内偏移量为32位,默认的指令地址及操作地址为32位。

是否能够使用   eax,   edx   等寄存器与是否使用16位代码段及32位代码段无关。16位代码段、32位代码段都可以使用   eax,   edx   等寄存器。

如果要使用   eax,   edx   等32位寄存器,必须在代码中指定   .386,   .386p,   .486,   .486p   等指示符。

在DOS实模式下,只能使用16位代码段。

在MASM中,如果把   .386,   .386p,   .486,   .486p   等指示符放在   .model   之前,那么所有的段(数据段、代码段)默认为32位; 如果把   .386,   .386p,   .486,   .486p   等指示符放在   .model   之后,那么所有的段(数据段、代码段)默认为16位。

可以在定义段时,用   USE16   或   USE32   明确指定是使用16位的段(数据段、代码段)还是32位的段(数据段、代码段)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 汇编基础教程 16位和32位的80x86汇编语言的区别 需要注意的是汇编不是一种语言,不同平台有不同的汇编语言对应...
    inwunwe阅读 13,144评论 2 19
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,381评论 0 27
  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 10,219评论 1 19
  • 原文作者 Sandeep.S英文原文 [https://www.ibiblio.org/gferg/ldp/GCC...
    JeffreyLi阅读 40,477评论 8 41
  • 周六。昨天又喝多了,和公安上的几个朋友多日不见,又加上前些日子有事相求人家,一直也没有到,现在遇到了道谢的机会。整...
    星之梦lyx阅读 1,131评论 0 0