微型计算机原理及应用第三版.ppt_第1页
微型计算机原理及应用第三版.ppt_第2页
微型计算机原理及应用第三版.ppt_第3页
微型计算机原理及应用第三版.ppt_第4页
微型计算机原理及应用第三版.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章8086汇编语言中基本语法 助记符 指令 CPU可以执行的能完成特定功能的语句 能产生目标代码 它主要由CPU指令组成 伪指令 是一种不产生目标代码的语句 它仅仅在汇编过程中告诉汇编程序应如何汇编 宏指令 它是一个指令序列 汇编时凡有宏指令语句的地方都用相应的指令序列的目标代码插入 一 汇编语言源程序的一些必要成分1 段结构的形成 段定义伪指令 SEGMENT与ENDS段名SEGMENT 段名ENDS 段名字必须在两处出现 而且必须 致 segment和ends必须成对出现 segment定义一个段的开始 ends定义一个段的结束 段寄存器说明伪指令 assumeASSUME段寄存器名 段名 段寄存器名 段名 指出源程序中的逻辑段与物理段之间的关系 当汇编程序汇编一个逻辑段时 即可利用相应的段寄存器寻址该逻辑段中的指令或数据 只是通知汇编程序有关段寄存器与逻辑段的关系 并没有给段寄存器赋于实际的初值 例如 CODESEGMENTASSUMECS CODE DS DATA SS STACKMOVAX DATAMOVDS AXMOVAX STACKMOVSS AX CODEENDS 模块伪指令 name end public extrnNAME用于给源程序汇编以后得到的目标程序指定一个模块名 连接时需要使用这个目标程序的模块名 NAME模块名 2 END表示源程序到此结束 指示汇编程序停止汇编 对于END后面的语句可以不予理会 END标号END伪指令后面的标号表示程序执行的启动地址 END伪指令将标号的段基值和偏移地址分别提供给CS和IP寄存器 方括号中的标号是任选项 如果有多个模块连接在一起 则只有主模块的END语句使用标号 3 PUBLC伪指令说明本模块中的某些符号是公共的 即这些符号可以提供给将被连接在起的其他模块使用PUBLIC符号 4 EXTRNEXTRN伪指令说明本模块中所用的某些符号是外部的 即这些符号在将被连接在一起的其他模块中定义 在定义这些符号的模块中还必须用PUBLIC伪指令说明 EXTRN名字 类型 例如 程序的框架datasegment dataendscodesegmentassumecs code ds datastart movax datamovds ax codeendsendstart 2 数据的定义 常量 变量和标号常量 一个常量如果是一个字符串 该字符串必须用单引号或双引号括起来 汇编语言把它们汇编成相应的ASCII码 变量 变量实际上代表着内存中一块存储单元 变量有三个属性 段基址 段内偏移量以及类型 变量的类型是指变量元素具有的字节数 字节变量表示一个8位数据 其类型为1 字变量表示一个十六位数据其类型为2 双字变量表示一个32位的数据 其其类型为4 标号 实际上是代码段中的某一指令的地址 它也有三个属性 段地址 段内偏移量和类型 标号的类型有两种 NEAR标号 它只能在定义它的段内被引用 其类型为 l FAR标号 它既可以在定义它的段内被引用 也可以在其他段内被引用 其类型为 2 它代表了指令的段地址和偏移量 标号可以在各种转移指令中作为操作数使用 它只能定义在可执行的代码段中 数据定义伪指令 DB DW DD DQ DT数据定义伪指令的用途是定义一个变量的类型 给存储器赋初值 或者仅仅给变量分配存储单元 而不赋于特定的值第一种格式 名字 伪指令表达式第二种格式 名字 伪指令DUP 表达式 例题 画出经过如下数据定义后内存中数据的存放情况 var1db100 0ffhvar2db abc 注意 字符串定义用dbvar3dw ab var4dw1 3456hvar5dd56789hvar6db3dup 1 2 符号定义伪指令 equ label 1 EQU和 名字EQU表达式例如 CHAREQU HELLOTHEWORLD 利用EQU伪指令 可以用一个名字代表一个数值 或用一个较简短的名来代替一个较长的名字 EQU伪指令不允许对同一符号重复定义 伪指令与EQU基本相同只是区别在于它可以对同一个名字重复定义 2 LABEL名字LABEL类型 AREAWLABELWORDMOVAREAW AXAREABDBl00DUP MOVAREAB AL 四 其它的一些伪指令 1 ORG和 ORG指定了在它之后的代码或数据存放的起始地址的偏移量 即以语句中表达式的值作为起始地址ORG在汇编程序对源程序的汇编过程中 使用地址计数器来保存当前正在汇编的指令的地址 地址计数器的值可用 来表示 汇编语言允许用户直接用 来引用地址计数器的值 ORG 8JNZ 6ARRAYDW11H 12H 3 13H 假设ARRAY的起始地址为0070H 2 RADIX定义源程序中书写数据时的隐含进位方式 RADIX 3 COMMENT块注释伪指令COMMENT定界符注释定界符二 表达式与运算符1 算术运算符算术运算符有加 十 减 一 乘 除 模 MOD 左移 SHL 右移 SHR 七种 除法返回的是商 而MOD操作返回除法操作的余数 例如PI INTEQU31416 10000 PI INT 3P REMEQU31416MOD10000 P REM 1416SHL和SHR是移位操作 般在建立屏蔽字时使用 例如 MASKBEQU00110010BMASKB1EQUMASKBSHL2 MASKB1 11001000BMASKB2EQUMASKBSHR2 MASKB2 00001100B注意 运算符的运算是在汇编时完成的 2 逻辑运算符汇编语言的逻辑运算符有AND 逻辑与OR 逻辑或XOR 逻辑异或NOT 逻辑非逻辑运算符与逻辑运算指令的区别在于前者在汇编时完成逻辑运算 而后者在执行指令时完成逻辑运算MASKBEQU00101011BMOVAL 5EHANDAL MASKBAND0FH ANDAL 0BH AL 0AH 3 关系运算符关系运算符有 EQ 等于 NE 不等LT 小于 GT 大于LE 小于等于 GE 大于等于关系运算符比较两个操作数并产生一个逻辑值 如果关系成立则结果为真 0FFFFH 否则为假 0000H 关系运算符一般都同其他操作结合以构成一个判断表达式 例如要实现AX 5如果CHOICE 20AX 6如果CHOICE 20那么可以使用下列语句 MOVAX CH0ICELT20 AND5 OR CHOICEGT20 AND6 4 分析运算符 1 SEG求段基址 2 OFFSET求偏移地址 3 TYPE求符号名类型值 4 SIZE求为符号名分配的字节数 5 LENGTH求为符号名分配的项数TABLEDW100DUP MOVAX SEGTABLE 把TABLE的段地址送AXMOVBX OFFSETTABLE 把TABLE的偏移地址送BXMOVCX TYPETABLE MOVDX LENGTHTABLEMOVBP SIZETABLE注意 LENGTH和SIZE运算符只对用DUP定义的变量有意义 5 组合运算符 1 PTR运算符PTR运算符用于指定或暂时改变变量或标号的原有属性 MOVBYTEPTR SI 0FFHJMPDWORDPTR DI VARDW100DUP MOVBYTEPTRVAR AL 2 THIS运算符LABCEQUTHISBYTELABDDW4321HMOVAL LABCMOVAX LABD 操作系统使用的两种方式 1 使用者 命令行方式或图形界面方式 2 程序员 系统功能调用或应用程序接口 API 系统功能调用 操作系统提供给应用程序的软件接口 完成应用程序对系统的使用系统功能调用的使用方法 1 传送入口参数到指定寄存器中 有的子程序无入口参数 则只需安排后两个语句 2 功能号送入AH寄存器中 3 INT2lH 4 系统将出口参数送到指定寄存器中或从屏幕显示出来 例题 从键盘输入一串字符到一个内存变量 遇到回车则结束输入 同时在屏幕上显示相同个数的一串星号 DATASEGMENTVARDB10DUP 0 DATAENDSC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论