




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章汇编语言语法 汇编语言语句格式 指令语句格式标号 指令助记符操作数 注释标号字段 是一个任选字段 性质为符号便移量 一般用于标记跳转指令的目的地址 在汇编过程中标号会被替换为一个 位的数值偏移量 标号必须位于语句开头 结尾必须使用冒号 指令助记符和操作数 这两个字段组成汇编指令本身 指令助记符是必不可少的 操作数则根据指令助记符来确定 在汇编过程中 也只有这两个字段会被替换为确定的机器指令代码 注释字段 是一个任选字段 用于说明程序片段或指令的功能 汇编过程中不处理这样的字段 它只是用于提高源程序的可读性 注释必须使用分号作为开始 例子 教材 例 1 1 伪指令语句格式伪指令语句 这种语句用于指示汇编程序 翻译程序 如何汇编源程序 和指令语句不同 汇编程序处理它时不会产生机器指令代码 只对伪指令提出的要求进行解释并立即完成要求的操作 伪指令的功能大致有分配存储单元 计算表达式 定义常量等等 符号名伪指令符操作数 注释符号名字段 一个任选字段 针对不同的伪指令符 符号名可以是常量名 变量名 子程序名称 结构名称 记录名称 都是一些抽象的名称 在最终的目标代码中不会出现 只是在汇编过程中使用 伪指令符 伪指令语句中必不可少的字段 由它指示汇编程序所要完成的具体操作 操作数字段 由伪指令操作符决定 操作数可以是常数 字符串 常量名 变量名 表达式等 注释字段 任选字段 必须以分号开始 与指令语句中的注释字段相同 用于提高程序的可读性 例子 教材P63例4 1 2 3 标识符标识符是汇编语言中所有用户定义符号名称的总称 它有一定的构成规则 a 字符个数在1个到31个之间 b 第一个字符必须是字母或特殊字符 特殊字符 c 除第一个字符外 其他字符可以是字母 数字 特殊字符 d 不能使用保留字 汇编程序定义的符号名称 包括各种指令助记符 伪指令符 寄存器名称等等 4 2汇编语言中使用的数据4 2 1数据表示 常数 数据表示是指汇编语言所规定的用于表示各种数据的具体方式 数据表示大体上可以分为数值表示和字符串表示两种情况 数据表示也称为常数 因为各种数据表示的具体取值在汇编过程中已经完全确定 并且在程序执行阶段也不会发生任何变化 1 数值表示二进制整数 由数字0和1组成的序列 以字母B作为结尾 例如 10110101B 八进制整数 由0 7之间任意数字组成的数字序列 以字母Q或O结尾 例如 35761Q 十进制整数 由0 9之间任意数字组成的数字序列 以字母D结尾或结尾不带任何字母 十六进制整数 由0 9或A F之间的任意数字或字母组成的序列 以字母H结尾 例如 0A845H 如果十六进制整数以字母作为最高位 那么前面必须添一个0 这是语法要求 十进制实数 整数部分 小数部分E 指数部分例如十进制实数 13835 67 10 3在汇编语言中表示为 13835 67E 3除了十进制表示以外 还可以使用二进制浮点编码形式表示实数 这种表示形式和机器表示实数的方法是一致的 在空间分配方面 定义一个实数至少需要4个字节 也可以使用8字节或10字节的空间 2 字符串表示使用单引号或双引号括起来的任意字符序列称为字符串 例如 Hello world A 678 3 常数在程序中的用途1 在指令语句中作为立即数MOVAX 45F3HMOVBL C 2 在指令语句中作为偏移量中的位移量分量MOVAX 1000H ADD10H BX AX 3 在数据定义伪指令中 作为存储单元存放的初值DB10H 0F4HDW0D3E5HDB Hello 注意 常数在程序运行阶段不改变不是指存储单元中的内容不改变 4 2 2变量变量在汇编语言中的概念和在高级语言中的概念一致 是指某一个特定的内存单元或内存区域 和教材中的描述有点差异 在汇编阶段 变量在段中的起始偏移量 所占用的空间已经完全被确定 在程序执行阶段 变量中的数据随时可能发生变化 在程序中引用变量相当于引用内存单元的偏移量 实际要访问的信息是变量中的数据 1 数据定义伪指令语句格式 变量名DB DW DD 表达式1 表达式2 注释语句中各字段含义如下 变量名 是一个可选的字段 代表当前所定义内存单元的段内偏移量 在定义内存单元时 可以不指定变量名 数据定义伪指令 必选字段 用于指明当前所定义变量所占用的空间大小 DB 字节 DW 字 DD 双字 DQ 8字节 DT 10字节 下面是一个完整的数据段定义 DATA1SEGMENTVAR1DB10HVAR2DW3A4DHVAR3DD DATA1ENDS我们用这个例子来解释变量所固有的三种属性 1 段属性 SEG 从变量定义的位置来看 VAR1 VAR2 VAR3都在同一个逻辑段DATA1中 这也就决定了访问这三个变量正确的段基值 关于变量的段属性 需要注意指令中隐含使用的段寄存器 要保证正确的段基值是放在当前使用的段寄存器中 MOVAL VAR1上面这条指令默认DS段寄存器中存放的是DATA1数据段的段基值 2 偏移量属性 OFFSET 偏移量属性是指变量相对于段起始地址的字节距离 注意 段起始地址和段基值是两个概念 在大多数段定义中 这两个值是相等的 一般也应该保证这两个值相等 变量名称就是一个符号偏移量 汇编过程中 定义一个变量名时就是定义该名称对应的偏移量 在语句中引用变量名就是引用相应的偏移量 变量的段属性和偏移量属性完全确定了变量的起始地址 段基值 偏移量构成一个完整的逻辑地址 上个例子中 VAR1的偏移量为0000H VAR2为0001H VAR3为0003H 3 类型属性 TYPE 类型属性表示变量所占用的字节数 这一个属性由数据定义伪指令中的伪指令符决定 DB 单字节DW 字 双字节 DD 双字 4字节 在汇编过程中 汇编程序会检查源程序中变量的类型 如果操作数类型不匹配 会提示语法错误 例如 MOVAL VAR2VAR2是一个字单元 试图把一个字单元中的数据传送到一个字节寄存器中是不允许的 会出现语法错误 原则上来说 通过段属性 偏移量属性 类型属性 已经完全可以把变量在内存中的确切起始地址 所占用的字节数确定下来了 在汇编语言程序中访问的变量就是一个具体的 实在的变量 而不象高级语言中的变量那么抽象 对于变量初值的设定通过表达式来完成 程序装载到内存中以后 程序执行前变量的取值称为初值 下面讨论定义变量初值时用到的各种表达式 1 数值表达式 使用整数来定义变量初值 参见教材P66的例4 2 1 2 字符串表达式 使用ASCII码来定义变量初值 参见教材P66的例4 2 2 3 问号表达式 定义变量初值为随机值 如果这样定义变量的初值 那么汇编程序在处理数据定义伪指令时仅为变量分配空间 并不会为它设置初值 程序执行时 这种变量的初值就是相应内存单元中原来所有的随机值 例子 参见教材P67例4 2 3 4 带DUP的表达式数据定义伪指令语句格式 变量名DB等表达式1DUP 表达式2 DUP Duplication 是指多次重复分配内存空间 并且为每次分配的空间定义相同的初值 表达式1 定义重复分配空间的次数 表达式2 定义每次所分配空间中所用的初值 例子参见教材P68的例4 2 4注意 DUP关键字可以嵌套使用 例子参见教材P68例如 VAR1DB10HDUP 2 2DUP 3 2DUP 5 三层DUP定义第三层 3 5 5第二层 2 3 5 5 3 5 5第一层 把第二层数据重复定义10H次 总共占用7 10H个字节单元 2 变量的使用1 变量在指令语句中的使用在指令中引用变量名作为符号位移量可以实现直接寻址 基址寻址 变址寻址 基址变址寻址等寻址方式 对变量或变量数组中的数据进行读写操作 例子见教材P68 2 在伪指令中引用变量变量是通过伪指令语句来定义的 但这里指的不是定义变量 而是在伪指令语句中引用变量 和在指令中引用变量相似 在伪指令中引用变量也是引用变量的段内偏移量或者变量完整的逻辑地址 例子见教材P69ADR1DWVAR1 3 存放VAR1 3偏移量ADR2DDVAR1 2 存放VAR1 2逻辑地址注意 在伪指令中引用变量时不能使用DB伪指令 4 2 3标号 指令语句的第一个可选字段 变量是用于存放数据的内存单元所对应的偏移量 是一种符号地址 标号同样是一种符号地址 用于指示特定内存单元的偏移量 但是和变量不同 标号所指示的地址是位于代码段中的 标号就是程序中某一条特定指令的符号地址 在程序中引用某个标号 转移指令 就是在引用该指令在代码段中的偏移量或完整的逻辑地址 标号的一般定义和引用 L1 INCSI 在指令前定义标号L1 JMPL1 跳转到标号L1处 1 标号的属性和变量一样 标号也有三种固有属性1 段属性 SEG 标号是某一条指令的符号地址 一条具体的指令总是位于某一个特定的代码段 该代码段的段基值就是标号的段基值 在程序执行过程中 当前代码段的段基值总是由CS段寄存器指出 2 偏移量属性 OFFSET 偏移量是指带标号指令在代码段中相对于段起始地址的字节距离 通过段属性和偏移量属性的结合 就能够完全确定带标号指令在内存中的确切起始地址 3 类型属性 TYPE 变量的类型是指变量在内存中占用的字节空间大小 标号的类型也有相同的含义 但是主要是指标号的引用类型 NEAR型 使用关键字NEAR说明过的标号只代表标号后指令在段内的偏移量 标号实质上是一个16位二进制数 这种标号只能在同一个代码段内引用 段内引用 FAR型 使用关键字FAR说明过的标号代表标号后指令的完整逻辑地址 标号实质上是一个32位二进制数 这种标号可以在定义标号的段内引用 也可以在其他段引用 段间引用 标号的隐含属性为NEAR 当定义标号未指明其类型时 汇编程序会默认的把它作为NEAR型的标号处理 如果需要定义FAR类型的标号 必须使用LABEL伪指令显式的定义它的类型 2 LABEL伪指令LABEL伪指令与指令语句连用时 用于定义指令的标号 与数据定义伪指令连用时 用于定义变量 1 用LABEL伪指令定义标号见教材 NEXTFLABELFARNEXT ADDAL BLNEXT为NEAR型的标号 NEXTF则为LABEL伪指令定义的FAR型标号 但是两个标号均指向同一条指令 如果在段内使用转移指令 那么应该引用NEXT标号 因为它所占用的空间更小 如果在其它代码段使用转移指令 那么应该引用NEXTF标号 因为只有它才能给出目标指令所在段的段基值 2 用LABEL伪指令定义变量见教材 VARBLABELBYTEVARWDW10HDUP 1122H 注意 VARB和VARW两个变量的段属性和偏移量属性完全相同 具有相同的逻辑地址 但是 两个变量的类型却不相同 VARB是字节类型 VARW是字类型 通过LABEL伪指令与数据定义伪指令连用 可以为同一个逻辑地址定义几种类型不同变量 这样的变量定义方式可以使程序使用不同的类型来访问相同的内存单元 4 3符号定义伪指令如果一个常数或者表达式会在源程序中经常使用 那么可以定义一个符号来表示它 如果符号所对应的表达式很复杂 那么在源程序中使用符号会使程序描述更简单 清晰 汇编语言中符号的概念和高级语言中常量的概念相似 4 3 1等值语句语句格式 符号EQU表达式EQU伪指令把语句右边的表达式赋值给左边的符号 语句中的表达式可以为常数 数值表达式 地址表达式 变量名 标号 寄存器名称 指令助记符等 在指令语句或伪指令语句中引用该符号就相当于引用它代表的表达式 在汇编过程中 源程序中的所有符号都会被替换为它代表的内容 例子见教材P71注意 符号仅在源程序汇编阶段是有效的 在程序执行阶段并没有符号这一概念 在目标代码中符号都已经全部被替换为相应的数值 符号仅是语法上定义的常量 在源程序中可以方便的引用 但是符号定义本身并没有分配任何存储单元 这一点要和变量区别开来 使用EQU伪指令定义符号后 不能够再次使用EQU伪指令对该符号进行重新定义 如果在源程序中出现这种情况 将被视为语法错误 4 3 2等号语句语句格式 符号 表达式等号语句的作用和等值语句完全一致 区别是已经用等号定义过的符号可以再次使用等号修改其定义 例子见教材P72 4 4表达式与运算符汇编语言的指令和伪指令中都可以使用表达式来描述操作数 这是汇编语言比机器语言更高级的一个方面 如果没有表达式 那么描述操作数会很不方便 表达式 由常数 变量 标号等元素通过各种运算符连接而成的算式 在汇编语言中 表达式一般分为数值表达式和地址表达式两种 运算符 汇编语言中的运算符有五种 包括算术运算符 逻辑运算符 关系运算符 数值返回运算符 属性与分离运算符 汇编语言中 所有运算符的分类可以参照教材P73的表4 1 特别注意 对所有表达式的计算过程都是在汇编阶段完成的 最后生成的目标代码中 表达式都被替换为具体的数值了 4 4 1算术运算符可用于数值表达式的运算符 MOD SHL SHR可用于地址表达式的运算符 注意 这里所有算术运算都是整数运算 例子 见教材P73 注意 表达式的计算一定是在汇编过程中完成的 不是在程序的执行阶段来完成 看下面一个例子 MOVAL ARRY 3 源操作数是用一个地址表达式给出的 汇编过程中会完成ARRY 3的计算 并用计算结果替换表达式 其寻址方式为直接寻址方式 MOVAL ARRY BX 源操作数的表示方式不是一个表达式 因为偏移量的计算是在指令执行阶段完成的 ARRY是一个符号位移量 在汇编过程中它会被替换为具体的数值 ARRY这一部分可以看作是一个表达式 但是 BX 这一部分决不是一个表达式 寻址方式为基址寻址 4 4 2逻辑运算符包括AND OR XOR NOT四个运算符 只能用于数值表达式 例子见教材P74 4 4 3关系运算符包括EQ 相等 NE 不等 LT 小于 LE 小于等于 GT 大于 GE 大于等于 六个运算符 用在数值表达式中 关系运算符对左右两个表达式的值进行比较 用在地址表达式中 对左右两个变量的偏移量进行比较 注意 关系运算符左右两个表达式必须性质相同 都是数值表达式或都是变量 如果运算符表示的关系成立 那么运算结果为全1 如果不成立 运算结果为全0 例子见教材P74 4 4 4数值返回运算符这类运算符只能针对变量或者标号 用于返回变量或标号的段基值 偏移量 类型等固有属性 注意 和所有运算符的运算一样 返回运算同样是在程序的汇编阶段完成的 而不是在程序的执行阶段 1 SEG运算符加在引用的变量名或标号前面 运算结果是返回该变量或标号的段基值 例子见教材P75的例4 4 1 2 OFFSET运算符加在引用的变量名或标号前 运算结果为返回该变量或标号的偏移量 例子见教材P75 3 TYPE运算符加在引用的变量名或标号前 运算结果为返回该变量或标号占用的字节数 例子见教材P76 4 LENGTH运算符只能加在引用变量名前面 返回数组中的数据个数 注意 和每个数据占用的字节数 位数无关 如果定义该变量时使用了DUP关键字 那么返回重复的次数 如果没有使用DUP 那么返回1 例子见教材P76LENGTH运算符只有针对使用DUP关键字定义的变量才有实际意义 5 SIZE运算符只能加在引用变量名前面 返回结果相当于LENGTH运算符和TYPE运算符的乘积 即数组变量总共占用的字节数目 数组的数据个数乘以每个数据占用的字节数 例子见教材P77和LENGTH运算符一样 SIZE运算符也只有针对DUP关键字定义的数组变量才有实际意义 4 4 5属性与分离字节运算符 1 属性运算符这种运算符只能针对存储器寻址的内存单元 这种运算符的含义是为当前的内存操作数指定一个临时的类型属性 TYPE 可能和它最初定义的类型不同 1 PTR运算符语句格式 类型PTR地址例子见教材P77 2 THIS运算符语句格式 THIS类型THIS运算符通常和EQU伪指令连用 定义新的变量名或标号 其段基值和偏移量和紧跟其后的变量或标号相同 在功能上和LABEL伪指令相似 为同一个内存地址定义不同的类型 例子见教材P78 2 分离字节运算符HIGH运算符 分离16位数据的高8位 LOW运算符 分离16位数据的低8位 例子见教材P794 4 6运算符的优先级和高级语言中的运算符一样 每种运算符在表达式中有不同的优先级 可以使用圆括号来改变运算符的优先级 可以综合使用各种运算符得到复杂的表达式 运算符的具体优先级可以参见教材P79的表4 3 4 5程序的段结构前面已经讲过8086 8088系统中存储器的分段管理机制 一个程序至少需要一个代码段 但是一般都需要代码段 数据段 堆栈段 这里从汇编语言语法的角度来讨论段的定义 4 5 1段定义伪指令SEGMENT ENDS语句格式 见教材 段名SEGMENT定位类型组合类型 类别名 段名ENDS语句中各字段的解释如下 1 段名是一个必选字段 具体名称由用户自己决定 需要满足标识符条件 段开始和结尾的段名必须相同 2 定位类型是一个可选的字段 定义段起始地址 从这里可以看到段基址和段起始地址的区别 1 PAGE 页 表示该段只能以页边界作为起始地址 从地址00000H开始 每256个字节单元为一个页 既然以256为单位 那么起始地址的低字节一定为00H 字节数据最大为255 这样的段起始地址和段基址 低4位为0 是相等的 2 PARA 节 如果没有指定定位类型字段 那么汇编程序会隐含的使用PARA作为该段隐含的起始地址属性 从地址00000H开始 每16个字节为一个节 那么起始地址低4位一定为0H 4位二进制数最大为15 这种段起始地址也能和段基址保持一致 3 WORD 字 表示该段起始地址以偶地址开始 起始地址的最低位一定为0 这种段起始地址可能不等于段基址 因为它不能保证低4位一定为0 4 BYTE 字节 表示该段起始地址可以使用任意一个地址 这样的段起始地址也可能不等于段基址 归纳起来 使用PAGE PARA作为定位类型时 段基址一定等于段起始地址 使用WORD BYTE作为定位类型时 段基址可能不会等于段起始地址 为了避免不必要的麻烦 一般在程序中都使用PARA作为隐含的定位类型 3 组合类型该字段是可选字段 用于定义当前段与其他各段之间的重叠 邻接关系 在多模块汇编程序的汇编过程中特别有效 1 NONE 如果没有定义组合类型字段 那么NONE是隐含使用的组合类型 这种类型说明该段在逻辑上是一个独立的段 和其他段没有任何重叠或邻接关系 这种段对应的物理空间是相对独立的 2 PUBLIC 在相同定位类型的条件下 把该段和与该段段名称相同的其他段 一般在多模块程序中出现 邻接在一起形成一个更大的段 并且相对所分配的段基值调整变量或标号对应的偏移量 3 COMMON 把该段和与该段名称相同的其他段重叠在一起形成一个重叠段 多个逻辑段拥有相同的段基值 重叠段的长度取决于其中最长逻辑段的长度 4 STACK 把段名和该段相同的所有段邻接在一起构成一个连续的段 并指定该段为堆栈段 操作系统准备运行该程序时根据这个连续段来设置SS和SP寄存器 从而初始化堆栈 一般源程序中至少要有一个STACK段 如果没有定义这样的段 那么SS和SP寄存器的初始化不能由操作系统来完成 而必须由用户自己使用指令来实现 使用一个普通的段来作为堆栈段 5 MEMORY 表示该段的起始地址位于其他所有段的后面 在程序中位于最高内存地址一端 注意 在汇编过程中 只有第一个被解释的MEMORY段作为MEMORY组合类型 后面的MEMORY段全部被解释为COMMON段 6 AT表达式使用这种类型可以自己定义段的起始地址 但是有一定限制 表达式的取值只能是16位二进制数 对应地址的高16位 也就是说 自己定义的段起始地址低四位必须为0 4 类别名是一个可选字段 必须使用单引号括起来 必须满足标识符的定义条件 类别名的含义是要求汇编程序在汇编过程中把所有类别名相同的段尽量组合为一片连续的存储空间 由于定位类型的关系 可能不会完全连续 例子见教材P81 4 5 2段寻址伪指令ASSUME用于指定程序中所定义的段与各段寄存器之间的对应关系 指示汇编程序在汇编过程中如何确定指令隐含使用的段寄存器 注意 ASSUME语句是伪指令 它不能给段寄存器传送段基值 只能指定段与段寄存器之间的对应关系 该伪指令的作用时间也是在汇编阶段 不是在程序的执行阶段 例子见教材P82可以注意到 如果不使用ASSUME伪指令 那么MOV指令大多数情况下隐含使用的段寄存器将是DS寄存器 在不使用ASSUME伪指令的前提下 如果要使用MOV指令访问ES CS等段寄存器所指示段中的变量 那么必须在指令中显示的给出段前缀 例如 MOVAX ES VAR1 ASSUME语句的方便之处就在于它可以指示汇编程序按照语句的要求来指定指令中使用的隐含段寄存器 使程序员在多数情况下可以不在指令中显式的使用段前缀 在程序设计中 一般ASSUME语句在代码段中位于所有指令语句之前 把段基值装入段寄存器这一个过程是在程序执行阶段完成的 即便程序中使用了ASSUME语句 如果在程序执行阶段各段寄存器没有装入正确的段基值 那么仍然不能正确的访问内存中的数据 4 5 3段寄存器的装入 1 CS段寄存器的装入CS段寄存器和IP指令指针的初始化是由操作系统来完成的 当用户向操作系统提交一个程序时 操作系统会自动把程序中第一条指令的逻辑地址装入到CS和IP中 在这之后 CPU就会从这条指令开始执行 并且不断修改IP中的内容使它指向下一条指令 第一条指令的地址在源程序中是通过END伪指令来确定的 END伪指令一定是汇编语言源程序中的最后一条伪指令 而且一定只在源程序中出现一次 END语句的功能 1 标记源程序结束的位置 汇编程序在解释到END语句时 就认为源程序已经全部结束 END语句以后的任何语句都不会被解释 2 指定程序中第一条指令的逻辑地址 END伪指令符后面一定要带一个参数 这个参数一定是代码段中的一个标号 该标号所指定的逻辑地址就是程序中第一条指令的地址 汇编程序会把这个逻辑地址记载到最后生成的目标代码中 操作系统在将程序装入到内存以后 会把这个地址装入到CS IP中 例子见教材P83 2 DS ES段寄存器的装入和CS段寄存器的装入方式不同 DS ES的段基值装入必须由程序员使用MOV指令在自己的程序中来完成 例子见教材P84 注意例子中的ASSUME语句 对DS ES段寄存器的初始化指令一般在代码段的最开始 因为以后的指令可能会频繁的访问数据段或附加段的数据 只有先保证段寄存器中的段基值正确 后面的数据操作才是正确的 3 SS段寄存器的装入SS段寄存器的初始化过程分为两种类型 自动初始化和手动初始化 1 自动初始化如果希望采用这种初始化方式 在定义堆栈段时必须使用STACK作为组合类型 参见教材P84下面 如果使用这种方式定义堆栈段 那么在操作系统将程序装入到内存准备运行时 它会自动初始化堆栈段段寄存器SS和堆栈指针SP 2 手动初始化这种初始化方式和DS ES段寄存器的初始化过程很相似 需要在程序中使用MOV指令来实现 参见教材P85 如果要使用组合类型不是STACK属性的段作为堆栈段 那么必须使用这种初始化方式 采用手动初始化方式时 需要特别注意 SS和SP需要同时初始化 4 6过程 子程序 定义伪指令PROC ENDP在程序设计中 经常需要把功能独立且频繁使用的代码片段组织为子程序的形式 这样可以大大提高代码重用率 也使程序结构得到很大的简化 定义子程序的语句格式 过程名PROCNEAR FAR RET 过程名ENDP过程的定义必须是在代码段内 因为它是程序的一部分 关键字PROC和ENDP相当于一对括号 两个关键字之间的内容就是过程中的代码 过程定义中需要注意 1 过程名 不可缺少的字段 是用户自己为子程序定义的名称 必须满足标识符的定义 2 过程名和标号有很多共同点 例如都有三个相同的固有属性 教材P85 调用子程序和转移指令转移到某个标号这两个过程都是为了改变程序的执行流程 所不同的是 子程序调用需要保存返回点到堆栈中 3 一个过程中至少有一条RET指令 子程序返回指令 在程序执行阶段 子程序中最后一条被执行的指令一定是RET指令 否则子程序的设计一定有问题 4 7汇编语言源程序的基本结构框架一个程序提交给操作系统后就能够获得操作系统下放的CPU的控制权 接下来就可以执行这个应用程序了 程序执行完后有一件重要的事情需要完成 那就是返回操作系统 把CPU的控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合伙合同协议书
- 2024-2025学年新教材高中历史 第一单元 古代文明的产生与发展 第2课 古代世界的帝国与文明的交流(1)教学说课稿 新人教版必修《中外历史纲要(下)》
- 第2课 事半功倍有技巧-特殊输入 说课稿 -2024-2025学年辽师大版(2015)信息技术七年级上册
- 中医考试题库及答案软件
- 河南省青桐鸣2025-2026学年高二上学期9月大联考历史试卷(含答案)
- 商场电商平台合作及数据共享合同
- 绿色建筑项目结算付款与环保协议
- 媒体机构新员工入职内容创作与版权归属合同
- 股权激励计划实施与员工股权转让全面合作协议
- 担保公司业务合规管理合同
- 新《全面质量管理(习题集)》考试题库(含答案)
- 农村建房的邻居协议书模板
- 生物质压缩成型工艺与实践考核试卷
- 【物业分享】神秘顾客(交付项目物业服务体验)调查评分表
- 铝合金门窗来料加工合同范本
- 水杨酸软膏剂的制备
- MSA分析报告样本
- 基础应用化学(高职)全套教学课件
- 《铁皮石斛的介绍》课件
- 低压配电柜技术规范书
- 《隐身技术概述》课件
评论
0/150
提交评论