⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 80386asm程序设计基础(一).htm

📁 80386ASM的程序设计基础教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <TR bgColor=#999999>
    <TD colSpan=3 height=1></TD></TR></TBODY></TABLE>
<TABLE width=770 border=0>
  <TBODY>
  <TR>
    <TD class=td1 vAlign=top align=middle width=150 bgColor=#fafafa><BR><!--广告条开始//-->
      <SCRIPT src="80386ASM程序设计基础(一).files/other.js"></SCRIPT>
<!--广告条结束//--></TD>
    <TD align=middle width=620><!--文章说明信息开始//-->
      <TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#eeeeee border=0>
        <TBODY>
        <TR bgColor=#ffffff>
          <TD align=middle width=50 height=10></TD>
          <TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A 
            href="http://www.csdn.net/develop/">文档中心</A> - <FONT 
            color=#003399>其他开发语言 </FONT>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399 height=10><FONT 
            color=#ffffff>标题</FONT></TD>
          <TD><B>&nbsp;&nbsp;&nbsp;&nbsp;80386ASM程序设计基础(一)</B>&nbsp;&nbsp;&nbsp;&nbsp;kingcaiyao(原作) 
          </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
          <TD width=500>&nbsp;&nbsp;&nbsp;&nbsp;80386ASM</TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
      <TABLE width=600 border=0>
        <TBODY>
        <TR>
          <TD align=left><!--内容开始//--><BR>&nbsp;&nbsp;&nbsp; 80386 
            ASM程序设计基础,呵呵,这是最近一段时间我的业余爱好。本期将连续推出若干篇有关80386ASM程序设计的基础,主要介绍80386ASM指令的详细用法及如何在80386实模式下,保护模式下及虚拟8086模式编程以及我会详细介绍80386下的段页管理机制,我会将80386下的指令与8086下的相同指令进行比较。在你去看罗云彬的ASM编程之前,不妨先看看我的基础篇,希望有志于从事汇编语言的朋友,多提意见。<BR>&nbsp;&nbsp;&nbsp; 
            80386处理器是Intel公司80x86发展史上的里程碑,它不但兼容先前的8086/8088,80186,80286处理器,而且也为后来的486,Pentium(586),Pentium 
            Pro(686)的发展打下了坚实的基础,对于我们程序员来讲更重要的是:我们关心80386在指令上到底有哪些扩展呢?80386有哪些寻址方式呢?毫无疑问,它不但兼容了8086的所有指令,而且还对它们进行增强.<BR>&nbsp;&nbsp;&nbsp; 
            呵呵,我知道有很多人问我CPU已经发展到PentiumIIII,没有必要学习80386的汇编。其实不然,80386处理器中的保护模式,虚拟8086模式以及地址的段页管理机制,虚拟内存这些都是以后处理器的核心。所以说80386是后续发展处理器的基础,比如说80486实质上80386+80387协处理,这块协处理器主要用于处理浮点运算,Pentium处理器在80386指令的基础上增加了57条指令,8个数据类型,8个64位的寄存器来处理多媒体。从这一点来看,完全有必要了解80386ASM,这就好像学习80386,必须先要熟练掌握8086。<BR>&nbsp;&nbsp;&nbsp; 
            1.80386的的寄存器:<BR>&nbsp;&nbsp;&nbsp; 
            80386的寄存器可以分为8组:通用寄存器,段寄存器,指令指针寄存器,标志寄存器,系统地址寄存器,控制寄存器,调试寄存器,测试寄存器,它们的宽度都是32位的。本篇主要介绍80386的寄存器。<BR>&nbsp;&nbsp;&nbsp; 
            A1.General Register(通用寄存器)<BR>&nbsp;&nbsp;&nbsp; 
            EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP,它们的低16位就是8086的AX,BX,CX,DX,SI,DI,SP,BP,它们的含义如下:<BR>&nbsp;&nbsp;&nbsp; 
            EAX:累加器<BR>&nbsp;&nbsp;&nbsp; EBX:基址寄存器<BR>&nbsp;&nbsp;&nbsp; 
            ECX:计数器<BR>&nbsp;&nbsp;&nbsp; EDX:数据寄存器<BR>&nbsp;&nbsp;&nbsp; 
            ESI:源地址指针寄存器<BR>&nbsp;&nbsp;&nbsp; 
            EDI:目的地址指针寄存器<BR>&nbsp;&nbsp;&nbsp; 
            EBP:基址指针寄存器<BR>&nbsp;&nbsp;&nbsp; ESP:堆栈指针寄存器<BR>&nbsp;&nbsp;&nbsp; 
            这些寄存器可以将低16位单独存取,也就是8086的AX,BX,CX,DX,SI,DI,SP,BP,在存取这些寄存器的低16位(AX,BX,CX,DX,SI,DI,SP,BP),它<BR>们的高16位不受影响,同时和8086一样对于AX,BX,CX,DX这四个寄存器来讲,可以单独存取它们的高8位和低8位(AH,AL,BH,BL,CH,CL,DH,DL)<BR>&nbsp;&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp;&nbsp; A2:Segment 
            Register(段寄存器)<BR>&nbsp;&nbsp;&nbsp; 
            除了8086的4个段外(CS,DS,ES,SS),80386还增加了两个段FS,GS,这些段寄存器都是16位的,它们的含义如下:<BR>&nbsp;&nbsp;&nbsp; 
            CS:代码段(Code Segment)<BR>&nbsp;&nbsp;&nbsp; DS:数据段(Data 
            Segment)<BR>&nbsp;&nbsp;&nbsp; ES:附加数据段(Extra 
            Segment)<BR>&nbsp;&nbsp;&nbsp; SS:堆栈段(Stack 
            Segment)<BR>&nbsp;&nbsp;&nbsp; FS:附加段<BR>&nbsp;&nbsp;&nbsp; GS&nbsp; 
            附加段<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; A3:Instruction 
            Pointer(指令指针寄存器)<BR>&nbsp;&nbsp;&nbsp; 
            EIP,它的低16位就是8086的IP,它存储的是下一条要执行指令的地址。<BR>&nbsp;&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp;&nbsp; A4:Flag Register(标志寄存器)<BR>&nbsp;&nbsp;&nbsp; 
            EFLAGS,和8086的16位标志寄存器相比,增加了4个控制位,不过这4个控制位它们在实模下不起作,这四个控制位分别是:<BR>&nbsp;&nbsp;&nbsp; 
            a.IOPL(I/O Privilege 
            Level),I/O特权级字段,它的宽度为2bit,它指定了I/O指令的特权级。如果当前的特权级别在数值上小于或等于IOPL,那么I/O指令可执行。否则,将发生一个保护性异常。&nbsp;&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp;&nbsp; b.NT(Nested 
            Task):控制中断返回指令IRET,它宽度为1位。NT=0,用堆栈中保存的值恢复EFLAGS,CS和EIP从而实现中断返回;NT=1,则通过任务切换实现中断返回。<BR>&nbsp;&nbsp;&nbsp; 
            c.RF(Restart 
            Flag):重启标志,它的宽度是1位。它主要控制是否接受调试故障。RF=0接受,RF=1忽略。如果你的程序每一条指令都被成功执行,那么RF会被清0。而当接受到一个非调试故障时,处理器置RF=1。<BR>&nbsp;&nbsp;&nbsp; 
            d.VM(Virtual 
            Machine):虚拟8086模式(用软件来模拟8086的模式,所以也称虚拟机)。VM=0,处理器工作在一般的保护模式下;VM=1,工作在V8086模式下。<BR>&nbsp;&nbsp;&nbsp; 
            其它16个标志位的含义和8086一样,在这里也重温一遍:<BR>&nbsp;&nbsp;&nbsp; e.CF(Carry 
            Flag):进位标志位,由CLC,STC两标志位来控制<BR>&nbsp;&nbsp;&nbsp; f.PF(Parity 
            Flag):奇偶标志位<BR>&nbsp;&nbsp;&nbsp; g.AF(Assistant Flag):辅助进位标志位 
            <BR>&nbsp;&nbsp;&nbsp; h.ZF(Zero Flag):零标志位<BR>&nbsp;&nbsp;&nbsp; 
            i.SF(Singal Flag):符号标志位<BR>&nbsp;&nbsp;&nbsp; j.IF(Interrupt 
            Flag):中断允许标志位,由CLI,STI两条指令来控制<BR>&nbsp;&nbsp;&nbsp; k.DF(Direction 
            Flag):向量标志位,由CLD,STD两条指令来控制<BR>&nbsp;&nbsp;&nbsp; l.OF(Overflow 
            Flag):溢出标志位。<BR>&nbsp;&nbsp;&nbsp; 
            控制寄存器,系统地址的寄存器,调试寄存器,测试寄存器将在介绍完80386分段,分页管理机制后介绍,请继续关注第二篇“80386存储器的寻址方式”。<BR>&nbsp;&nbsp;&nbsp;<BR><!--内容结束//--></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><!--文章评论开始//-->
