80x86汇编语言程序设计 第2章 80x86计算机系统组织

合集下载

第2章80x86计算机组织

第2章80x86计算机组织

第2章 微型计算机概论
状态标志寄存器F
8086 CPU的状态标志寄存器是一个16位的寄存 器,9个位用作标志位,其中状态标志位有6个,控 制标志有3个。状态标志用来反映EU执行算术或逻 辑运算以后的结果特征。这六位都是逻辑值,判断 结果为逻辑真(true)时其值为1;判断结果为逻 辑假(false)时,其值为0。
80x86的寄存器结构
31
EAX EBX ECX EDX ESP EBP ESI EDI EIP EFLAGS
16 15
AH BH CH DH
8 7
AX BX CX DX SP BP SI DI IP FLAGS CS DS SS ES FS GS AL BL CL DL
0
8086 / 8088 / 80286
8086有20根地址线,具有220=1M字节的存储 器地址空间。内存单元按照00000H~FFFFFH来编 址。
第2章 微型计算机概论
存储器的分段
8086存储器操作采用了典型的存储器分 段技术,对存储器的寻址操作不是直接 用20位的物理地址,而是采用段地址加 段内偏移地址的二级寻址方式。 物理地址=段基址×10H+偏移地址 =(段基址左移4 位+偏移地址)
第2章 微型计算机概论
*2.2.4 微型计算机的结构
1.微型计算机的结构采用的是总线结构
第2章 微型计算机概论
*2.总线结构的概念
总线是传输信号的一组导线,作为微机各部件之间信息传输 的公共通道。 微处理器通过系统总线实现和其他组成部分的联系。 微机的系统总线按功能分成三组: 数据总线 DB:是传输数据或代码的一组通信线,其宽度(总 线的根数)一般与微处理器的字长相等。 地址总线 AB:是传输地址信息的一组通信线,是微处理器访 问外界用于寻址的总线。AB总线是单向的,其根数决定了可以 直接寻址的范围。 控制总线 CB:是传送各种控制信号的一组通信线。控制信号 是微处理器和其他芯片间相互联络或控制用的。

IBM-PC汇编语言程序设计第2章80X86计算机组织.

IBM-PC汇编语言程序设计第2章80X86计算机组织.
返回本节
第2章 80X86计算机组织
2.4.2
存储器单元的地址和内容
存储单元地址 :8086系统中,为了标识和存取每一个存储 单元,给每个存储单元规定一个编号,这就是存储单元地 址,地址从0开始编号,顺序地每次加1,用二进制表示, 书写格式为16进制。 16位二进制数可以表示多少个字节单元的地址呢? 存储单元的内容 :一个存储单元中存放的信息称为该存 储单元的内容,以字节为单位存储信息。 字节和字:
第2章 80X86计算机组织
2.3 8086CPU和寄存器组
2.3.1 2.3.2 Intel 8086CPU内部结构
8086寄存器组
2.3.3
标志寄存器
返回本章首页
第2章 80X86计算机组织
2.3.1
Intel
8086CPU内部结构
图1.2 8086CPU内部结构
图1.2 8086CPU内部结构
第2章 80X86计算机组织
2.段寄存器
8086CPU的4个16位的段寄存器分别称为代码段 寄存器 CS,数据段寄存器 DS,堆栈段寄存器 SS, 附加数据段寄存器ES。段寄存器用来确定该段在 内存中的起始地址。 代码段用来存放程序的指令序列。 CS 存放代码 段的段首址,指令指针寄存器IP指示代码段中指 令的偏移地址。
第2章 80X86计算机组织
图 1.4 表明了存储器 中部分 存储单 元存 放信息 情况。 从图 1.4可看到,地址为 34560H 的字节的存 储单元 中的内 容是 3 4 H, 而 地 址 为 34561H 的字节存储 单元中的内容是 12H。
返回本节
第2章 80X86计算机组织
2.3.3
标志寄存器
8086CPU中有一个很重要的16位标志寄存器,它 包含9个标志位,主要用于保存一条指令执行后, CPU所处状态信息及运算结果的特征。 1.条件标志 2.状态控制标志

第二章 80X86计算机组织

第二章  80X86计算机组织

第二章汇编语言程序格式2.1 在80X86微型机的输入输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号,试问可直接由指令中指定的I/O端口数。

答:有256个I/O端口数2。

2 有两个16位字IEE5H和2A3CH分别存放在80X86微机存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。

解: 000B0H E5H000B1H 1EH000B2H000B3H 3CH000B4H 2AH2.380X86微机存储器中存放信息如图2.12所示。

试读出30022H和30024H字节单元的内容,以及30022H和30024H字单元的内容。

