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

📄 +Ҧ

📁 siglechip_development 单片机开发资料
💻
📖 第 1 页 / 共 4 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0036)http://go.163.com/~czlyzhj/masm3.htm -->
<HTML><HEAD><TITLE>汇编指令的格式(伪指令)</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2314.1000" name=GENERATOR></HEAD>
<BODY bgColor=#cccccc><B>
<P align=center><FONT face=黑体 lang=ZH-CN size=5>第四节</FONT><FONT face=Arial 
size=5> </FONT><FONT face=黑体 lang=ZH-CN size=5>伪</FONT><FONT face=Arial size=5> 
</FONT><FONT face=黑体 lang=ZH-CN size=5>指</FONT><FONT face=Arial size=5> 
</FONT><FONT face=黑体 lang=ZH-CN size=5>令</FONT></P><FONT face=黑体 lang=ZH-CN 
size=5>
<P></P></FONT></B><FONT face=宋体 lang=ZH-CN size=3>
<P align=justify></P></FONT>
<P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
size=3>伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。</FONT></P>
<P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
size=3>许多伪指令要求带参数,这在定义伪指令时由“表达式”域指出,任何数值与表达式匀可以作为参数。</FONT></P>
<P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
size=3>不同汇编程序允许的伪指令并不相同,以下所述的伪指令仅适用于MASM51系统,但一些基本的伪指令在大部份汇编程序中都能使用,当使用其它的汇编程序版本时,只要注意一下它们之间的区别就可以了。MASM51中可用的伪指令有:</FONT></P>
<P align=justify><FONT face=Arial size=3>ORG </FONT><FONT face=宋体 lang=ZH-CN 
size=3>设置程序起始地址</FONT></P>
<P align=justify><FONT face=Arial size=3>END </FONT><FONT face=宋体 lang=ZH-CN 
size=3>标志源代码结束</FONT></P>
<P align=justify><FONT face=Arial size=3>EQU </FONT><FONT face=宋体 lang=ZH-CN 
size=3>定义常数</FONT></P>
<P align=justify><FONT face=Arial size=3>SET </FONT><FONT face=宋体 lang=ZH-CN 
size=3>定义整型数</FONT></P>
<P align=justify><FONT face=Arial size=3>DATA </FONT><FONT face=宋体 lang=ZH-CN 
size=3>给字节类型符号定值</FONT></P>
<P align=justify><FONT face=Arial size=3>BYTE </FONT><FONT face=宋体 lang=ZH-CN 
size=3>给字节类型符号定值</FONT></P>
<P align=justify><FONT face=Arial size=3>WROD </FONT><FONT face=宋体 lang=ZH-CN 
size=3>给字类型符号定值</FONT></P>
<P align=justify><FONT face=Arial size=3>BIT </FONT><FONT face=宋体 lang=ZH-CN 
size=3>给位地址取名</FONT></P>
<P align=justify><FONT face=Arial size=3>ALTNAME </FONT><FONT face=宋体 lang=ZH-CN 
size=3>用自定义名取代保留字</FONT></P>
<P align=justify><FONT face=Arial size=3>DB </FONT><FONT face=宋体 lang=ZH-CN 
size=3>给一块连续的存储区装载字节型数据</FONT></P>
<P align=justify><FONT face=Arial size=3>DW </FONT><FONT face=宋体 lang=ZH-CN 
size=3>给一块连续的存储区装载字型数据</FONT></P>
<P align=justify><FONT face=Arial size=3>DS </FONT><FONT face=宋体 lang=ZH-CN 
size=3>预留一个连续的存储区或装入指定字节。</FONT></P>
<P align=justify><FONT face=Arial size=3>INCLUDE </FONT><FONT face=宋体 lang=ZH-CN 
size=3>将一个源文件插入程序中</FONT></P>
<P align=justify><FONT face=Arial size=3>TITLE </FONT><FONT face=宋体 lang=ZH-CN 
size=3>列表文件中加入标题行</FONT></P>
<P align=justify><FONT face=Arial size=3>NOLIST </FONT><FONT face=宋体 lang=ZH-CN 
size=3>汇编时不产生列表文件</FONT></P>
<P align=justify><FONT face=Arial size=3>NOCODE </FONT><FONT face=宋体 lang=ZH-CN 
size=3>条件汇编时,条件为假的不产生清单</FONT></P>
<OL><FONT face=宋体 lang=ZH-CN size=3></FONT><B>
  <P align=justify><FONT face=宋体 lang=ZH-CN></FONT><FONT face=宋体 
  lang=ZH-CN>一、</FONT><FONT face=Arial>ORG</FONT><FONT face=Arial> </FONT><FONT 
  face=Arial>
  <P></P></FONT></B>
  <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
  size=3>伪指令</FONT><FONT face=Arial size=3>ORG</FONT><FONT face=宋体 lang=ZH-CN 
  size=3>用于为在它之后的程序设置地址值,它有一个参数,其格式为:</FONT></P>
  <P align=justify><FONT face=Arial size=3>ORG </FONT><FONT face=宋体 lang=ZH-CN 
  size=3>表达式</FONT></P>
  <P align=justify><FONT face=宋体 lang=ZH-CN 
  size=3>表达式可以是一个具体的数值,也可以包含变量名,如果包含变量名,则必须保证,当第一次遇到这条伪指令时,其中的变量必须已有定义(已有具体的数值),否则,无定义的值将由</FONT><FONT 
  face=Arial size=3>0</FONT><FONT face=宋体 lang=ZH-CN 
  size=3>替换,这将会造成错误。在列表文件中,由</FONT><FONT face=Arial size=3>ORG</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>定义的指令地址会被打印出来。</FONT></P>
  <P align=justify><FONT face=Arial size=3>ORG</FONT><FONT face=宋体 lang=ZH-CN 
  size=3>指令有什么用途呢?指令被翻译成机器码后,将被存入系统的ROM中,一般情况下,机器码总是一个接一个地放在存储器中,但有一些代码,其位置有特殊要求,典型的是五个中断入口,它们必须被放在</FONT><FONT 
  face=Arial size=3>0003H,000BH,0013H,001BH</FONT><FONT face=宋体 lang=ZH-CN 
  size=3>和</FONT><FONT face=Arial size=3>0023H</FONT><FONT face=宋体 lang=ZH-CN 
  size=3>的位置,否则就会出错,如果我们编程时不作特殊处理,让机器代码一个接一个地生成,不能保证这些代码正好处于这些规定的位置,执行就会出错,这时就要用到</FONT><FONT 
  face=Arial size=3>ORG</FONT><FONT face=宋体 lang=ZH-CN 
  size=3>伪指令了。看如下例子:</FONT></P>
  <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
  size=3>例:</FONT></P><I><FONT face=Arial size=3>
  <P align=justify>INT_0 EQU 1000H</P>
  <P align=justify>TIME_0 EQU 1010H</P>
  <P align=justify>INT_1 EQU 1020H</P>
  <P align=justify>TIME_1 EQU 1030H</P>
  <P align=justify>SERIAL EQU 1040H</P></FONT>
  <P align=justify><FONT face=Arial size=3>AJMP START ;</FONT><FONT face=宋体 
  lang=ZH-CN size=3>跳转到主程序起始点</FONT></P>
  <P align=justify><FONT face=Arial size=3>LJMP INT_0 ;</FONT><FONT face=宋体 
  lang=ZH-CN size=3>外中断</FONT><FONT face=Arial size=3>0</FONT><FONT face=宋体 
  lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>LJMP TIME_0 ;</FONT><FONT face=宋体 
  lang=ZH-CN size=3>定时中断</FONT><FONT face=Arial size=3>0</FONT><FONT face=宋体 
  lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>LJMP INT_1 ;</FONT><FONT face=宋体 
  lang=ZH-CN size=3>外中断</FONT><FONT face=Arial size=3>1</FONT><FONT face=宋体 
  lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>LJMP TIME_1 ;</FONT><FONT face=宋体 
  lang=ZH-CN size=3>定时中断</FONT><FONT face=Arial size=3>1</FONT><FONT face=宋体 
  lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>LJMP SERIAL ;</FONT><FONT face=宋体 
  lang=ZH-CN size=3>串行口中断程序</FONT></P><FONT face=Arial size=3>
  <P align=justify>START:</P>
  <P align=justify>NOP</P>
  <P align=justify>END</P></FONT></I>
  <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
  size=3>上面的程序经汇编后列表文件如下</FONT><FONT face=Arial size=3>:</FONT></P><FONT 
  face=Arial size=3>
  <P align=justify></P><I>
  <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
  3.03 Page 1</P>
  <P align=justify>08-26-96</P>
  <P align=justify></P>
  <P align=justify> </P>
  <P align=justify>1000 = INT_0 EQU 1000H</P>
  <P align=justify>1010 = TIME_0 EQU 1010H</P>
  <P align=justify>1020 = INT_1 EQU 1020H</P>
  <P align=justify>1030 = TIME_1 EQU 1030H</P>
  <P align=justify>1040 = SERIAL EQU 1040H</P></I></FONT>
  <P align=justify><I><FONT face=Arial size=3>0000 0111 AJMP START 
  ;</FONT></I><I><FONT face=宋体 lang=ZH-CN size=3>跳转到主程序起始点</FONT></I></P><I>
  <P align=justify><FONT face=Arial size=3>0002 021000 LJMP INT_0 ;</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>外中断</FONT><FONT face=Arial size=3>0</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>0005 021010 LJMP TIME_0 ;</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>定时中断</FONT><FONT face=Arial size=3>0</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>0008 021020 LJMP INT_1 ;</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>外中断</FONT><FONT face=Arial size=3>1</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>000B 021030 LJMP TIME_1 ;</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>定时中断</FONT><FONT face=Arial size=3>1</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>处理程序</FONT></P>
  <P align=justify><FONT face=Arial size=3>000E 021040 LJMP SERIAL ;</FONT><FONT 
  face=宋体 lang=ZH-CN size=3>串行口中断程序</FONT></P><FONT face=Arial size=3>
  <P align=justify>START:</P>
  <P align=justify>0011 00 NOP</P>
  <P align=justify>0000 END</P>
  <P align=justify></P>
  <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
  3.03 Page 2</P>
  <P align=justify>08-26-96</P>
  <P align=justify>;%T Symbol Name Type Value</P>
  <P align=justify>INT_0 . . . . . . . . . . . . . I 1000</P>
  <P align=justify>INT_1 . . . . . . . . . . . . . I 1020</P>
  <P align=justify>SERIAL. . . . . . . . . . . . . I 1040</P>
  <P align=justify>START . . . . . . . . . . . . . L 0011</P>
  <P align=justify>TIME_0. . . . . . . . . . . . . I 1010</P>
  <P align=justify>TIME_1. . . . . . . . . . . . . I 1030</P>
  <P align=justify>;%Z</P>
  <P align=justify>00 Errors (0000)</P></FONT></I>
  <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
  size=3>由列表文件,可以绘出代码在ROM中的映象图如下:</FONT></P>
  <TABLE border=1 borderColor=#000000 cellPadding=1 cellSpacing=1 width=451>
    <TBODY>
    <TR>
      <TD vAlign=top width="9%"><FONT face=宋体 lang=ZH-CN size=3>
        <P align=justify>代码 </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>01H </FONT></P></TD>
      <TD vAlign=top width="9%"><FONT face=Arial size=3>
        <P align=justify>11H </FONT></P></TD>
      <TD vAlign=top width="9%"><FONT face=Arial size=3>
        <P align=justify>02H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>10H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>00H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>02H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>10H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>10H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>02H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>10H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>20H </FONT></P></TD></TR>
    <TR>
      <TD vAlign=top width="9%"><FONT face=宋体 lang=ZH-CN size=3>
        <P align=justify>地址 </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>00H </FONT></P></TD>
      <TD vAlign=top width="9%"><FONT face=Arial size=3>
        <P align=justify>01H </FONT></P></TD>
      <TD vAlign=top width="9%"><FONT face=Arial size=3>
        <P align=justify>02H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>03H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>04H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>05H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>06H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>07H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>08H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>09H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>0AH </FONT></P></TD></TR>
    <TR>
      <TD vAlign=top width="9%"><FONT face=宋体 lang=ZH-CN size=3>
        <P align=justify>代码 </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>02H </FONT></P></TD>
      <TD vAlign=top width="9%"><FONT face=Arial size=3>
        <P align=justify>10H </FONT></P></TD>
      <TD vAlign=top width="9%"><FONT face=Arial size=3>
        <P align=justify>30H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>02H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>
        <P align=justify>10H </FONT></P></TD>
      <TD vAlign=top width="8%"><FONT face=Arial size=3>

⌨️ 快捷键说明

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