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

📄 chapter4.htm

📁 我们学校教授的课件 很好的学习助手啊 里面讲的很详细 汉好
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>第四章&nbsp; 汇编语言程序设计</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>

<body bgcolor="#52748B" background="back2.jpg">

<h1 align="left"><font face="宋体" color="#FFFFFF"><big><big>第四章 &nbsp; 
汇编语言程序设计</big></big></font></h1>

<h2 align="left"><font face="宋体" color="#FFFFFF"><big><big>§4.1 &nbsp; 
编程和上机调试环境</big></big></font></h2>

<h3 align="left"><font face="宋体" color="#FFFFFF"><big><big>一、DEBUG环境</big></big></font></h3>

<blockquote>
  <h4 align="left"><big><big><font face="宋体" color="#FFFFFF">1、进入DEBUG环境</font></big></big></h4>
  <p align="left"><font face="宋体" color="#FFFFFF"><big><big>在系统的MS-DOS环境下,键入<u>DEBUG</big></big></font><font
  FACE="宋体" size="5" color="#FFFFFF">↙</font></u></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">在DEBUG环境中,默认的数制为十六进制,只能使用数字地址。</font></p>
  <h4 align="left"><font FACE="宋体" size="5" color="#FFFFFF">2、DEBUG常用命令</font></h4>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">1)显示存储单元中的数据---D</font><font
  FACE="宋体" size="5" color="#FFFFFF"> &nbsp;&nbsp;&nbsp; (Dump)</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_D</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">默认显示从0100H开始的数据。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_D 地址</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">显示从当前地址开始的80H个字节单元中的数据。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:_D 0100</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_D 地址范围</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:_D 0100 0120</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_D 地址 L长度</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:_D 0100 L20</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">2)修改存储单元内容---E</font><font
  FACE="宋体" size="5" color="#FFFFFF"> (Enter)</font><font face="宋体" size="5"
  color="#FFFF00">和 F</font><font FACE="宋体" size="5" color="#FFFFFF">(Fill) </font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_E&nbsp; 地址 &nbsp; 
  内容列表</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">以指定的内容修改指定范围存储单元的内容。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:_E DS:0100&nbsp; 12‘ABC’8D</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">则修改了自0100H单元开始的5个字节单元的内容。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_E&nbsp; 地址</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">逐个单元修改。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:_E DS:0100</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">系统显示原来该单元中的数据,可以在显示原数据之后键入修改内容。键入空格键,可以继续修改下一个字节单元的内容,直到键入回车键为止。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_F&nbsp; 地址&nbsp; L长度 
  &nbsp; 内容列表</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:_F&nbsp; 0100 L5 12‘ABC’34</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_F&nbsp; 地址范围 &nbsp; 
  内容列表</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:_F&nbsp; 0100 0120 
  ‘ABCDEF’</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">3)检查和修改寄存器的内容---R</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_R</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">显示所有的寄存器内容和标志位的状态。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">DEBUG环境中标志位状态的表示方法。</font></p>
</blockquote>
<div align="center"><center>

<table border="1" width="30%" bgcolor="#87C6C7">
  <tr>
    <td width="33%" align="center"><big>标志</big></td>
    <td width="33%" align="center"><font face="Arial"><big>1</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>0</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>OF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>OV</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>NV</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>DF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>DN</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>UP</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>IF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>EI</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>DI</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>SF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>NG</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>PL</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>ZF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>ZR</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>NZ</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>AF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>AC</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>NA</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>PF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>PE</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>PO</big></font></td>
  </tr>
  <tr>
    <td width="33%" align="center"><font face="Arial"><big>CF</big></font></td>
    <td width="33%" align="center"><font face="Arial"><big>CY</big></font></td>
    <td width="34%" align="center"><font face="Arial"><big>NC</big></font></td>
  </tr>
</table>
</center></div>

<blockquote>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_R&nbsp; 寄存器</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">显示和修改某个寄存器的内容。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如: _R&nbsp; BX</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_RF</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">显示和修改标志位的状态。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">4)运行</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_G [=起始地址]&nbsp; [断点地址] 
  &nbsp; [断点地址]...</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">由起始地址或当前的CS:IP开始,运行至指定的断点,并显示所有寄存器和标志位的值。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">5)单步运行</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_T [=起始地址]</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">自起始地址处开始逐条执行指令,子程序中的指令也会逐条执行。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_P [=起始地址]</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">自起始地址处开始逐条执行指令,子程序调用作为一条指令。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">6)汇编---A</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_A [起始地址]</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">自指定的起始地址处可以输入汇编语言的指令。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">7)反汇编---U</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_U [起始地址]</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">从指定的地址或者接着上一次的地址反汇编32个字节。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_U 地址范围</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">对指定范围的地址进行反汇编。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_U 地址&nbsp; L长度</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">从指定的地址处开始反汇编L个地址单元。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">8)命名---N</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_N&nbsp; [路径名]文件名[.扩展名]</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">9)调入命令---L</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_L [地址]</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">将用N命名的文件调入到指定地址开始的单元。地址若省略,从当前的CS:IP处开始。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_L&nbsp; 地址 驱动器号 
  扇区号 扇区数</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">10)写文件---W</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_W&nbsp; [地址]</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">将从指定地址处开始的、用BX和CX指定长度的数据写到用N命名的文件中。地址若省略,从当前的CS:IP处开始。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_W 地址&nbsp; 驱动器号 
  扇区号 扇区数</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">11)输入---I</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_I&nbsp; 口地址</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">12) 输出---O</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_O 口地址&nbsp; 数据</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">13)退出---Q</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">_Q</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF"> </font></p>
  <p align="left"><font face="宋体" size="5" color="#00FFFF">其他不是经常使用的命令:</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF"> </font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">14)比较指定长度字节数据---C</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">_C 起始地址1&nbsp; L字节长度 
  &nbsp; 起始地址2</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">若指定地址和长度的数据不对应相等,则显示数据不相等的地址和其中的内容。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">15)显示两个十六进制数据的和与差---H</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">_H 数据1&nbsp; 数据2</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">16)数据的块传送---M</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">_M 源地址&nbsp; L指定长度 
  &nbsp; 目标地址</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFF00">17)数据检索---S</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">_S 起始地址 
  &nbsp; 结束地址&nbsp; 检索的数据</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">若有要检索的数据,则显示该数据的地址。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">3、利用DEBUG生成*.COM文件</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">1)进入DEBUG。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">2)汇编 _A。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">3)输入汇编语言指令。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">4)用N命名一个*.COM文件。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">5)用_R指定BX和CX的值。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">6)用_W写入文件。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">7)退出_Q。</font></p>
</blockquote>

<h3 align="left"><font face="宋体" color="#FFFFFF" size="6">二、宏汇编环境</font></h3>

<blockquote>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">1、利用编辑软件编制汇编语言源文件。例如,使用QE。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">2、利用MASM.EXE汇编源文件,生成*. 
  OBJ目标文件。</font></p>
  <p align="left"><font FACE="宋体" size="5" color="#FFFFFF">3、利用LINK.EXE连接目标文件,生成*. 
  EXE可执行文件。</font></p>
  <p align="left"> </p>
</blockquote>

<h2 align="center"><font face="宋体" color="#FFFFFF"><big><big>§4.2 伪指令</big></big></font></h2>

⌨️ 快捷键说明

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