




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 汇编语言程序设计教程 第二版 汇编语言程序设计教程 第二版 习题参考答案习题参考答案 第第 1 章章 计算机基础知识计算机基础知识 1 计算机的应用分哪几个方面 请举例说明书中未提到的领域的计算机应用 科学计算 数据处理 计算机控制 计算机辅助设计 人工智能 企业管理 家用电器 网络应用 书中未提及的如 远程教育 住宅小区控制 飞行系统控制与管理等 2 简述计算机的发展过程 请查阅相关资料 列出微机的发展过程 电子管 晶体管 集成电路 大规模集成电路 以 IBM 为例 微机的发展 4004 8008 8080 8086 8088 80286 80386 80486 Pentium 系列 3 计算机的字长是怎么定义的 试举例说明 计算机能同时处理二进制信息的位宽定义为计算机的字长 如 8086 能同时进行 16 位二进 制数据的运算 存储和传输等操作 该机器的字长为 16 位 4 汇编语言中的基本数据类型有哪些 数值型数据和非数值型数据 非数值数据如字符 字符串 逻辑值等 5 简述定点数和浮点数的区别 指标定点数浮点数 表示范围较小比定点数范围大 精度决定于数的位数规格化时比定点高 运算规则简单运算步骤多 运算速度快慢 控制电路简单 易于维护复杂 难于维护 成本低高 程序编制选比例因子 不方便方便 溢出处理由数值部分决定由阶码大小判断 6 按要求完成进制转换 1 7BCH 011110111100B 1980D 2 562Q 101110010B 370D 3 90D 01011010B 5AH 4 1110100 111B 164 7Q 74 EH 7 当字长为八位时 写出下列各数的原码 补码和反码 真值原码反码补码 25000110010001100100011001 25100110011110011011100111 100011001000110010001100100 100111001001001101110011100 8 列出数字 0 9 大写字母 A Z 及小写字母 a z 的 ASCII 码值 30H 39H 41H 5AH 61H 7AH 9 在汇编语言中 如何表示二进制 八进制 十进制和十六进制的数值 用相应进制的数值加上进制标记即可 二进制用 B 如 10101010B 2 八进制用 Q 如 437Q 十进制用 D 或不用 如 54D 或 54 十六进制用 H 如 27A8H 10 完成下列二进制数的加减运算 1 10101010 11110000 2 11001100 01010100 110011010 100100000 3 11011010 01010010 4 11101110 01001101 10001000 10100001 11 完成下列十六进制数的加减运算 1 0FEA9 8888 7621H 2 0FFFF 1234 EDCBH 3 0EAC0 0028 EAE8H 4 3ABC 1678 5134H 12 完成下列 BCD 码的运算 1 3 5 8 0011 0101 1000 不用进行十进制调整 2 4 7 11 0100 0111 1011 此码不是 BCD 码 需要进行十进制调整 1011 0110 10001 0001 0001 3 6 5 11 0110 0101 1011 此码不是 BCD 码 需要进行十进制调整 1011 0110 10001 0001 0001 4 8 8 16 1000 1000 10000 此码不是 BCD 码 需要进行十进制调整 10000 0110 10110 0001 0110 第第 2 章章 微型计算机系统概述微型计算机系统概述 1 说明二进制位 bit 字节 byte 字 word 双字 double word 的含义及相互之 间的关系 位 bit 一个二进制位 字节 byte 8 位二进制位 字 word 一般为机器字长 在 8086 机器中为 16 位二进制位 即两个字节 双字 double word 双倍字长 在 8086 机器中为 32 位二进制位 2 一台微型计算机 数据线有 8 根 地址线有 16 根 如果采用字节编址 那么它可以访 问的最大存储空间是多少字节 试用十六进制数表示该机的地址范围 216 64KB 0000H FFFFH 3 8088CPU 内部分为哪两个大的功能部件 试述这两个部件的作用是什么 8088 微处理器内部分为执行单元 EU 和总线接口单元 BIU 两部分 BIU 单元用来实现 EU 的所有总线操作 它由地址加法器 段寄存器 CS DS SS ES 指令指针 IP 指令队列缓冲器和总线控制逻辑组成 BIU 负责 CPU 与 存储器或外部设备之间的信息交换 地址加法器将段和偏移地址相加 生成 20 位的物理地 址 EU 单元负责指令的执行 由算术逻辑单元 ALU 标志寄存器 F 通用寄存器及 EU 控 制器等组成 主要进行 16 位的各种运算及有效地址的计算 EU 不与计算机系统总线相关 而从 BIU 中的指令队列取得指令 这个指令队列中 存放着 BIU 预先由存储器中取出的若 干个字节的指令 3 4 8088 微处理器中有哪些寄存器 说明它们的功能及分组情况 5 8086 的寄存器中 有哪些 16 位寄存器可分为两个 8 位寄存器来使用 AX AH AL BX BH BL CX CH CL DX DH DL 6 8086 8088 的标志寄存器 F 中有哪些标志位 它们的名称和功能是什么 CF 进位标志 Carry Flag 若 CF 1 表示算术运算时产生进位或借位 否则 CF 0 移位指令会影响 CF PF 奇偶标志 Parity Flag 若 PF 1 表示操作结果中 1 的个数为偶数 否则 PF 0 这个标志位主要用于检查数据传送过程中的错误 AF 辅助进位标志 Auxiliary Carry Flag 若 AF 1 表示字节运算产生低半字节向 高半字节的进位或借位 否则 AF 0 辅助进位也称半进位标志 主要用于 BCD 码运算的 十进制调整 ZF 全零标志 Zero Flag 若 ZF 1 表示操作结果全为零 否则 ZF 0 SF 符号标志 Sign Flag 若 SF 1 表示符号数运算后的结果为负数 否则 SF 0 OF 溢出标志 Overflow Flag 若 OF 1 表示当进行算术运算时 结果超过了最 大范围 否则 OF 0 IF 中断允许标志 Interrupt Enable Flag 若 IF 1 则 CPU 可以响应外部可屏蔽 中断请求 若 IF 0 则 CPU 不允许响应中断请求 IF 的状态可由中断指令设置 DF 方向标志 Direction Flag 若 DF 1 表示执行字符串操作时按着从高地址向 低地址方向进行 否则 DF 0 DF 位可由指令控制 TF 单步标志 Trace Flag 又称跟踪标志 该标志位在调试程序时可直接控制 CPU 的工作状态 当 TF 1 时为单步操作 CPU 每执行一条指令就进入内部的单步中断处 理 以便对指令的执行情况进行检查 若 TF 0 则 CPU 继续执行程序 7 80386 有哪几种工作方式 简述每种工作方式的特点 80386 有三种工作方式 实地址方式 保护方式和虚拟 8086 方式 实地址方式 80386 在实地址方式下的工作原理与 8086 相同 主要差别是 80386 可 4 以处理 32 位的数据 如进行 32 位的寄存器的运算 以及偏移地址在 64KB 以内的 32 位的 数据传送 另外 在实地址方式下 80386 新增加的两个段寄存器 FS 和 GS 是可用的 实地 址方式是 80386 复位后立即出现的工作方式 保护方式 80386 在保护方式下可以访问 4G 字节的物理存储空间 段的长度在启动 页功能时是 4G 字节 不启动页功能时是 1M 字节 页功能是可选的 在此方式下 可以 引入虚拟存储器的概念 以扩充软件所占有的存储器空间 保护方式是支持多任务的方式 提供了一系列的保护机制 如任务地址空间的分离 0 3 共四个特权级 特权指令 段和 页的访问权限 只读或只执行等 以及段限检查 虚拟 8086 方式 这是一种既有保护功能 又能执行 8086 代码的工作方式 是一种 动态方式 在此方式下 80386 能够迅速 反复进行虚拟 8086 方式和保护方式的切换 从 保护方式进入虚拟 8086 方式执行 8086 程序 然后离开虚拟 8086 方式 进入保护方式继续 执行固有的 80386 程序 8 80486 有哪些寄存器 简述各寄存器的功能 表 2 4 80486 的寄存器组 基本结构寄存器组系统级寄存器组浮点寄存器组 通用寄存器 指令指针寄存器 标志寄存器 段寄存器 系统地址寄存器 控制寄存器 测试寄存器 调试寄存器 数据寄存器 标记字寄存器 指令和数据指针寄存器 控制字寄存器 9 Pentium 有哪些主要的寄存器 简述各组寄存器的功能 Pentium 的寄存器组织可以分成三大类 即基本寄存器组 系统寄存器组和浮点寄存 器组 其中系统寄存器组只供系统程序访问 其他两组寄存器则供系统程序和应用程序共 同访问 Pentium 微处理器对 80486 的寄存器作了一些扩充 EFLAGS 标志寄存器增加了 两位 VIF 位 19 和 VIP 位 20 它们用于控制 Pentium 虚拟 8086 方式扩充部分的虚 拟中断 控制寄存器 CR0 的 CD 位和 NW 位被重新定义以控制 Pentium 的片内高速缓存 并新增了 CR4 控制寄存器对 80486 结构扩充 此外 还增加了几个模式专用寄存器 用于 控制可测试性 执行跟踪 性能检测和机器检查错误等功能 10 在 8086 系统中 段地址和偏移地址如下所示 请分别计算它们的物理地址 1 F000 0100 物理地址为 F0000H 0100H F0100H 2 2350 1ABC 物理地址为 23500H 1ABCH 24FBCH 3 3200 1234 物理地址为 32000H 1234H 33234H 4 5000 010E 物理地址为 50000H 010EH 5010EH 5 10E0 2020 物理地址为 10E00H 2020H 12E20H 6 2010 1020 物理地址为 20100H 1020H 21120H 7 1000 1000 物理地址为 10000H 1000H 11000H 8 C0C0 C0C0 物理地址为 C0C00H C0C0H CCCC0H 11 从 8086 开始的所有 80 x86 系列微机系统中 寻址内存的地址总线有多少位 内存的寻 址范围为多少 数据宽度为多少 机型地址总线宽度内存地址范围数据总线宽度 808620 位00000H FFFFFH16 位 5 8028624 位000000H FFFFFFH16 位 8038632 位00000000H FFFFFFFFH32 位 8048632 位00000000H FFFFFFFFH32 位 Pentium32 位00000000H FFFFFFFFH64 位 12 简述上题所涉及的各种微机系统的内存组织方式 8086 存储器分段管理 80286 存储器分段管理 在保护方式下 存储器寻址使用 32 位指针 包含一个 16 位 的选择子分量和一个 16 位的偏移量分量 但选择子的内容不再是一个物理存储器的地址的 高 16 位 而是进入某一个存储器常驻表的变址值 所要求的段的 24 位段基地址要从存储 器中的表内取得 16 位偏移量用来加到段基址上 形成 24 位的物理地址 80386 CPU 可直接寻址的物理空间达 4GB 除了保留存储器分段管理外 还增加了 内存分页管理 80386 的段选择寄存器是在 80286 选择寄存器基础之上新增了两个支持当前数据段的 段选择寄存器 FS 和 GS 与段选择寄存器相关联的段描述符高速缓冲器扩充到 64 位 80486 80486 具有 32 位的内存地址空间 对存储器段的访问采用段描述符管理机制 具有三种工作方式 即实地址方式 虚拟地址保护方式和虚拟 8086 方式 在虚拟地址保护 方式下 可寻址 4GB 物理地址空间以及 64TB 虚拟地址空间 80486 内部的存储器管理部件 MMU 由分段部件和分页部件组成 分段部件用来把指 令给出的逻辑地址转换成线性地址 并对逻辑地址空间进行管理 实现多任务之间存储器 空间的隔离和保护 同时也实现了指令和数据区的再定位 分页部件用来把线性地址转换 成物理地址 并对物理地址空间进行管理 实现虚拟存储器技术 Pentium 地址总线仍为 32 位 因此物理寻址范围仍为 4GB Pentium 微处理器在工 作方式方面 还增加了一种 系统管理方式 SMM 以实现对电源和 OS 进行管理等高 级功能 13 简述从 8086 到 Pentium 微处理器在组成结构上的变化 分析这些变化 你能得出什么 结论 8086 8086 微处理器内部分为执行单元 EU 和总线接口单元 BIU 两部分 BIU 单元用来实现 EU 的所有总线操作 EU 单元负责指令的执行 80286 在内部结构上 8086 中的总线接口部件 BIU 在 80286 中又分成了地址部件 AU 指令部件 IU 和总线部件 BU 从而加快了处理器的运行速度 80386 80386 的内部结构由总线接口单元 指令预取部件 指令译码部件 执行部件 分段部件和分页部件 6 个逻辑功能部件组成 每个部件都能独立操作 又可以对同一条指 令的不同部分同时并行操作 使多条指令重叠进行 大大提高了 CPU 的速度 80386 是对 80286 微处理器的彻底改进 在内存管理和处理速度上比 80286 之前的 CPU 有了很大的突 破 是一种功能完善高可靠性的 CPU 并在目标代码上保持与 8086 80286 的向上兼容 80486 80486 芯片的内部结构由总线接口 高速缓存 指令预取 指令译码 控制 算术逻辑运算 浮点运算 分段和分页九大部件组成 这些部件可以重叠工作 并构成五 级流水线的指令处理 芯片内具有 8KB 的数据 指令高速缓存 Cache 可为频繁访问的数据 和指令提供高速缓存 从而加快 CPU 与存储器之间的信息交换 片内集成了浮点运算部件 可支持 32 位 64 位和 80 位的浮点算术运算 由于与 CPU 之间的数据通道总线加宽 而 引线缩短 它们之间的信息交换速度也得到提高 片内具有存储管理部件 MMU 可支持 对存储器地址实施管理和对存储器空间进行保护 6 Pentium Pentium 微处理器的基本组成包括总线接口部件 分页部件 片内 Cache 存 储器 浮点部件 控制部件 执行部件以及分支目标缓冲器等 Pentium 提供了一个称为 分支目标缓冲器 BTB Branch Target Buffer 的 1KB 的 Cache 来动态地预测程序的分支操 作 Pentium 芯片内部集成了 16KB 的 Cache 其中 8KB 作为数据 Cache 另外 8KB 作为 指令 Cache 这两个超高速的 Cache 可以并行工作 将指令 Cache 和数据 Cache 分离的目 的是使指令预取和数据操作之间可能发生的冲突降至最低 从而提高 CPU 的效率 浮点指 令流水线具有 8 级 实际上它是 U 流水线的扩充 U 流水线的前 4 级用来准备一条浮点指 令 浮点部件中的后 4 级执行特定的运算操作并报告执行错误 CPU 内部的功能部件数量增加 集成度依次提高 将某些原在 CPU 外部的功能部件 集成到 CPU 内部 功能越来越完善 第第 3 章章 微型计算机的指令系统微型计算机的指令系统 1 8086 8088 指令系统中操作数的类型有哪几种 关于操作数的寻址方式有哪几类 立即数 寄存器数和内存单元数 立即寻址 寄存器寻址 寄存器间接寻址 直接寻址 寄存器相对寻址 基址加变址 寻址 基址加变址相对寻址 2 指出段地址 偏移地址与物理地址之间的关系 有效地址 EA 又是指什么 段地址左移四位加上偏移地址形成 20 位的物理地址 EA 是指段内偏移地址 即表示段内某单元相对于段起始地址的空间位置 3 指出能用于寄存器间接寻址及变址寻址的寄存器有哪些 它们通常与哪个段寄存器配 合形成物理地址 能用于寄存器间接寻址及变址寻址的寄存器有基址寄存器 BX 和 BP 变址寄存器 SI 和 DI BX SI DI 与 DS 配合形成物理地址 而 BP 与 SS 配合形成物理地址 4 与 8086 相比 80386 的堆栈操作类指令有那些改变 80386 的堆栈操作指令 格式功能 PUSH 32 位立即数将 32 位立即数压入堆栈 该指令执行后 SP 的值将减 4 PUSHAD将所有通用寄存器 EAX ECX EDX EBX ESP EBP ESI 和 EDI 的内容顺序压入堆栈 其中压入堆栈的 ESP 是该指令执 行前 ESP 的值 执行该指令后 ESP 的值减 32 POPAD将当前栈顶内容顺序弹至 EDI ESI EBP ESP EBX EDX ECX 和 EAX 但是最终 ESP 的值为弹出操作对堆栈指针调整后的值 而不是堆栈中保 存的 ESP 的值 即执行该指令后 ESP 的值 可以通过增加 32 来恢复 PUSHFD将 32 位标志寄存器 EFLAGS 的内容压入堆栈 POPFD将当前栈顶的 4 字节内容弹至 EFLAGS 寄存器 5 简述 80386 微处理器中 系统设置和测试指令 的功能 系统设置和测试指令 80386 新增加的 它们一般出现在操作系统中 用于对系统的设 置和测试 1 清除 TS 标志指令 CLTS 这条指令用来清除机器状态字中的任务切换标志 TS 2 存储全局 局部 中断描述符表寄存器指令 SGDT SLDT SIDT 这三条指令分别将 7 全局描述符表寄存器 局部描述符表寄存器或中断描述符表寄存器的内容送到存储器中 3 装入全局 局部 中断描述符表寄存器指令 LGDT LLDT LIDT 这三条指令分别将 存储器中的字节装入全局描述符表寄存器 局部描述符表寄存器或中断描述符表寄存器 局部描述符表寄存器为两个字节 其他两个寄存器为六字节宽 4 存储任务寄存器指令 STR 例如 STR EBX 将任务寄存器的两个字节内 容送到内存 内存首字节地址由 EBX 指出 5 装入任务寄存器指令 LTR 这条指令一般用于多任务操作系统中 它将内存中 两个字节装入任务寄存器 TR 执行 LTR 指令后 相应的任务状态段 TSS 标上 忙 标志 6 装入访问权指令 LAR 本指令将两个字节选择子中的访问权字节送到目的寄存 器 7 装入段界限值指令 LSL LSL 将描述符中的段界限值送目的寄存器 在指令中 由选择子来指出段描述符 8 检测段类型指令 VERR VERW VERR 检测一个选择子所对应的段是否可读 VERW 则检测一个选择子所对应的段是否可写 9 调整请求特权级指令 ARPL 这条指令的功能为调整选择子的 RPL 字段 由此 常用来阻止应用程序访问操作系统中涉及安全的高级别的子程序 ARPL 的第一个操作数 可由存储器或寄存器指出 第二个操作数则必定为寄存器 如果前者的 RPL 最后两位 小于后者的 RPL 则 ZF 置为 1 且将前者的 RPL 增值 使其等于后者的 RPL 否则 ZF 0 并不改变前者的 RPL 10 存储机器状态字指令 SMSW 将机器状态字 MSW 存到内存指定单元对应的两 个字节中 11 装入机器状态字指令 LMSW 本指令将存储器中两个字节送到机器状态字 MSW 中 通过这种方式 可以使 CPU 切 换到保护方式 6 列出 80486 和 Pentium 微处理器新增加的指令 并简述每条指令的功能 除了浮点操作指令系统外 80486 新增加了 6 条指令 1 BSWAP 双字交换 使 32 位寄存器中的操作数按字节首尾交换 即 D31 D24与 D7 D0交换 D23 D16与 D15 D8交换 2 XADD 将源操作数与目的操作数交换并相加 其中源操作数必须为寄存器 而目的操作数可 以是寄存器也可以是内存单元 然后相加 其结果存放在源寄存器中 3 CMPXCHG 比较与交换 该指令使用 3 个操作数 一个寄存器中的源操作数 一个寄存器或内存 储器单元的目的操作数和一个隐含 不出现在用户所书写的指令中 的累加器 AL AX EAX 如果目的操作数与累加器的值相等 源操作数送目的单元 否则将目的 操作数送累加器 4 INVD Cache 无效指令 擦除整个片内 Cache 使之无效 并且启动一个擦除总线周期 使外 部电路清除片外二级 Cache 的内容 5 WBINVD Cache 无效且回写指令 擦除整个片内 Cache 使之无效 并启动一个回写总线周期 8 将片外二级 Cache 中的数据回写到内存中 再清除二级 Cache 中的内容 6 INVLPG 转换检测缓冲器 TLB 无效指令 该指令带有一个操作数 指示 TLB 中的某一项 使 之无效 与 80486 相比 Pentium 新增加了 3 条处理器专用指令和 5 条系统控制指令 但某些 新增的指令是否有效与 Pentium 的型号有关 可利用处理器特征识别指令 CPUID 判别处理 器是否支持某些新增指令 1 处理器特征识别指令 CPUID 根据 EAX 中的参数 将处理器的说明信息送 EAX 特征标志字送 EDX 2 8 字节比较交换指令 CMPXCHG8B 该指令带有一个内存储器单元操作数 它能实现将 EDX EAX 中的 8 字节值与指定 的 8 字节存储器操作数相比较 若相等 则使 ZF 1 且将 ECX EBX 中的值送指定的 8 字节存储单元替换原有的存储器操作数 否则使 ZF 0 且将指定的 8 字节存储器操作数送 EDX EAX 3 读时间标记计数器指令 RDTSC 将 Pentium 中的 64 位时间标记计数器的高 32 位送 EDX 低 32 位送 EAX 该计数器 随每一个时钟递增 在 Reset 后该计数器被置 0 利用该计数器可检测程序运行性能 4 读模型专用寄存器指令 RDMSR 将 ECX 所指定的模型专用寄存器的内容送 EDX EAX 具体来说 高 32 位送 EDX 低 32 位送 EAX 若所指定的模型寄存器不是 64 位 则 EDX EAX 中的对应位无 定义 5 写模型专用寄存器指令 WRMSR 将 EDX EAX 的内容送到由 ECX 指定的模型专用寄存器 具体来说 EDX 和 EAX 的内容分别作为高 32 位和低 32 位 若指定的模型寄存器有未定义或保留的位 则这些位 的内容不变 6 复位到系统管理模式指令 RSM 7 将 32 位寄存器中的内容送控制寄存器 CR4的指令 格式为 MOV CR4 R32 8 将控制寄存器 CR4的内容送 32 位寄存器的指令 格式为 MOV R32 CR4 7 什么是堆栈操作 以下关于堆栈操作的指令执行后 SP 的值是多少 PUSH AX PUSH CX PUSH DX POP AX PUSH BX POP CX POP DX 堆栈被定义为一种先进后出的数据结构 即最后进栈的元素将被最先弹出来 堆栈从 一个称为栈底的位置开始 数据进入堆栈的操作称为压入 或压栈 数据退出堆栈的操作 称为弹出 每进行一次弹出操作 堆栈就减少一个元素 最后一次压入的元素 称为栈顶 元素 压入弹出操作都是对栈顶元素进行的堆栈的两种基本的操作 在进行以上一系列堆栈操作后 SP 指针的值是原 SP 2 9 8 用汇编语言指令实现以下操作 1 将寄存器 AX BX 和 DX 的内容相加 和放在寄存器 DX 中 ADD AX BX ADD DX AX 2 用基址变址寻址方式 BX 和 SI 实现 AL 寄存器的内容和存储器单元 BUF 中的 一个字节相加的操作 和放到 AL 中 ADD AL BYTE PTR BX SI 3 用寄存器 BX 实现寄存器相对寻址方式 位移量为 100H 将 DX 的内容和存储 单元中的一个字相加 和放到存储单元中 ADD 100H BX DX 4 用直接寻址方式 地址为 0500H 实现将存储器中的一个字与立即数 3ABCH 相 加 和放回该存储单元中 ADD 0500H 3ABCH 5 用串操作指令实现将内存定义好的两个字节串 BUF1 和 BUF2 相加后 存放到另 一个串 BUF3 中的功能 MOV CX COUNT MOV SI OFFSET BUF1 MOV DI OFFSET BUF3 MOV BX OFFSET BUF2 AGAIN LODSB ADD AL BX STOSB INC BX DEC CX JNZ AGAIN 9 指出下列指令中 源操作数及目的操作数的寻址方式 1 SUB BX BP 35 寄存器寻址 寄存器相对寻址 2 MOV AX 2030H 寄存器寻址 立即寻址 3 SCASB 隐含操作数为寄存器寻址和寄存器间接寻址 4 IN AL 40H 寄存器寻址 立即寻址 5 MOV DI BX AX 基址加变址寻址 寄存器寻址 6 ADD AX 50H DI 寄存器寻址 寄存器相对寻址 7 MOV AL 1300H 寄存器寻址 直接寻址 8 MUL BL 寄存器寻址 目的操作数为隐含寄存器寻址 10 已知 DS 1000H SI 0200H BX 0100H 10100H 11H 10101H 22H 10600H 33H 10601H 44H 10300H 55H 10301H 66H 10302H 77H 10303H 88H 试分析下列各条指令执行完后 AX 寄存器 的内容 1 MOV AX 2500H AX 2500H 10 2 MOV AX 500H BX AX 4433H 3 MOV AX 300H AX 6655H 4 MOV AX BX AX 2211H 5 MOV AX BX SI AX 6655H 6 MOV AX BX SI 2 AX 8877H 11 判断下列指令是否有错 如果有错 说明理由 1 SUB BL BX 两个操作数的宽度不一样 2 MOV BYTE PTR BX 3456H 将 16 位的立即数传送到一个字节的内存单 元 3 SHL AX CH 移位指令的移位位数用 CL 给出 不能用 CH 4 MOV AH SI DI 不能用两个变址寄存器来实现寻址操作 5 SHR AX 4 只有当移位位数为 1 时 才能用立即数表达 6 MOV CS BX 不能对 CS 实现传送操作 7 MOV 125 CL 立即数不能做目的操作数 8 MOV AX BYTE PTR SI 源操作数限定为字节 与目的操作数宽度不一致 9 MOV DI SI 两个操作数不能同时为内存数 12 设 DS 1000H ES 2000H SS 3000H SI 0080H BX 02D0H BP 0060H 试指出下列指令的源操作数字段是什么寻址方式 它的物理 地址是多少 1 MOV AX 0CBH 立即寻址 2 MOV AX 100H 直接寻址 物理地址为 10100H 3 MOV AX BX 寄存器间接寻址 物理地址为 102D0H 4 MOV AX BP 寄存器间接寻址 物理地址为 20060H 5 MOV AX BP 50 寄存器相对寻址 物理地址为 200B0H 6 MOV AX BX SI 基址加变址寻址 物理地址为 10350H 13 分别说明下列每组指令中的两条指令的区别 1 AND CL 0FH 按位相 与 高 4 位为 0000 低 4 位保留原值 OR CL 0FH 按位相 或 高 4 位为原值 低 4 位为 1111 2 MOV AX BX 将 BX 寄存器的内容传送到 AX 寄存器中 MOV AX BX 将 BX 寄存器所指的内存单元的内容送 AX 寄存器中 3 SUB BX CX BX 寄存器内容减去 CX 寄存器的内容 结果送回到 BX CMP BX CX BX 内容减去 CX 内容 但结果不送回 而根据标志位的情 况做进一步的动作 4 AND AL 01H AL 内容与 01H 相 与 结果为 0000000 x 送回 AL 寄 存器 TEST AL 01H AL 内容与 01H 相 与 结果为 0000000 x 不送回 AL 寄存器 而根据标志位 ZF 情况做进一步的动作 5 JMP NEAR PTR NEXT NEXT 所指指令在当前指令的同段内 16 位地址范 围 JMP SHORT NEXT NEXT 所指指令在当前指令的 8 位地址范围内 6 ROL AX CL 循环左移 进位标志位不参与循环 11 RCL AX CL 循环左移 进位标志位参与循环 7 PUSH AX 将 AX 内容存入栈顶指针处 即进栈操作 POP AX 将栈顶内容弹出装入 AX 寄存器中 即出栈操作 14 试分析以下程序段执行完后 BX 的内容为何 MOV BX 1030H MOV CL 3 SHL BX CL DEC BX 程序执行完后 BX 817FH 执行过程如下 15 写出下列指令序列中每条指令的执行结果 并在 DEBUG 环境下验证 注意各标志位 的变化情况 MOV BX 126BH ADD BL 02AH MOV AX 2EA5H ADD BH AL SBB BX AX ADC AX 26H SUB BH 8 12 第第 4 章章 8086 8088 汇编语言汇编语言 1 8086 汇编语言指令由几部分组成 各部分的作用是什么 名字 指令操作符 操作数 注释 名字可以是常量名 变量名 过程名 段名等标识符等 起标识和标记的作用 指令 操作符字段说明指令的功能 操作数字段提供指令操作所需要的源数据和目的数据 注释 字段用于程序员对语句或程序段落进行解释说明 增加可读性 2 请解释变量和标号的含义 两者有何区别 所定义内存单元的名称为变量 可进行读 写操作 一般为数据区 标号是某条指令的地址标记 在代码段 3 试描述汇编语言源程序的一般结构 STACK SEGMENT STACK DW 256 DUP STACK ENDS DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS CODE SS STACK DS DATA START CODE ENDS END START 4 开发汇编语言源程序的主要步骤有哪些 首先用 EDIT 等编辑程序产生汇编语言的源程序 源程序是用汇编语言的语句编写的 13 且不能为机器所识别的程序 所以要经过汇编程序加以翻译 因此汇编程序的作用就是把 源文件转换成用二进制代码表示的目标文件 称为 OBJ 文件 在转换的过程中 如果源 程序中有语法错误 则汇编结束后 汇编程序将指出源程序中的错误信息 如非法格式 未定义的助记符 标号 漏掉操作数等 用户还可以用编辑程序来修改源程序中的错误 最后得到无语法错误的目标文件 目标文件虽然已经是二进制文件 但它还不能直接上机 运行 必须经过连接程序 LINK 把目标文件与库文件或其他目标文件连接在一起形成可 执行文件 EXE 文件 才可以在机器上运行 5 数值返回运算符有哪几种 简述 LENGTH 与 SIZE 的区别 数值返回运算符有 TYPE LENGTH SIZE OFFSET 和 SEG5 种 这些操作符把一 些特征或存储器地址的一部分作为数值回送 但不改变原操作数的属性 其中 TYPE 是类型操作符 LENGTH 是分配单元长度操作符 SIZE 是分配字节操作符 OFFSET 是偏移量操作符 SEG 是段基址操作符 且有关系 SIZE TYPE LENGTH 6 在 BUF1 变量中依次存储了 5 个字数据 接着定义了一个名为 BUF2 的字单元 表示如下 BUF1 DW 8765H 6CH 0 1AB5H 47EAH BUF2 DW 1 设 BX 中是 BUF1 的首地址 请编写指令将数据 50H 传送给 BUF2 单元 ADD BX 10 MOV WORD PTR BX 50H 2 请编写指令将数据 FFH 传送给数据为 0 的单元 ADD BX 4 MOV WORD PTR BX FFH 7 下面是一个数据段的定义 请用图表示它们在内存中存放的形式 DATA SEGMENT A1 DB 25H 35H 45H A2 DB 3 DUP 5 A3 DW 200 3AB6H A4 DW 3000H 6A6FH DATA ENDS A125H 35H 45H A205H 05H 05H A300H 02H B6H 3AH 14 A400H 30H 6FH 6AH 8 说明下列语句所分配的存储空间及初始化的数据值 1 BYTE VAR DB BYTE 21 42H 3 DUP 0 2 DUP 2 3 2 WORD VAR DW 5 DUP 4 2 0 8 BY TE 256H BYTE VA R 42HWORD VAR04H 59H00H 54H02H 45H00H 15H00H 10111110B00H 004H 00H 202H 300H 200H 300H 04H 000H 02H 200H 300H 200H 304H 00H 002H 00H 200H 300H 204H 300H 02H 00H 00H 00H 11111000B 11111111B 15 42H 59H 54H 45H 56H 02H 9 在下列数据传送程序段中有些使用不当的语句 请改正之 A DB 10H 20H OPQ 4FH B DB N DUP 改为 B DB 6 DUP MOV DI A 改为 MOV DI OFFSET A MOV SI B 改为 MOV SI OFFSET B MOV CX LENGTH A 改为 MOV CX LENGTH B CC MOV AX DI MOV SI AX INC SI INC DI DEC CX 去掉该句 LOOP CC 10 以下程序段落拟实现在同一个段内的调用过程 试判断可行性 如不能实现 请 改正 CODE SEGMENT ASSUME CS CODE BEGIN CALL SUB1 CALL SUB2 SUB1 PROC FAR MOV AX X MOV BX Y MUL BX RET SUB1 ENDP CODE ENDS END START SUB1 应为 NEAR 型 过程 SUB2 并未定义 应定义 SUB2 程序段落改为 CODE SEGMENT ASSUME CS CODE BEGIN CALL SUB1 16 CALL SUB2 SUB1 PROC NEAR MOV AX X MOV BX Y MUL BX RET SUB1 ENDP SUB2 PROC NEAR RET SUB2 ENDP CODE ENDS END BEGIN 11 有一个数据段定义了如下 6 个变量 请写出该数据段 1 BUF1 为十进制数字节变量 64 2 BUF2 为字符串变量 Teacher 3 BUF3 为十六进制数字节变量 2FH 4 BUF4 为双字变量 657AH 5 BUF5 为字变量 657AH 6 BUF6 为二进制数字节变量 10101101B DATA SEGMENT BUF1 DB 64 BUF2 DB Teacher BUF3 DB 2FH BUF4 DD 657AH BUF5 DW 657AH BUF6 DB 10101101B 第第 5 章章 高级汇编技术高级汇编技术 1 何谓宏指令 宏指令在程序中如何被调用 宏指令定义和子程序有什么区别 在编写程序过程中 若遇到一些要多次使用的程序段 为了简化程序 通常采用定义 子程序的方法 同样 也可以采用宏定义的方法来达到这个目的 宏定义是源程序中一段 有独立功能的程序代码 但必须先将这一段程序定义为一条宏指令 并具有一个相应的宏 指令名 在程序中就可以多次调用它 调用时只需要引用一个宏指令名来代替这一段程序 就可以了 宏定义 格式为 宏名 MACRO 形参表 宏体 ENDM 子程序定义 格式为 过程名 PROC 类型 17 过程体 过程名 ENDP 2 结构数据类型如何说明 结构变量如何定义 结构字段如何引用 定义结构的格式为 结构名 STRUC 字段名 数据类型定义语句 结构名 ENDS 定义结构变量 结构变量名 结构名 字段值表 引用结构变量的一般格式为 结构变量名 引用结构变量的字段的一般格式为 结构变量名 字段名 3 试述宏指令与子程序的区别 宏与子程序有本质的区别 主要反映在调用方式 传递参数和使用细节上 子程序和宏定义都可以节省存储空间及程序设计所花的时间 可提供模块化程序设计 的条件 便于程序的调试及修改等 但是在子程序结构中 为转子程序和返回 保存及恢 复寄存器以及参数的传递等操作都要增加程序的开销 这些操作所消耗的时间以及它们所 占用的存储空间 都是为取得子程序结构使程序模块化的优点而增加的额外开销 因此 在子程序本身较短或者是需要传递的参数较多的情况下使用宏汇编技术 子程序是在程序执行期间由主程序调用的 它只占有它自身大小的一个空间 它不仅 是源程序级别的简化 还是目标程序级的简化 形成的目标代码较短 而宏调用则是在汇 编期间展开的 每调用一次就把宏定义体展开一次 它是源程序级的简化 因而它占有的 存储空间与调用次数有关 调用次数越多则占有的存储空间也越大 如果宏调用次数较多 的话 则其空间上的开销也是应该考虑的因素 宏调用的参数通过形参 实参结合实现传递 简洁直观 灵活多变 子程序需要利用 寄存器 存储单元或堆栈等传递参数 对宏调用来说 参数传递错误通常是语法错误 会 由汇编程序发现 而对子程序来说 参数传递错误通常反映为逻辑或运行错误 不易排除 4 用条件汇编实现 如果 AL 寄存器的值小于 20 则对语句块 1 进行汇编 否则对语句 块 2 进行汇编 IF AL LT 20 语句块 1 ELSE 语句块 2 ENDIF 5 记录数据类型如何说明 简述 MASK 和 WIDTH 运算符的功能 RECORD 18 说明 记录定义时 记录名和字段名不能省略 字段的宽度是指相应字段占的二进制 位数 且所有的字段宽度之和不能大于 16 如宽度之和大于 8 位 该记录按字处理 否则 按字节处理 表达式是给字段赋的初值 MASK 运算符返回一个 8 位或 16 位的二进制数 在这个数中 记录字段名所指定的 字段的对应位为 1 其他位为 0 WIDTH 运算符返回记录长度或记录字段在记录中所占的二进制位数 6 定重复汇编与不定重复汇编有哪些区别 定重复汇编使汇编程序对重复体作重复汇编 以整数表达式的值作为重复次数 不定重复汇编使汇编程序对重复体作重复汇编 汇编时 依次将参数表中的参数取出 代替形参 重复体部分的语句序列的重复次数由参数表中的参数个数决定 7 使用重复汇编结构 在内存建立起 0 9 的立方值表 NUM1 0 REPT 10 NUM2 1 NUM2 NUM2 NUM1 DW NUM2 NUM1 NUM1 NUM1 1 ENDM 8 可以实现条件汇编的伪指令有几条 简述这些伪指令之间的区别 条件汇编伪指令及其功能如下 伪指令功能 IF 表达式如果汇编程序求出的表达式非 0 条件为真 IFE 表达式如果汇编程序求出的表达式等于 0 条件为真 IFDEF 符号如果符号在程序中有定义或被说明为 EXTRN 条件 为真 IFNDEF 符号如果符号在程序中无定义或未被说明为 EXTRN 条 件为真 IFB 如果参数为空 条件为真 IFNB 如果参数不为空 条件为真 IFIDN 如果字符串 1 和字符串 2 相同 条件为真 IFDIF 如果字符串 1 和字符串 2 不相同 条件为真 IF1如果是第一遍扫描 条件为真 IF2如果是第二遍扫描 条件为真 9 下面是用 STRUC 伪指令定义的参数表 SUBLIST 请定义结构变量以实现此结构的存 储区的分配 SUBLIST STRUC MXLEN DB 60 ACLEN DB SUBIN DB 60 DUP SUBLIST ENDS 结构变量定义如下 19 LIST1 SUBLIST 10 编写宏定义 DISPLAY 使其能在当前光标位置显示字符串 字符串的首地址由 BX 寄 存器指出 DISPLAY MACRO MOV DX BX MOV AH 9 INT 21H ENDM 11 编写宏定义 SUM 其功能是将一组数据累加 数据存放的首地址在 SI 寄存器中 数 据的个数在 CL 寄存器中 SUM PROC SUMM MOV AX 0 LOP ADD AX SI INC SI DEC CL JNZ LOP ENDM 12 定义 20 名教师的记录变量 通过输入数据得到教师的基本信息 然后统计年龄满 40 岁的男教师的人数 DATA SEGMENT TEACHER RECORD NUM 4 SEX 1 AGE 6 MAJOR 5 ARRAY TEACHER 40 DUP COUNT DB 0 DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START PUSH DS MOV AX 0 PUSH AX MOV AX DATA MOV DS AX MOV CH 40 MOV BX OFFSET ARRAY NEXT MOV AX BX TEST AX MASK SEX JZ NEXT1 MOV CL AGE MOV DX MASK AGE AND AX DX SHR AX CL CMP AL 40 JL NXET1 20 INC COUNT NEXT1 ADD BX 2 DEC CH JNE NEXT RET CODE ENDS END START 13 编程实现如下功能 如果变量 A MA32 则汇编 MOV RESULT 0 否则汇编 MOV RESULT 1 IF A MA32 MOV RESULT 0 ELSE MOV RESULT 1 ENDIF 14 定义一个能实现多个字节数据连减功能的宏 即 a b c d RESULT 减数 的个数存放在某内存单元中 最后结果 RESULT 存入另一内存单元中 SUBM MACRO X Y Z MOV DI OFFSET X MOV CX DI MOV DI OFFSET Y MOV AX DI INC DI LOP SUB AX DI INC DI DEC CX JNZ LOP MOV DI OFFSET Z MOV DI AX ENDM 第第 6 章章 汇编语言程序设计汇编语言程序设计 1 在 8086 8088 汇编语言中 如何实现过程的定义与调用 子程序的定义是由过程定义伪指令来实现的 一个过程是一段程序 以 PROC 伪指令 语句开始 以 ENDP 伪指令语句结束 格式如下 过程名 PROC NEAR 或 FAR 过程体语句 RET 过程名 ENDP 子程序 过程 调用指令 CALL 的格式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东高考化学试题(解析版)
- 销售工作题目大全及答案
- 葡萄酒盲品知识培训
- 2025联名合伙合同书范本版
- 2025高考物理试题分类汇编:万有引力与宇宙航行(解析版)
- 2025综合雇佣合同范本
- 2025-2026学年人教版六年级数学上册应用题平均数问题专项练习题【含答案】
- 物业安全操作试题及答案
- 2025车辆买卖协议合同
- 2025年公共自行车锁车器设备项目合作计划书
- 女装销售店长培训课件
- 2025年潍坊市中考物理真题卷(含答案)
- 连锁餐饮合伙合同范本
- 酒管专业导论考试题及答案
- 2025外研社小学英语四年级上册单词表(带音标)
- 2025至2030中国体育赛事行业市场发展分析及发展前景与投资报告
- 小学戏剧教学课本剧剧本集锦
- 【一年级上册语文统编版(2024)-第四单元汉语拼音】14. ang eng ing ong第二课时课件
- 2025年交管12123驾驶证学法减分及驾驶安全理论知识试题库(附含答案)
- 知识产权保护与服务平台创新创业项目商业计划书
- 2025年胎膜早破护理胎膜早破护理查房模板
评论
0/150
提交评论