30020H 12H30021H 34H30022H ABH30023H CDH30024H EFH答:(1)。

字节单元:(30022H)=ABH,(30024H)=EFH(2)。

字节单元:(30021H)=AB34H,(30022H)=CDABH2.4 在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢?答:(1)。

3017:000AH的物理地址是:3017AH(2)。

3015:002AH的物理地址是:3017AH(3)。

3010:007AH的物理地址是:3017AH2.5 如果在一个程序开始执行以前(CS)=0A7FOH(如果十六进制数的最高位为字母,则应在其前加一个字的物理地址是多少?答该程序的第一个字的物理地址是:AAA40H2.6 在实模式下,存储器中每一段最多可有10000H个字节。

如果用测试程序DEBUG的r命令在终端上显示当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OF、DF、ZF、CF的值。

C>debug-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC 解:(1)存储器分段的示意图10E4:0000H 10E40H……10F4:0000H 10F40H……10E4:FFFFH 20E3FH……10F4:FFFFH 20F3FH……21F0:0000H 21F00H……21F0:FFFFH 31FFFH……31FF:0000H 31FF0H……31FF:FFFFH 41FEFH(2)。

汇编语言第2章80x86计算机组织

汇编语言第2章80x86计算机组织
3) 字长:8086/8088、80286字长为16位,由2个 字节组成;80386字长为32位,由4个字节组 成,双字
2. 存储器地址
• 存储器地址 – 分配给每一个字节单元的编号。地址从0开始 编号,顺序地每次加1 – 每一个字节单元有唯一一个地址:物理地址
• 8086/8088: – 20位,地址范围应该是00000H~FFFFFH
▪ ASM:小汇编程序,它占有较小的存储区, 功能较弱
▪ MASM:宏汇编程序,功能较强,具有宏汇 编能力
▪ Masm for windows集成实验环境
其它软件(2)
• 连接程序:程序、库文件或其他已翻译的子程 序连接在一起,形成机器可执行程序
• 装入程序:把程序从外存送到内存 • 调试程序:
➢ 系统带的调试程序Debug:举例 ➢ Turbo Debug程序:Tdebug
晶体管 1979:8088芯片、16位 1982:80286芯片、16位 1986:80386芯片、32位 …Pentium系列
二、一些名词术语(1)
• 主频:主时钟频率,影响运行计算机速度 • 数据总线:负责各部分间的数据传送
数据总线宽度:芯片内传送数据的宽度 外部数据总线宽度:芯片内和芯片外交换
IBM PC微型计算机结构(续)
功能部件
• 存储器:计算机的记忆部件 • 中央处理机:包括运算器和控制器 • 运算器:执行算术和逻辑运算指令 • 控制器:负责全机的控制工作,如取指令、译
码、分析、取数、执行、存数 • I/O系统:I/O设备、大容量存储器 • 系统总线:数据线、地址线和控制线三组
① 58H+63H ② 80H+90H ③ FFH+FEH ④ 38H+2BH ⑤ 9CH-45H ⑥ FEH-FFH

第2章 80x86计算机组织

第2章  80x86计算机组织

课堂练习
选择题
CPU访问的最大内存地址是1023,地址总线的 宽度是( B ) A.8 C.13 B.10 D.16
汇编语言程序设计
2.3 中央处理机
总线接口部件BIU 执行部件EU (Bus Interface Unit) (Execution Unit)
执行部件中包含算术逻 内部设有四个段地址寄存器, 算术逻辑 辑单元(ALU)、通用寄 一个指令指针寄存器IP,一 存器、状态标志寄存器、 个6字节指令队列缓冲器,20 数据暂存寄存器和执行部 位地址加法器和总线控制电 件的控制电路。 功能:从BIU的指令队列 路。 CPU 控制逻辑 中取出指令代码,经指令 主要功能:根据执行部件 译码器译码后执行指令所 EU的请求,负责从内存单元 规定的全部功能。执行指 中预取指令,并将它们送到 令所得结果或执行指令所 寄存器组 指令队列缓冲器暂存。即负 需的数据,都由EU向BIU 发出命令,对存储器或I/O 责完成CPU与存储器或I/O设 备之间的数据传送。 接口进行读/写操作。 返回本章首页
返回本节
汇编语言程序设计
各类存储器芯片
BIOS是由主板和各类接口卡(如:显 从读写属性上看分为两类: 卡、网卡等)厂商提供的软件系统, 随机存储器(RAM)和只读存储器(ROM) 可以通过它利用该硬件设备进行最基 本的输入输出。在主板和某些接口卡 从功能和连接上分类: 上插有存储相应BIOS的ROM。 – 随机存储器RAM ROM中的内容不可以被改写,断电后 不消失。 – 装有BIOS的ROM – 接口卡上的RAM
图2.1 Intel8086CPU内部结构
汇编语言程序设计
2.3.2
8086寄存器组
AX称为累加器。使用频度最高, BX称为基址寄存器。常用于存 用于算术、逻辑运算以及与外设 8086CPU中可供编程使用的有14个16位寄存器(register): CX称为计数器。一般作为循环 放存储单元地址。 传送信息等。 DX称为数据寄存器。常用来存 或串操作等指令中的隐含计数器。 放双字数据的高16位,或存放外 SP用于存放当前堆栈段中栈顶 设端口地址。 图 BP用于存放堆栈段中某一存储 的偏移地址 2 单元的偏移地址。 IP总是保存下一次将要从主存中 80 86 取出指令的偏移地址,程序不能 直接访问IP

汇编语言程序设计复习

汇编语言程序设计复习

知识点第一章基础知识(1)正负数的补码表示, 掌握计算机中数和字符的表示;eg.假设机器字长为8位,[+3]补=00000011B,[-3]补= 11111101 H 。

十六进制数0FFF8H表示的十进制正数为65528D,表示的十进制负数为-8D。

8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127 。

第二章80x86计算机组织(1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器eg: IP寄存器中保存的是?代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?陷阱标志,中断标志。

(2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。

存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。

eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。

已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。

如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H .第三章80x86的指令系统和寻址方式与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。

数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS 指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。

IBM-PC汇编语言程序设计第2章 80X86计算机组织

IBM-PC汇编语言程序设计第2章 80X86计算机组织

80X86 X86计算机组织 第2章 80X86计算机组织
2.3 8086CPU和寄存器组 和寄存器组
2.3.1 2.3.2 2.3.3 Intel 8086CPU内部结构 内部结构
Байду номын сангаас
8086寄存器组 寄存器组 标志寄存器
返回本章首页
80X86 X86计算机组织 第2章 80X86计算机组织
2.3.1
返回本节
80X86 X86计算机组织 第2章 80X86计算机组织
2.4.2
存储器单元的地址和内容
系统中, 存储单元地址 :8086系统中,为了标识和存取每一个存储 系统中 单元,给每个存储单元规定一个编号, 单元,给每个存储单元规定一个编号,这就是存储单元地 地址从0开始编号 顺序地每次加1,用二进制表示, 开始编号, 址,地址从 开始编号,顺序地每次加 ,用二进制表示, 书写格式为16进制 进制。 书写格式为 进制。 16位二进制数可以表示多少个字节单元的地址呢? 位二进制数可以表示多少个字节单元的地址呢? 位二进制数可以表示多少个字节单元的地址呢 存储单元的内容 :一个存储单元中存放的信息称为该存 储单元的内容,以字节为单位存储信息。 储单元的内容,以字节为单位存储信息。 字节和字: 字节和字:
80X86 X86计算机组织 第2章 80X86计算机组织
2.4.3
物理地址的形成
8086CPU的地址线是 位的,这样最大可寻址空 的地址线是20位的 的地址线是 位的, 间应为2 间应为 20=1MB,其物理地址范围从 ,其物理地址范围从00000H~FFFFFH。 ~ 。 寄存器都是16位的 而8086CPU寄存器都是 位的。那么,这1MB空间如何 寄存器都是 位的。那么, 空间如何 用16位寄存器表达呢? 位寄存器表达呢? 位寄存器表达呢 根据要求可把1M字节地址空间划成若干逻辑段。 根据要求可把 字节地址空间划成若干逻辑段。 字节地址空间划成若干逻辑段 每个逻辑段必须满足两个条件: 每个逻辑段必须满足两个条件 : 一是逻辑段的起始地址 简称段首址)必须是16的倍数 的倍数; ( 简称段首址 ) 必须是 的倍数 ; 二是逻辑段的最大长 度为64K。按照这两个条件,1M字节地址空间最多可划 度为 。按照这两个条件, 字节地址空间最多可划 分成64K个逻辑段,最少也能划分成 个逻辑段。逻辑段 个逻辑段, 个逻辑段。 分成 个逻辑段 最少也能划分成16个逻辑段 与逻辑段可以相连,也可以不连,还可以重叠。 与逻辑段可以相连,也可以不连,还可以重叠。

汇编_第2章 80X86计算机组织

汇编_第2章 80X86计算机组织

例1:(DS) = 2100H, (BX) = 0500H
物理地址 = 21000H + 0500H = 21500H
例2:(CS) = 3000H, (IP) = 1000H
物理地址 = 30000H + 1000H = 31000H
例3:(SS) = 1000H, (SP) = 0010H 物理地址 = 10000H + 0010H = 10010H 例4:(DS) = 3100H, (SI) = 1000H 物理地址 = 31000H + 1000H = 32000H
优点: 允许程序在存储器内重定位;
允许实模式程序在保护模式下运行;
有利于程序和数据的分离。
物理地址的形成
物理地址:每一个存储单元有一个唯一的20位地址 表示范围:00000H~FFFFFH 。 物理地址形成:段地址左移4位再加上偏移地址值
15 0 16位段地址 15 + 19 0 0 16位偏移地址 0000
≈ 1234H
4号字节单元存放的信息为 34H,表示:(0004)=34H
1EH 2FH
4号字单元的内容为1234H,表 示为:(0004)=1234H
1235H 1236H 1237H
字单元由两个字节单元组成,其地址采用它的低地 址来表示;且低位字节存入低地址单元,高位字节存入 高地址单元。
例:存储单元的地址 已知: (0004H)= 5678H
编译后的目标文 件达到3.59KB
}
用汇编语言实现同样的功能
data segment a db ? b db ? c db ? string db 'c=$' 汇编后的目 data ends 标文件只有 code segment 208字节 main proc far assume cs:code, ds:data, es:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax main mov es,ax code mov a,1 mov b,2 mov al,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 int 21h mov dl,0ah int 21h mov dl,0dh int 21h ret endp ends end start

汇编语言程序设计第2章80x86计算机组织

汇编语言程序设计第2章80x86计算机组织

8086/8088
OF DF IF TF SF ZF AF PF CF
80286
NT IOPL OF DF IF TF SF ZF AF PF CF
80386
VM RF NT IOPL OF DF IF TF SF ZF AF PF CF
80486
AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CF
2.1 80x86 Pro 执行一条指令所 需时间的比较。(16页) 实模式、保护模式 和 虚拟模式 的区别。
工作方式
1.实地址方式 2.保护方式 3.虚拟8086方式
1.实地址方式
‫‏‬
该方式工作在开机或复位后,进入保护 方式工作之前。其主要目的是为进入保 护方式作必要配置和准备。
2.2 基于微处理器的计算机系统构成-6
文件编辑程序

用来建立、输入或修改文本。
翻译程序(汇编程序、解释程序、编译程序)(19页)

汇编程序:将汇编语言程序翻译成机器语言程序。


编译程序:将高级语言翻译成机器语言。
解释程序:将直接把高级语言在机器上运行,边解释边 执行。
经翻译程序翻译后,源程序变为 .obj 文件。
2.2 基于微处理器的计算机系统构成-7
连接程序
– 把要执行的程序与库文件或其他已经翻译好的子 程序连接在一起,形成.exe文件。
装入程序
– 用来把程序从外存传送到内存,以便机器执行。 计算机开始后需立即启动,把常驻监督程序装入 存储器,使机器运转起来。
调试程序(DEBUG)
– 系统提供给用户的能监督和控制用户程序的一种 工具,可以装入、修改、显示或逐条执行一个程 序。

汇编第二章80x86计算机组织

汇编第二章80x86计算机组织

标志位的功能—溢出标志 标志位的功能 溢出标志OF(Overflow Flag) 溢出标志 ) 表明补码的运算结果是否有溢出 表明补码的运算结果是否有溢出 补码
OF=
0 1
NV OV
没有溢出 溢出
3AH + 7CH=B6H,产生溢出:OF = 1 = ,产生溢出: AAH + 7CH=(1)26H,没有溢出:OF = 0 = ) ,没有溢出:
CS
XX XX
16 bits 偏移量
XX XX XX XX XX XX
正在执行的指令 下一条将要执行的指令
IP
3.控制寄存器 控制寄存器—FLAGS 控制寄存器
标志( 标志(Flag)用于反映指令执行结果或控 ) 制指令执行形式 8086处理器的各种标志形成了一个 位的 处理器的各种标志形成了一个16位的 处理器的各种标志形成了一个 标志寄存器FLAGS(程序状态字 标志寄存器 (程序状态字PSW寄 寄 存器) 存器)
16
输入/输出 输入 输出 控制电路
外 部 总 线
ALU
存器
部 控制电路
12 3 4 5 6
8


EU)

BIU)
1.通用寄存器 数据寄存器 通用寄存器—数据寄存器 通用寄存器
AX(Accumulator)累加器:算术运算的主要 ,所有的 累加器:算术运算的主要R 累加器
I/O指令都用此 指令都用此R 指令都用此
3AH+7CH=B6H,就是 +124=182, + = ,就是58+ = , 已经超出- ~+127范围,产生溢出,故OF=1; 范围, 已经超出-128~+ ~+ 范围 产生溢出, = ; 另一方面,补码 表达真值是-74, 另一方面,补码B6H表达真值是 , 表达真值是 显然运算结果也不正确

