汇编语言程序设计_东大函授0

更新时间:2023-04-24 11:02:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

内 容 简 介自学内容: 自学内容:第一章 概述 第二章 计算机运算基础 第九章 条件汇编与宏命令 第十章 算术运算与代码运算 第十一章 列表与字符串操作 第十七章 通信程序设计 第十八章 8087/80287/80387程序设计 程序设计 第十九章 MMX的程序设计 的程序设计

内 容 简 介函授内容: 函授内容:第三章 微型计算机的结构 第四章 汇编语言 第五章 顺序结构程序 第六章 分支结构程序 第七章 循环结构程序 第八章 子程序设计 第十二章 输入输出与中断 第十三章 显示程序设计 第十四章 键盘程序设计 第十五章 打印程序设计 第十六章 定时及音响程序设计

第三章 微型计算机的结构3.1 微处理机的结构(一)8086微型处理机结构 微型处理机结构 8086微处理器逻辑框图 8086微处理器逻辑框图:分EU与BIU两部分: 微处理器逻辑框图: EU与BIU两部分 两部分: 执行部件(EU):由ALU、通用寄存器组、 ﹡执行部件(EU):由ALU、通用寄存器组、状态寄存 器及操作控制器电路组成。 器及操作控制器电路组成。 总线接口部件(BIU):由专用寄存器 由专用寄存器、 ﹡总线接口部件(BIU):由专用寄存器、指令队列缓冲 地址加法器等功能部件组成。形成对外总线, 器、地址加法器等功能部件组成。形成对外总线,与 存储器、I/O接口电路进行数据传输。 存储器、I/O接口电路进行数据传输。 接口电路进行数据传输 BIU的流水线操作 的流水线操作: BIU可独立工作 可独立工作, ﹡EU 与 BIU的流水线操作: EU 与 BIU可独立工作, BIU在保证 与片外传送操作数前提下 BIU在保证EU与片外传送操作数前提下,可进行指令 在保证EU与片外传送操作数前提下, 预取, EU可重叠操作 预取,与EU可重叠操作。

地址总线(20位 地址总线(20位) AH BH CH DH SP BP SI DI AL BL CL DL Σ数据总线

通用寄存器

8086 暂存寄存器

ALU数据总线 ALU数据总线 (16位) 16位

CS DS SS ES IP 内部通信 寄存器

(16位) 16位

总线 控制 逻辑

8086 总线

ALU

EU 控制 系统

Q总线 16位 16位

指令队列

1 2 3 4 5 6总线接口部件 BIU) (BIU)

标志

指令执行部 EU) 件(EU)

1. 指令执行部件EU 指令执行部件EU由算术逻辑单元(ALU)、标志寄存器、通用寄存器 算术逻辑单元(ALU) 标志寄存器、 EU控制器等部件组成。 控制器等部件组成 组和EU控制器等部件组成。 主要功能是执行指令: 主要功能是执行指令: 一般顺序执行,EU不断地从指令队列中取指令连续 ○一般顺序执行,EU不断地从指令队列中取指令连续 执行,而省去访问存储器取指令的时间。 执行,而省去访问存储器取指令的时间。 需要访问存储器取操作数时,EU将访问地址送

给 ○需要访问存储器取操作数时,EU将访问地址送给 BIU后 将要等待操作数到来后才能继续操作; BIU后,将要等待操作数到来后才能继续操作; 遇到转移类指令时, ○遇到转移类指令时,要将指令队列中的后续指令作 等待BIU重新从存储器取出目标地址中的指令代 废,等待BIU重新从存储器取出目标地址中的指令代 码进入指令队列后,EU才能继续执行指令 才能继续执行指令。 码进入指令队列后,EU才能继续执行指令。

