汇编语言课程设计课程内容

分类:N08_C与汇编

标签:

汇编语言课程设计课程内容

1. 绪论

1.1 我们要学汇编语言

汇编语言仍在发挥不可替代的作用:

效率

运行效率:开发软件的核心部件,快速执行和实时响应开发效率:做适合的事,开发效率无敌

底层:计算机及外围设备的驱动程序

操作系统的内核嵌入式系统:家用电器、仪器仪表、物联网等等

汇编语言在学习计算机中起到的独特作用-直击计算机系统的核心

便于加深对计算机原理和操作的理解通过学习和使用汇编语言,能够感知,体会和理解及其的逻辑功能

向上为理解各种软件系统的原理,打下技术理论基础向下为掌握硬件系统的原理,打下实践应用基础

学会底层的程序调试和错误分析方法

1.2 由机器语言到汇编语言
机器语言与机器指令
  1. 机器语言是机器指令的集合

  2. 机器指令是一台机器可以正确执行的命令

  3. 机器指令是由一串二进制数表示,例:01010000

  4. 电平脉冲:高低电平组成

  5. 早期程序员门的工作状态

    将0、1的数字编程的程序代码打在卡带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。

汇编语言与汇编指令
  1. 汇编语言的主题是汇编指令

  2. 汇编指令和机器指令的差别在于指令的表示方法上

    汇编指令是机器指令便于记忆的书写格式汇编指令是机器指令的助记符

    机器指令:1000100111011000
    操作:将寄存器BX的内容送到AX中
    汇编指令:MOV AX BX
  3. 寄存器:CPU中可以存储数据的器件,一个CPU中有多个寄存器

  4. 用汇编语言编写程序的工作过程程序员->编写->汇编指令->经过编译器->生成->机器码

    ;汇编语言程序实例
    assume cs:codesg
    codesg segment
    start:
    mov ax, 0123H
    mov bx, 0456H
    add ax, bx
    add ax, ax

    mov ax, 4c00h
    int 21h
    codesg ends
    end

    以上代码说明:

    伪指令(由编译器执行)如:assume, codesg汇编指令(机器码的助记符)如:mov, add其他符号(由编译器识别)如:start, end

1.3 计算机的组成
1.4 内存的读写与地址空间
1.5 汇编语言实践环境搭建


2. 访问寄存器和内存

2.0 阶段导学
2.1 寄存器及数字存储
  1. 8086CPU有14个寄存器

    • 通用寄存器:AX、BX、CX、DX

    • 变址寄存器:SI、DI

    • 指针寄存器:SP、BP

    • 指令指针寄存器:IP

    • 段寄存器:CS、SS、DS、ES

    • 标志寄存器:PSW

  2. 共性

    • 8086CPU所有的寄存器都是16位的,可以存放2个字节

2.2 mov和add指令
  1. 学习汇编指令 - 用中学

汇编指令控制CPU完成的操作用高级语言的语法描述
mov ax, 18将18送入AXAX =18
mov ah, 78将78送入AHAH = 78
add ax, 8将寄存器AX中的数值加上8AX=AX+8
mov ax, bx将寄存器BX中的数据送入寄存器AXAX=BX
add ax, bx将AX,BX中的内容相加,结果存到AX中AX=AX+BX

注:汇编指令不区分大小写

2.3 确定物理地址的方法
  1. 物理地址

    • CPU在访问内存时,用一个基础地址(段地址X16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址

    • 物理地址 = 段地址X16 + 偏移地址例如:

    • 用两个16位地址(段地址、偏移地址)合成一个20位的物理地址

    • 8086有20位地址总线,可传递20位地址,寻址能力为1M

    • 8086是16位结构的CPU

    • CPU访问内存单元时要给出内存单元的地址

    • 所有的内存单元构成的存储空间室一个一维的线性空间

    • 每一个聂村单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址

    • 事实

    • 问题:8086如何处理在地址空间上的这个矛盾

    • 8086CPU的解决办法:

    • 地址加法器合成物理地址的方法


        段地址:1230
       + 偏移地址: 00C8
        ---------------
         物理地址:123C8
    • 本质含义:

    1. 运行器一次最多可以处理16位的数据,寄存器的最大宽度为16位

    2. 在8086内部处理的、传输、暂存的地址也是16位,寻址能力也只有64KB

2.4 内存的分段表示法
用分段的方式管理内存
  1. 8086CPU用“(段地址X16)+偏移地址= 物理地址”的方式给出内存单元的物理地址

  2. 存层并没有分段,段的划分来自于CPU

同一段内存,多种分段方案
  1. 起始地址(基础地址)为10000H

  2. 段地址位1000H,大小为100H

或者:

  1. 起始地址(基础地址)为10000H和10080H,

  2. 段地址为1000H和1008H,大小均为80H

用不同的段地址和偏移地址形成同一个物理地址
物理地址段地址偏移地址
21F60H2000H1F60H
21F60H2100H0F60H
21F60H21F0H0F60H
21F60H21F6H0000H
21F60H1F00H2F60H
  1. 在8086PC机种存储单元地址的表示方法

  2. 例如:数据在21F60H内存单元中,段地址是2000H,说法

  1. 偏移地址16位,变化范围为0-FFFH,用偏移地址最多寻址64KB

  2. 例:给定段地址2000H,用偏移地址寻址的范围:20000H-2FFFFFH,共64K

段地址很重要! 用专门的寄存器存放段地址

4个段寄存器:

偏移地址可以用多种方式提供- 8086丰富的取址方式

2.5 Debug的使用
Debug是什么
  1. Debug 是DOS系统中的著名的调试程序,也可以运行在windows系统模式下

  2. 使用Debug程序,可以查看CPU各种寄存器中的内容、内存的情况,并且在机器指令级跟踪程序的运行

2.6 CS、IP与代码段
两个关键的寄存器
  1. CS:代码段寄存器

  2. IP:指令指针寄存器

  3. CS:IP :CPU将内存中CS:IP 指向的内容当作指令执行

  4. 示例:在CS和IP指示下代码的执行

    • 8086CPU当前状态:CS中内容为2000H,IP中内容为0000H,通过地址加法器获得内存实际地址,并通过数据总线将指令输入到指令缓冲器,等待cup执行。

    • 内存20000H-20009H处存放着可执行的机器代码

  5. 8086PC工作过程的简要描述:

    • 1.从CS:IP 指向内存单元读取指令,读取的指令进入指令缓冲器

    • 2.IP = IP + 所读取指令的长度,从而指向下一条指令

    • 3.执行指令,转到步骤1,重复这个过程

2.7 jump指令
3.1 内存中字的存储
3.2 用DS和[address]实现字的传送
3.3 DS与数据段
3.4 栈与栈操作的实现
3.5 关于“段”的总结

3. 汇编语言程序

4. 内存寻址方式

5. 流程转移和子程序

6. 中断及其应用

7. 高级汇编语言技术





修改内容