微型计算机及接口技-第三章(8086汇编语言程序设计)

273 阅读6分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

考核大纲

一、学习目的和要求

微型计算机系统不能只有硬件,离开软件,微机只是一个空壳子。指令系统是软件开发最基本的要素。本章主要介绍886统汇语程设计的基本方法。通过本章的学习,学生要掌握8086式能,掌各类寻址方式以及8086汇编程序的基本结构,能读懂汇编语言程序,并能写基本的汇编语言程序。

课程内容

  1. 8086指令寻址方式。
  2. 8086 汇编语言格式。
  3. 8086 汇编语言伪指令。
  4. 8086汇编指令与汇编语言程序设计。

三、考核知识点与考核要求

  1. 8086指令寻址方式
  2. 领会:8086指数式转操作寻址方式。
  3. 8086汇编语言格式
  4. 识记:汇编语言语句格式、常量、标识符、表达式。领会:汇编语言源程序结构。
  5. 8086 伪指令与操作数运算符
  6. 简单应用:数据定义和存储器分配伪指令,表达式赋值伪指令,地址计数器和对准伪指令,程序开始与结束伪指令,简化段定义伪指令。
  7. 8086汇编指令与汇编语言程序设计 简单应用:人机交互程序和相关指令,顺序程序结构和相关指令,分支程序结构和相指令,循环程序结构和相关指令,子程序结构和相关指令。

四、本章重点、难点本章重点包括

  1. 8086指令寻址方式。
  2. 8086 汇编语言伪指令。
  3. 8086汇编指令与汇编语言程序设计。
  4. 常见的DOS 功能调用和 BIOS 功能调用。
  5. 本章难点包括:
  6. 8086 指令寻址方式。
  7. 8086汇编指令与汇编语言程序设计。
  8. 汇编指令与硬件信号之间的关系。

知识点汇总

第一节 8086指令寻址方式

一、数据寻址

  1. 立即寻址,操作数直接存放在指令中,紧跟在操作码的后面,作为指令的一部分放在代码段中。
  2. 寄存器寻址,速度最快。
  3. 存储器寻址
  4. I/O端口寻址

3.存储器寻址

有效地址EA:计算机执行程序时,根据指令给出的寻址方式,计算出操作数的地址,然后从该地址中取出操作数进行指定的操作,或者把操作数结果送入某一操作数地址中去。

直接寻址

直接寻址方式是在指令的操作码后直接给出操作数的有效地址EA,默认端是DS段

物理地址=(DS)*10h+EA

    1. MOV AX,[1234H]
    1. MOV BL,SS:[10H]
寄存器间接寻址

存储器操作数的有效地址放在一个基址寄存器(BX,BP)或变址寄存器(SI,DI)中,指令中放到是寄存器的编号,需要通过寄存器号找到有效地址的方式。

  • BX SI DI 默认访问DS段
  • BP 访问SS段
  • MOV AX,[SI]
  • MOV BL,[BP]
  • ADD AX,ES:[BX]
基址寻址

以基址寄存器(BX.BP)的内容为基准地址,再加上指令中给出一个8位或16位的地址位移量而得存储器操作数的有效地址。

  • BX作为基址寄存器默认访问DS段
  • BP默认访问SS段
  • MOV BL,10H[BP]
  • ADD AX ES:[BX+200H]
  • MOV AX,[BX+10H]
变址寻址

指令中给出一个位移量作为基准地址,再同变址寄存器的内容相加作为存储器操作数的有效地址。

  • 变址寄存器只能选SI和DI 默认访问DS段。
  • MOV AX,[SI+120H]
基址编制寻址

是基址和变址两种方式的组合

  • MOV AX,10H[BP][SI]
  • MOV AL,[BX+SI+10H]

4.I/O端口寻址

I/O端口直接寻址
  • IN AL,20H
  • OUT 60H,AX ;将AX中1个字送到60H和61H端口中
I/O端口间接寻址
  • MOV DX,3FCH
  • IN AL,DX

二、转移操作寻址

  • 段内相对寻址
  • 段内间接寻址
  • 段间直接寻址
  • 段间间接寻址

第二节 8086汇编语言基础

一、

汇编语言是一种介于机器语言与高级语言之间的,以符号方式表示的面向机器的计算机程序语言。

  • 汇编语言程序特点:
  1. 采用分段结构
  2. 端内由若干汇编语句组成
  3. 使用起始标号
  4. 程序开始的语句
  5. 程序要正常退出到操作系统 MOV AX,4C00H INT 21H

第三节 8086汇编伪指令与操作数运算符

数据定义伪指令

  • DB-字节
  • DW-定义字
  • DD-定义双子
  • DF-定义6字
  • DQ-定义8字
  • DT-定义10字

第四节 8086汇编指令与汇编语言程序设计

一、程序设计概述

1.程序的设计原则

  1. 程序必须是正确和完整的
  2. 程序应该结构清晰、简介明了、注释详尽、易于阅读和维护
  3. 程序要尽量做到运算速度快、占用内存少,要在这两者之间取得一个较好的平衡

三、8086基本指令与顺序程序的编写

立即数不能直接赋值给段寄存器

  • MOV AX,3000H
  • MOV DS,AX
  • CMP指令除了不把结果写到dest,其他一切都与SUB指令一样。
  • XOR 亦或指令,相同为0,不同为1。
  • 题:测试AL中的数是否为奇数
  • TEST AL,01H
  • JNZ NEXT ;ZF=0说明AL最低位是1,为奇数,跳转。
  • JE/JZ 等于/为零转移 ZF=1
  • JNE/JNZ 不等于/不为零转移 ZF=0

循环结构程序设计

循环程序的组成

  1. 初始化部分
  2. 工作部分
  3. 修改部分
  4. 控制部分
  5. 结束部分
  6. 现场保护和现场恢复:为了保证主程序在调用子程序后,主程序所用的寄存器的内容不被破坏,子程序在完成自己功能前,将要用到的寄存器的值先保存起来,这个称为现场保护。等子程序功能执行后,将这些寄存器的值恢复,这个过程称为现场恢复。
  7. 子程序嵌套:如果一个子程序调用另一个子程序
  8. 递归:如果子程序直接或间接的调用它自己。二者均受堆栈大小的限制

结尾

下一章 第四章 内部存储器及其接口