算术逻辑单元(ALU) 算术逻辑单元(ALU) 完成16位或8位的二进制运算; 完成16位或 位的二进制运算; 位或8 16位暂存寄存器用来暂存参加运算的操作数。 16位暂存寄存器用来暂存参加运算的操作数 位暂存寄存器用来暂存参加运算的操作数。 运算结果通过内部总线送到通用寄存器组或 BIU的内 运算结果通过内部总线送到通用寄存器组或BIU 的内 部寄存器中等待写入存储器。 部寄存器中等待写入存储器。 经ALU运算后的结果特征置入标志寄存器中保存。 ALU运算后的结果特征置入标志寄存器中保存 运算后的结果特征置入标志寄存器中保存。 EU控制器 EU控制器 负责从BIU的指令队列中取指令,并对指令译码; 负责从BIU的指令队列中取指令 并对指令译码; 的指令队列中取指令, 根据指令要求向EU内部各部件发出控制命令以完成各 根据指令要求向EU内部各部件发出控制命令以完成各 条指令的功能。 条指令的功能。 通用及标志寄存器

2. 总线接口部件BIU 总线接口部件BIU由 地址加法器 、 专用寄存器组 、 指令队列缓冲器 和 总线控制 地址加法器、专用寄存器组、指令队列缓冲器和 电路等部件组成 等部件组成; 电路等部件组成; 主要功能是形成访问存储器的物理地址,负责与外部( 主要功能是形成访问存储器的物理地址 , 负责与外部 ( 存储 器或I/O接口 打交道。 器或I/O接口)打交道。 接口) 正常情况下, BIU通过地址加法器形成指令的物理地址 通过地址加法器形成指令的物理地址, 正常情况下 , BIU 通过地址加法器形成指令的物理地址 , 从 给定存储器地址中取出指令代码送指令队列缓冲器中等待执行 指令队列缓冲器中出现一个空字节,BIU将自动进行读指令的 (指令队列缓冲器中出现一个空字节,BIU将自动进行读指令的 操作填满队列) 操作填满队列) 收到EU送来的操作数地址 BIU将立即形成操作数的物理地 送来的操作数地址, 收到 EU送来的操作数地址, BIU将立即形成操作数的物理地 完成读/ 写操作数或运算结果功能。 遇到转移类指令, 址 , 完成读 / 写操作数或运算结果功能 。 遇到转移类指令 , B

IU 将指令队列缓冲器中的尚存指令作废, 将指令队列缓冲器中的尚存指令作废,重新从存储器目标地址中 取指令送指令缓冲器中。 取指令送指令缓冲器中。

指令队列 可存放6字节的指令代码。 可存放6字节的指令代码 。 一般情况下指令队列中总是 填满指令, EU可不断地得到执行的指令 可不断地得到执行的指令。 填满指令,使EU可不断地得到执行的指令。 16位地址加法器 16位地址加法器 专门用来完成由逻辑地址变换成物理地址的功能。 专门用来完成由逻辑地址变换成物理地址的功能。实际 上是进行一次地址加法,将两个16位的逻辑地址转换为 上是进行一次地址加法,将两个16位的逻辑地址转换为 20位的物理地址,以达到可寻址1M字节的存储空间。 20位的物理地址 以达到可寻址1 字节的存储空间。 位的物理地址, 总线控制电路 将 8086CPU的内部总线与外部总线相连 , 是 8086CPU 8086CPU 的内部总线与外部总线相连 的内部总线与外部总线相连, 8086CPU 与外部交换数据的必经之路。包括16条数据总线 20条 条数据总线、 与外部交换数据的必经之路。包括16条数据总线、20条 地址总线和若干条控制总线。 地址总线和若干条控制总线。

3. 8086内部寄存器 8086内部寄存器

通用寄存器组通用寄存器( 通用寄存器(8个)可分为两组: 可分为两组: 数据寄存器(4个); 数据寄存器( 地址指针和变址寄存器(4个)。 地址指针和变址寄存器( (1)数据寄存器 通用寄存器AX 、 BX 、 CX和 DX称为数据寄存器 通用寄存器 AX、 BX、 CX 和 DX 称为数据寄存器 , 称为数据寄存器, 可用来存放16位的数据或地址 也可把它们当作八个8 位的数据或地址。 可用来存放16位的数据或地址。 也可把它们当作八个8 位寄存器( AH 、 AL、 BH 、 BL 、 CH、CL、 DH、 DL) 位寄存器 ( AH、 AL、 BH、 BL、CH 、 CL 、 DH、 DL) 来使用,这时只能存放8位数据,而不能用来存放地址。 来使用 , 这时只能存放8位数据, 而不能用来存放地址 。

寄存器名 AX,AL

AH AL

BX

CX CL DX

特 殊 用 途 在输入/ 在输入/输出指令中作数据寄存器用 在乘法指令中, 在乘法指令中,存放被乘数或乘积 在除法指令中, 在除法指令中,存放被除数或商数 LAHF指令中 指令中, 在LAHF指令中,作目标寄存器用 在十进制运算指令中作累加器用 XLAT指令中作基址寄存器用 在XLAT指令中作基址寄存器用 在间接寻址中作基址寄存器用 XLAT指令中作基址寄存器用 在XLAT指令中作基址寄存器用 在串处理和LOOP指令中作计数器用 在串处理和LOOP指令中作计数器用 在移位/ 在移位/循环移位指令中作移位次数计数器用 字乘法/ 字乘

法/除法指令中存放乘积高位或被除数高位或余数 在间接寻址的输入/ 在间接寻址的输入/输出指令中作地址寄存器用

(2)地址指针和变址寄存器 包括SP、BP、SI、DI四个 位寄存器 四个16位寄存器。 包括SP、BP、SI、DI四个16位寄存器。 可以在运算过程中存放操作数 , 但只能以字 ( 16位 ) 可以在运算过程中存放操作数, 但只能以字( 16 位 为单位使用。 为单位使用。 常用在段内寻址时提供偏移地址: 常用在段内寻址时提供偏移地址: SP ( Stack Pointer ) 称 为 堆 栈 指 针 寄 存 器 , BP Pointer)称为基址指针寄存器, (Base Pointer)称为基址指针寄存器,它们都可以与 SS 寄存器联用确定堆栈段中的某一存储单元的地址 。 SS寄存器联用确定堆栈段中的某一存储单元的地址 寄存器联用确定堆栈段中的某一存储单元的地址。 SP用来指示栈顶的偏移地址 , BP可作为堆栈区中的一 SP用来指示栈顶的偏移地址 BP可作为堆栈区中的一 用来指示栈顶的偏移地址, 个基地址以便访问堆栈。 个基地址以便访问堆栈。 SI(Source Index)源变址寄存器和DI(Destination SI( Index)源变址寄存器和DI( Index)目的变址寄存器:它们一般与DS联用 Index)目的变址寄存器:它们一般与DS联用,用来确 联用, 定数据段中某一存储单元的地址。 定数据段中某一存储单元的地址。

寄存器名

SI DI BP SP

特 殊 用 途 在字符串处理指令中作源变址寄存器用 在间接寻址中作变址寄存器用 在字符串处理指令中作目标变址寄存器用 在间接寻址中作变址寄存器用 在间接寻址中作基址指针用 在堆栈操作中作堆栈指针用

段寄存器组

8086CPU的BIU中设置 8086CPU的BIU中设置4个16位段寄存器: 中设置4 16位段寄存器 位段寄存器: 代码段寄存器CS(Code Segment) 代码段寄存器CS( Segment) 数据段寄存器DS(Data Segment) 数据段寄存器DS( Segment) 附加数据段寄存器ES(Extra Segment) 附加数据段寄存器ES( Segment) 堆栈段寄存器SS(Stack Segment) 堆栈段寄存器SS( Segment)

设置段寄存器的原因: 设置段寄存器的原因: 由于8086CPU可直接寻址的存储器空间是 字节 由于8086CPU可直接寻址的存储器空间是1M字节, 可直接寻址的存储器空间是1M字节, 需要20位地址码 位地址码。 CPU所有的内部寄存器都只有16 所有的内部寄存器都只有 需要20位地址码。而CPU所有的内部寄存器都只有16 用这些寄存器只能直接寻址64K字节 字节。 位,用这些寄存器只能直接寻址64K字节。 为此把1M字节的存储空间分成许多逻辑段, 为此把1M字节的存储空间分成许多逻辑段,每段最 字节的存储空间分成许多逻辑段 长为64k字节 这

些逻辑段可在整个存储空间中浮动。 字节, 长为64k字节,这些逻辑段可在整个存储空间中浮动。 于是用段寄存器给定各个逻辑段的首地址的高16位 于是用段寄存器给定各个逻辑段的首地址的高16位,被 称为段地址。 称为段地址。

总之, 总之 , 汇编程序一般将源程序分成四个逻 辑段, 代码段CS 、 数据段DS 、 堆栈段SS 和 辑段 , 即 代码段 CS、 数据段 DS、 堆栈段 SS和 附加段ES。 附加段ES。CS→

代码段 数据段 堆栈段 附加段

CS:存放代码段的段基地址。 CS:存放代码段的段基地址。 DS:存放数据段的段基地址。 DS:存放数据段的段基地址。 SS:存放堆栈段的段基地址。 SS:存放堆栈段的段基地址。 ES:存放附加段的段基地址。 ES:存放附加段的段基地址。

DS→ SS→ ES→

控制寄存器组 (1)指令指针寄存器IP(Instruction Pointer) 指令指针寄存器IP( Pointer) 8086CPU 中设置一个 位指令指针寄存器 , 8086CPU中设置一个 16位指令指针寄存器 IP, 用来 中设置一个16 位指令指针寄存器IP 存放将要取出的下一条指令在代码段中的偏移地址。 存放将要取出的下一条指令在代码段中的偏移地址。 在程序运行过程中,BIU可修改 中的内容 可修改IP中的内容, 在程序运行过程中,BIU可修改IP中的内容,使它始 终指向将要取出的下一条指令。 终指向将要取出的下一条指令。 注意: 注意: IP与CS联用, 表示代码段中要处理的指令的逻辑地址; IP与CS联用 表示代码段中要处理的指令的逻辑地址; 联用, IP和CS由系统执行,用户一般不能使用或修改。 IP和CS由系统执行 用户一般不能使用或修改。 由系统执行,

(2)标志寄存器FLAGS 标志寄存器FLAGS

8086CPU中设立一个两字节的标志寄存器 8086CPU中设立一个两字节的标志寄存器FLAGS(又 中设立一个两字节的标志寄存器FLAGS( PSW、FR), ),有 个标志位: 称PSW、FR),有9个标志位: 6个状态标志位,表示运算结果的状态,包括CF、 状态标志位,表示运算结果的状态,包括CF、 CF PF、AF、ZF、SF和OF; PF、AF、ZF、SF和OF; 3个控制标志位,用来控制CPU的操作,包括IF、 控制标志位,用来控制CPU的操作 包括IF、 的操作, DF和TF。 DF和TF。 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 × × × × OF DF IF TF SF ZF ×AF × PF × CF

80286、80386及80486微处理器 (二)80286、80386及80486微处理器位结构, 寻址空间, ﹡80286:16位结构,16MB寻址空间,支持保护 : 位结构 寻址空间 方式,可执行多任务,速度比8086快。 方式,可执行多任务,速度比 快 位结构, 寻址空间, ﹡80386:32位结构,4GB寻址空间,支持保护 : 位结构 寻址空间 方

式,可执行多任务,性能大大优于16位结构。 方式,可执行多任务,性能大大优于 位结构。 位结构 位结构, 有很大改进, ﹡80486: 32位结构,比80386有很大改进, : 位结构 有很大改进 片内FPU,片内 片内Cache,速度比 块很多。 片内 片内 ,速度比80386块很多。 块很多

本文来源:https://www.bwwdw.com/article/k2xq.html

Top