<TABLE cellSpacing=0 cellPadding=0 width=770 align=center bgColor=#006699 
border=0>
  <TBODY>
  <TR bgColor=#006699>
    <TD id=white align=middle bgColor=#006699><FONT 
    color=#ffffff>对该文的评论</FONT></TD>
    <TD align=middle><!--文章人气开始//-->
      <SCRIPT src="80386ASM程序设计基础(一).files/readnum.htm"></SCRIPT>
<!--文章人气开始//--></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=2 width=770 align=center bgColor=#666666 
border=0>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="80386ASM程序设计基础(一).files/ico_pencil.gif" width=16> 
      </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; flyrocer <I>(2003-7-12 13:16:42)</I> 
</TD></TR>
  <TR>
    <TD width=532 bgColor=#ffffff colSpan=3><BR>收藏。。。。。 
<BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=2 width=770 align=center bgColor=#666666 
border=0>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="80386ASM程序设计基础(一).files/ico_pencil.gif" width=16> 
      </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; flyrocer <I>(2003-7-6 22:47:23)</I> </TD></TR>
  <TR>
    <TD width=532 bgColor=#ffffff colSpan=3><BR>UP <BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=2 width=770 align=center bgColor=#666666 
border=0>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="80386ASM程序设计基础(一).files/ico_pencil.gif" width=16> 
      </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; bigwhiteshark <I>(2003-6-25 9:28:00)</I> 
    </TD></TR>
  <TR>
    <TD width=532 bgColor=#ffffff colSpan=3><BR>收藏在说 <BR></TD></TR></TBODY></TABLE><!--文章评论结束//--><BR>
<DIV align=center>
<TABLE cellSpacing=1 cellPadding=2 width=770 align=center bgColor=#cccccc 
border=0>
  <TBODY>
  <TR>
    <TH id=white bgColor=#006699><FONT 
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE width=770 border=0>
  <TBODY>
  <TR>
    <TD>你没有登陆,无法发表评论。 请先<A 
      href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=17343">登陆</A> 
      <A 
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR width=770 noShade SIZE=1>

<TABLE cellSpacing=0 cellPadding=0 width=500 border=0>
  <TBODY>
  <TR align=middle>
    <TD vAlign=bottom height=10><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      height=48 src="80386ASM程序设计基础(一).files/biaoshi.gif" width=40 
    border=0></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--结束//--></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -