工学微型计算机原理及应用第三版.pptxVIP

  • 2
  • 0
  • 约4.91千字
  • 约 16页
  • 2023-11-27 发布于湖北
  • 举报
助记符 ①指令 :CPU可以执行的能完成特定功能的语句 , 能产生目标代码。 它主要由CPU指令组成。 ②伪指令: 是一种不产生目标代码的语句 , 它仅仅在汇编过程中告 诉汇编程序应如何汇编 ③宏指令: 它是一个指令序列 。汇编时凡有宏指令语句的地方都用 相应的指令序列的目标代码插入。 第七章 8086汇编语言中基本语法 (*) 段名字必须在两处出现 , 而且必须—致。 (*) segment和ends必须成对出现 。segment定义一个段的开始, ends定义一个段的结束 ㈡ 段寄存器说明伪指令 :assume ASSUME 段寄存器名: 段名[ , 段寄存器名: 段名[ , …]] 一 、汇编语言源程序的一些必要成分 1、段结构的形成 ㈠、段定义伪指令:SEGMENT与ENDS 段名 SEGMENT ﹕ 段名 ENDS (*) 指出源程序中的逻辑段与物理段之间的关系 。 当汇编程序汇 编一个逻辑段时 , 即可利用相应的段寄存器寻址该逻辑段中的指 令或数据。 (*) 只是通知汇编程序有关段寄存器与逻辑段的关系 , 并没有给 段寄存器赋于实际的初值。 例如: CS:CODE,DS:DATA,SS:STACK AX,DATA DS,AX AX,STACK SS,AX SEGMENT ASSUME MOV MOV MOV MOV ﹕ ENDS CODE CODE ㈢ 模块伪指令 :name,end,public,extrn (1) NAME 用于给源程序汇编以后得到的目标程序指定一个模块名 , 连接 时需要使用这个目标程序的模块名。 NAME 模块名 (2)END 表示源程序到此结束 , 指示汇编程序停止汇编 , 对于END后面 的语句可以不予理会。 END 标号 END伪指令后面的标号表示程序执行的启动地址 。END伪指令将标 号的段基值和偏移地址分别提供给CS和IP寄存器 。方括号中的 标号是任选项 。如果有多个模块连接在一起 , 则只有主模块的 END语句使用标号。 (3)PUBLC 伪指令说明本模块中的某些符号是公共的 , 即这些符号可以提 供给将被连接在起的其他模块使用 PUBLIC 符号[, …] (4)EXTRN EXTRN伪指令说明本模块中所用的某些符号是外部的 , 即这些符 号在将被连接在一起的其他模块中定义(在定义这些符号的模块 中还必须用PUBLIC伪指令说明) EXTRN 名字 :类型[ , …] 例如: 程序的框架 data segment ︰ data ends code segment assume cs :code,ds :data start :mov ax,data m ov ds,ax ︰ code ends end start 2、数据的定义 ㈠ 常量、变量和标号 常量 :一个常量如果是一个字符串 , 该字符串必须用单引号或双引 号括起来 , 汇编语言把它们汇编成相应的ASCII码。 变量 : 变量实际上代表着内存中一块存储单元 , 变量有三个属性: 段基址、 段内偏移量以及类型 。变量的类型是指变量元素具有 的字节数 。字节变量表示一个8位数据 , 其类型为1;字变量表示 一个十六位数据其类型为2; 双字变量表示一个32位的数据 , 其 其类型为4; 标号 : 实际上是代码段中的某一指令的地址 。它也有三个属性: 段 地址、段内偏移量和类型 。标号的类型有两种: NEAR标号 , 它只 能在定义它的段内被引用 , 其类型为 ﹣l : FAR标号 , 它既可以 在定义它的段内被引用 , 也可以在其他段内被引用 , 其类型为﹣ 2 , 它代表了指令的段地址和偏移量 。标号可以在各种转移指令 中作为操作数使用 。它只能定义在可执行的代码段中。 ㈡ 数据定义伪指令: DB,DW,DD,DQ,DT 数据定义伪指令的用途是定义一个变量的类型 , 给存储器赋初值, 或者仅仅给变量分配存储单元 , 而不赋于特定的值 第一种格式: [名字] 伪指令 表达式 第二种格式: [名字] 伪指令 DUP (表达式) 例题: 画出经过如下数据定义后内存中数据的存放情况。 var1 db 100, 0ffh var2 db ‘abc ’ 注意: 字符串定义用db var3 dw ?, ‘ab ’ var4 dw 1, 3456h var5 dd 56789h var6 db 3 dup (1, 2) ㈢

文档评论(0)

1亿VIP精品文档

相关文档