第2章 80X86计算机组织

第2章   80X86计算机组织

24
逻辑段的起始地址必须是16的倍数,所以其20位物理 地址用16进制表示时最低位为0。 1M的内存空间最多有64K个小段,每个小段包含16 个字节,首地址最低位为0(用16进制表示)。 寄存器是16位,用16位寄存器如何表示20位的物理 地址? 20位的物理地址由段的起始地址和偏移地址(有效 地址)组成。段地址的高16位存放在16位段寄存器中,低 4位为0000,可以不用保存,偏移地址存放在16位通用或 专用寄存器中。 存储单元地址通常表示为:16位段地址:16位偏移地 址 物理地址=16*(段地址寄存器)+偏移地址。 一般都用16进制表示。 例:2000H:1234H的物理地址为多少?
3

2.1.2

汇编语言
为了克服机器语言的缺点,人们采用助记符表 示机器指令的操作码,用变量代替操作数的存放 地址等,这样就形成了汇编语言。所以汇编语言 是一种用符号书写的、基本操作与机器指令相对 应的、并遵循一定语法规则的计算机语言。
用汇编语言编写的程序称为汇编源程序。 汇编语言是一种符号语言,比机器语言容易理解 和掌握,也容易调试和维护。但是,汇编语言源 程序要翻译成机器语言程序才可以由计算机执行。 这个翻译的过程称为“汇编”,这种把汇编源程 序翻译成目标程序的语言加工程序称为汇编程序。
17
数据段用来存放程序中用到的数据,DS 与BX、DI、SI 或16位数表示数据存放的 存储单元的物理地址。 堆栈段是一个特殊的存储区域,采用先进 后出或后进先出的原则,SS与SP表示堆 栈栈顶的物理地址,SS与BP表示堆栈中 某一单元的物理地址。 附加段是一个附加的数据段,常用于字符 串的处理。ES与DI表示附加段中存储单 元的物理地址。 18
存放操作数、操作数的地址以及运算的中间结果

IBM—PC(80x86)汇编语言与接口技术-第2章 80x86计算机组织

IBM—PC(80x86)汇编语言与接口技术-第2章 80x86计算机组织

• 80386是1985年研制出的一个32位微处理器, 内部及外部数据总线均为32位,地址线也为32 位,因此它可处理4G(232)字节的物理存储 空间。
• 1989年Intel公司又研制出新一代的微处理器 80486,80486芯片内除了有一个与80386相同 结构的主处理器外,还集成了一个浮点处理部 件FPU以及一个8K字节的高速缓冲存储器 (cache),使80486的计算速度和总体性能比 80386有了明显的提高。
• Intel公司在1982年推出了80286微处理器,它仍 然是16位结构。80286的内部及外部数据总线都 是16位的,但它的地址线是24位的,可寻址16M 字节的存储空间。
80286有两种工作方式,即实模式和保护模式: 实模式与8086工作方式相同,但速度比8086快。
保护模式除了仍具有16M字节的存储器物理地址空 间外,她还能为每个任务提供1G字节的虚拟存储 器地址空间。保护方式把操作系统及各任务所分配 到的地址空间隔离开,避免程序之间的相互干扰, 保证系统在多任务环境下正常工作。
• 8086是1978年Intel公司推出的16位微处理器。
(1)8086有16位数据总线,处理器与外部传送数据 时,一次可传送16位二进制数。
(2)8086有20位地址总线,寻址空间提高到1M字节。
(3)8086采用了流水线技术,可以实现处理器的内 部操作与存储器或I/O接口之间的数据传送操作重叠 进行,从而提高了处理器的性能。
2.2 基于微处理器的 计算机系统的构成
硬件:
中央处理机 CPU
总线控制 逻辑 系 统 总 线
存储器
接口
...
接口
大容量 存储器
...
I/O设备
I/O子系统

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (12)3.180X86的寻址方式 (12)3.2程序占有的空间和执行时间 (14)3.380X86的指令系统 (14)第 4 章汇编语言程序格式 (31)4.1汇编程序功能 (31)4.2伪操作 (31)4.3汇编语言程序格式 (35)4.4汇编语言程序的上机过程 (38)第 5 章循环与分支程序设计 (40)5.1循环程序设计 (40)5.2分支程序设计 (41)5.3如何在实模式下发挥80386及其后继机型的优势 (41)第 6 章子程序结构 (43)6.1子程序的设计方法 (43)6.2子程序的嵌套 (44)6.3子程序举例 (44)第7 章高级汇编语言技术 (46)7.1宏汇编 (46)7.2重复汇编 (47)7.3条件汇编 (48)第8 章输入/输出程序设计 (49)8.1I/O设备的数据传送方式 (49)8.2程序直接控制I/O方式 (50)8.3中断传送方式 (50)第9 章BIOS和DOS中断 (53)9.1键盘I/O (53)9.2显示器I/O (55)9.3打印机I/O (56)9.4串行通信口I/O (57)第10 章图形与发声系统的程序设计 (58)10.1显示方式 (58)10.2视频显示存储器 (58)10.3EGA/VGA图形程序设计 (59)10.4通用发声程序 (60)10.5乐曲程序 (61)第11 章磁盘文件存取技术 (62)11.1磁盘的记录方式 (62)11.2文件代号式磁盘存取 (63)11.3字符设备的文件代号式I/O (64)11.4BIOS磁盘存取功能 (65)附录:《IBM—PC汇编语言程序设计》习题参考答案 (66) 第一章.习题 (66)第二章.习题 (67)第三章.习题 (68)第四章.习题 (81)第五章.习题 (86)第六章.习题 (104)第七章.习题 (117)第八章.习题 (124)第九章.习题 (129)第十章.习题 (132)第十一章.习题 (143)第 1 章基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

第2章 80x86计算机组织

第2章 80x86计算机组织

例: MOV AX, FFFFH MOV BX, 1 ADD AX, BX 指令执行后,(AX)=0, OF=0, CF=1, ZF=1, SF=0
10
2.4 2.4 存储器
存储器是用来存放程序、数据、中间结果和最终结 果的记忆装置。 • 存储单元的地址和内容
存储器以字节(8bit)为单位存储信息 每个字节单元有一个地址,从0编号,顺序加1 地址也用二进制数表示(无符号整数,写成十六进制) 16位二进制数可表示216=65536=64K个地址 0000H ~ FFFFH 字长16位,一个字要占用相继的两个字节 低位字节存入低地址,高位字节存入高地址 机器以偶地址访问(读/写)存储器 8086访问内存是以字为单位,字单元地址用它的低地址 来表示
18
第2章 作业
Page 33
2.2 ~ 2.5
19
11
存储器
7 字节 1 0 0 1 6 0 0 0 1 5 0 1 0 0 4 1 0 1 1 3 1 0 1 0 2 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0000H 0001H 0002H 0003H (0000H)=9FH (0001H)=26H (0002H)=1EH (0003H)=D7H
在CPU外部 访问速度慢 容量大,成本低 用地址表示 地址可用各种方式形成
16
2.5 2.5 外部设备
外部设备与主机(CPU和存储器)的通信是通过外设 接口(Interface)进行的,每个接口包括一组寄存器。 数据寄存器:存放外设和主机间传送的数据 状态寄存器:保存外设或接口的状态信息 命令寄存器:保存CPU发给外设或接口的控制命令 外设中每个寄存器有一个端口(Port)地址,构成一个 独立于内存的I/O地址空间:0000H ~ FFFFH

汇编语言程序设计第2章 80 x86计算机组织结构.ppt

汇编语言程序设计第2章 80 x86计算机组织结构.ppt
传送地址,内存中的每个字节都对应着一个唯一 的地址,I/O设备也是如此。 地址总线的位数与寻址空间有着直接的关系。 例如:8086/8088地址总线20根,则可访问的地址 为:
220 =1,048,576 = 1M
则8086/8088最大可用的存储空间为1M字节。
South china normal university
• 存储器由若干存储单元构成,存储单元的最小 单位是字节。
• 将所有的存储单元按顺序编号,即每一个字 节有一个唯一的编号,这些编号称为存储单 元的地址(也称为物理地址)。
South china normal university
• 若CPU要存取某个存储单元的内 容,则首先提供该存储单元的 地址,然后按地址选中对应的 存储单元,就可以对单元内容 进行存取操作。
外部设备
在微机系统中最常用的外部设备有: • 键盘 • 显示器 • 打印机 • 外部存储器等
CPU与外部设备交换信息是通过I/O接口电 路来完成的。
South china normal university
2.2 80X86CPU的寄存器 通用寄存器 控制寄存器 段寄存器
South china normal university
South china normal university
• IBM PC机及其 兼容机的存储 器系统主要分 为3个主要部 分:程序暂驻 区 (TPA) 、 系 统内存区和扩 展 存 储 区 (XMS)
South china normal university 图2-2 IBM PC机及其兼容机的存储器映像
South china normal university
1. 数据寄存器 (AX、BX、CX、DX)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/9/5
80x86汇编语言程序设计
1. 状态标志取值的一般规则
▪ ZF(Zero Flag):零标志。若运算结果为0,则ZF = 1,否则ZF = 0。
▪ SF(Sign Flag):符号标志。若运算结果为负数,则SF = 1,否则SF = 0。
▪ CF(Carry Flag):进位标志。若加法时结果最高位向前有进位或减法时最高位向 前有借位,则CF = 1,否则CF = 0。
第2章 80x86计算机系统组织
讲授要点
▪ 80x86计算机的基本结构(CPU、内存、I/O以及连接它们的总线)。 ▪ 80x86 CPU的寄存器组。 ▪ 实模式的内存分段与编程要点。 ▪ 标志位CF、OF、SF、ZF的含义及判断方法。
2020/9/5
80x86汇编语言程序设计
2.1 80x86计算机的基本结构
▪ 在实模式下,32位CPU下的程序可以使用32位寄存器和32位操作数,但采用32位寄 存器表示偏移地址时,只使用低16位,高16位为0。CS:IP总是指向下一条要执行的指 令,EIP的高16位为0。SS:SP指向堆栈段的栈顶,ESP的高16位为0。
▪ 状态标志是CPU进行条件判断和控制程序执行流程的依据,最常用的是4个:CF、OF、 SF和ZF。其中,CF表示无符号溢出,OF表示带符号溢出。
▪ SS:SP指向堆栈段的栈顶地址,ESP的高16位为0。
▪ 在32位80x86 CPU下,程序可以使用32位寄存器和32位操作数,但采用32位寄 存器表示偏移地址时,只使用低16位,高16位为0。
2020/9/5
80x86汇编语言程序设计
2.4 标志位
2.4.1 状态标志
▪ 状态标志通常由CPU根据指令执行结果自动设置,以反映指令执行结果的特 征。 ▪ 80x86 CPU将状态标志作为条件判断的依据,以控制程序的执行流程。 ▪ 最常用的状态标志是CF、OF、SF和ZF,应熟练掌握。
2020/9/5
80x86汇编语言程序设计
2.3 80x86 CPU的工作模式
2.3.1 80x86 CPU的3种工作模式
1.实模式
与8086兼容的工作模式,只有低20位地址线起作用,仅能寻址第一个1MB的 内存空间。MS DOS运行在实模式下。
2.保护模式
32位80x86 CPU的主要工作模式,提供对程序和数据进行安全检查的保护机 制。Windows 9x/NTx86汇编语言程序设计
2. 深入认识CF和OF
▪ CF和OF本质上均表示溢出。 ▪ CF表示无符号溢出,即运算结果超出了无符号数的表示范围。对于n位二进制数 来说,无符号数表示范围为0~2n -1,例如,n = 8和16时分别为0~255和0~65535。 ▪ OF表示带符号溢出,即运算结果超出了带符号数的表示范围。对于n位二进制数 来说,带符号数表示范围为-2n-1~2n-1-1,例如,n = 8和16时,分别为-128~127和32768~32767。
控制总线用来控制CPU与内存和I/O设备之间的数据传送方式(如传送方向)。
2020/9/5
80x86汇编语言程序设计
2.1.3 内存
▪ 内存是存放指令和数据的部件,由若干内存单元构成。 ▪ 80x86的内存以字节编址:每个内存单元有唯一的地址,可存放1个字节。 ▪ 要正确理解内存单元的2个要素:地址(编号)与值(内容)。 ▪ 1个字占据2个相邻的内存单元;低字节在低地址单元,高字节在高地址单元;字的地址 由其低地址来表示。双字也类似。 ▪ 同一地址可以看作是字节、字或双字单元的地址,取决于具体的使用方式。
2020/9/5
80x86汇编语言程序设计
▪ 80x86 CPU具有8位、16位和32位寄存器,主要包括: 8位通用寄存器8个:AH、AL、BH、BL、CH、CL、DH、DL。 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。
32位通用寄存器8个:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 16位段寄存器6个:CS、DS、SS、ES、FS、GS。 32位/16位指令指针1个:EIP/IP。 32位/16位标志寄存器1个:EFLAGS/FLAGS。
2020/9/5
80x86汇编语言程序设计
2.1.4 I/O 子系统
▪ 每个I/O设备必须通过专门的I/O接口电路与主机(CPU和内存)相连。 ▪ I/O端口:即I/O地址,是区分I/O设备及其寄存器的编号。 ▪ 80x86 的I/O端口为16位。 ▪ I/O端口类似于内存单元,只是对应于I/O设备。 ▪ 大多数设备使用多个I/O端口(数据端口、状态端口等)。 ▪ CPU是通过端口与I/O设备通信的。
2020/9/5
80x86汇编语言程序设计
2.1.2 系统总线
总线是部件之间进行数据(电信号)交换的通道。 80x86计算机的系统总线分为3类:
▪ 数据总线 ▪ 地址总线 ▪ 控制总线
1.数据总线
▪ 数据总线是用来传递数据的,定义了CPU在每个内存周期所能存取数据的位数。 ▪ 80x86系列CPU的数据总线为8位、16位、32位或64位。这就是“为什么通常的 数据存取是以8位、16位、32位或64位进行的”。 ▪ 数据总线越宽,处理能力越强。 ▪ 具有N位数据总线并不意味着CPU只能处理N位数据。
3.虚拟8086模式
在Windows 9x下,若打开一个MS DOS窗口,运行一个DOS应用程序,那 么该程序就运行在虚拟8086模式下。
2020/9/5
80x86汇编语言程序设计
2.3.2 实模式
1. 内存分段
▪ 80x86采用分段内存管理机制,主要包括下列几种类型的段: 代码段:用来存放程序的指令序列。 数据段:用来存放程序的数据。 堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等。
80x86汇编语言程序设计
本章小结
▪ 80x86计算机由CPU、内存和I/O子系统三部分组成,各部分之间由系统总线相连。 ▪ 数据总线决定了CPU每次存取数据的最大宽度(位数);地址总线决定了最大可编址空间; 控制总线用来控制CPU与内存和I/O设备之间的数据传送方式。 ▪ 80x86系统的I/O地址为16位,可寻址65536个不同的I/O端口。 ▪ 80x86程序可以存取的最小数据单位是字节。例如,若要读取的位数不足8位,则只能先读出 一个完整字节,再屏蔽掉其它位。 ▪ 字的存储采取“低字节在低地址,高字节在高地址,字的地址由低地址表示”的小端方式, 双字也类似。 ▪ 要正确理解内存单元的地址和值,地址表示位置,值是相应位置处的内容。同一地址既可以 看作字节单元地址,也可以看作字甚至双字单元地址,取决于具体的使用方式。
▪ 一个程序可以拥有多个代码段、多个数据段甚至多个堆栈段。
2020/9/5
80x86汇编语言程序设计
2. 物理地址与逻辑地址
▪ 物理地址:内存单元的实际地址,也就是出现在地址总线上的地址。 ▪ 逻辑地址:或称分段地址,记作
段地址: 段内偏移地址 段地址表示段在内存中的起始位置,通常被保存在某个段寄存器中。段内偏移地址 表示内存单元相对于段起始位置的位移,简称偏移地址,也叫有效地址EA。 ▪ 段地址与偏移地址都是16位。 ▪ 系统采用下列方法将逻辑地址自动转换为20位的物理地址:
2020/9/5
80x86汇编语言程序设计
2020/9/5
80x86汇编语言程序设计
2.2 80x86 CPU的寄存器组
1. 通用寄存器
8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8个:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。AX、 BX、CX、DX、SI、DI、BP和SP分别对应于EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP的 低16位。
2020/9/5
80x86汇编语言程序设计
2.地址总线
▪ 地址总线用来指出数据的地址(内存或I/O)。 ▪ 地址总线的位数决定了最大可编址的内存与I/O空间。 ▪ 对于N位地址总线,CPU可以提供2N个不同地址:0~2N -1。 ▪ 地址总线由内存与I/O子系统共享使用(I/O只用低16位)。
3.控制总线
▪ OF(Overflow Flag):溢出标志。若带符号数的运算结果超出了补码表示的范围, 则OF = 1,否则OF = 0。
▪ AF(Auxiliary Carry Flag):辅助进位标志。若加法时结果低4位向前有进位或减 法时结果低4位向前有借位,则AF = 1,否则AF = 0。
▪ PF(Parity Flag):奇偶标志。若结果最低字节中1的个数为偶数,则PF = 1,否则 PF = 0。
其中,32位寄存器是80386 CPU开始引入的。
2020/9/5
80x86汇编语言程序设计
▪ 80x86 CPU有3种工作模式:实模式、保护模式和虚拟8086模式。
▪ 在实模式下,段地址和偏移地址均为16位。20位物理地址由16位段地址左移4位加16 位偏移地址得到,只能寻址1MB的内存空间,且每段≤64KB。
2. 专用寄存器
指令指针:EIP(32位)、IP(16位)。IP是EIP的低16位。 标志寄存器:EFLAGS(32位)、FLAGS(16位)。FLAGS是EFLAGS的低16位。
3. 段寄存器
6个16位的段寄存器:CS、DS、ES、SS、FS和GS。 FS、GS以及所有32位寄存器是从80386 CPU开始引入的。
80x86计算机的组成:
▪ CPU ▪ 内存 ▪ I/O子系统 ▪ 各部分以系统总线相连
2020/9/5
80x86汇编语言程序设计
相关文档
最新文档