《IBM-PC汇编语言程序设计》(清华大学出版社)笔记(一)

1 80x86计算机组织

1.1 CPU缓冲器外,主要由三部分组成:

运算器,算术逻辑部件(ALU)进行算术和逻辑运算

控制器,负责全机的控制工作:

1) 从存储器中取出指令,对指令进行译码分析

2) 从存储器取得操作数,发出执行指令的所有命令

3) 把结果存入存储器

4) 对总线及I/O的传送控制

寄存器组:

1) 每一个寄存器相当于运算器中的一个存储单元,但存储速度比存储器快的多

2) 存放计算过程中所需要的或所得到的各种信息(操作数地址、操作数及运算中间结果等)

1.2 存器组

1.2.1 通用寄存器

a)     数据存储器(AX BX CX DX)可以以字(16B)或者字节(8B)

用来暂时存放计算过程中所用到的操作数、结果或者其他信息

                            i.           AX 作为累加器用,是算术运算的主要寄存器。在乘除等指令中指定用来存储操作数。I/O指令都使用这一寄存器与外部设备传递信息

                           ii.           BX 计算存储器地址时,经常用作基址寄存器

                          iii.           CX 常用来保存计数值,比如移位指令、循环和串处理指令中用作隐含的计数器

                          iv.           DX 在做双字长运算时把DX AX组合在一起存放一个双字长数,DX存放高位字。对某些I/O操作,DX可用来存放I/O端口地址

b)    SP BP SI DI

                            i.           只能以字(16位)为单位使用

                           ii.           经常的用途是在存储器寻址时,提供偏移地址。因此可以称为指针或变址寄存器

                          iii.           SP 堆栈指针寄存器

                          iv.           堆栈段寻址 BP 基址指针寄存器 可以与堆栈段寄存器SS联用来确定堆栈段中的某一存储单元地址,SP用来指定段顶的偏移地址,BP作为堆栈区的基地址

                           v.           数据段寻址 SI 源变址寄存器 和 DI目的变址寄存器一般与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址

                          vi.           SI DI 具有自动增量自动减量的功能

                        vii.           串处理中,SI DI 作为隐含的 源变址 目的变址寄存器 ,SI DS 联用,在数据段中寻址,DI ES 联用在附加段中寻址

 

1.2.2   专用寄存器(IP SP FLAGS3)

1)      IP 指令指针寄存器

                                i.           存放代码段中的偏移地址

                               ii.           始终指向下一跳指令的首地址,与段寄存器CS联用确定下一条指令的物理地址

                             iii.           用IP来控制指令序列的执行流程的

2)      SP 堆栈指针寄存器

与堆栈段寄存器SS联用来确定堆栈段中栈顶的地址,也就是SP存放栈顶的偏移地址

3)      FLAGS 标志寄存器

                                i.           条件码标志用来记录程序中运行结果的状态信息,根据运行结果CPU自动设置的

1.       OF(溢出标志)溢出à OF =1 ; 不溢出 àOF =

2.       SF (符号标志)结果< 0 à SF = 1 ; >0 à SF = 0

3.       ZF (零标志)结果 = 0 à ZF = 1 ; != 0 à ZF = 0

4.       CF (进位标志)运算时,最高有效位产生进位 à CF =1 ;否则 CF = 0

5.       AF (辅助进位标志) 记录运算时第3位(半个字节)产生的进位值,有à AF = 1 ; 否则 AF = 0

6.       PF (奇偶标志) 结果操作数中1的个数为偶数时 PF= 1 ; 否则,PF = 0

                               ii.           DF(控制标志位为方向标志),在串处理指令中控制处理信息的方向用。DF = 1 à SI DI减小,串处理从高地址到低地址。DF = 0 à SI DI增大,低到高

                             iii.           IF (中断标志) IF = 1 允许CPU相应中断,否则关闭中断

                             iv.           TF (陷井标志) TF = 1 每条指令执行完后产生陷阱,否则,CPU正常工作,不产生陷阱

 

1.2.3 段寄存器

DS数据段,ES附加段,SS堆栈段,CS代码段

1.3 存储器

1)      以字节为单位存储信息,每个单位给定一个唯一的物理地址(PA)。地址从0开始编号,无符号整数

2)      16位二进制数可表示地址的范围:0~65535  即64K。16进制表示为0000~FFFFH

3)      一个字存入存储器要占有相继的两个字节,“高高低低”原则,两个字节单元构成一个字单元。

4)      单元的地址用它的低地址表示,双字最低字节的地址单元表示

5)      同一个地址即可看作字节单元地址,也可看作是字单元、双字单元或四字单元

6)      8086和80286中,都是以字节为单位访问存储器的,即,以偶数地址访问存储器

      

1.4  实模式存储器寻址

1.4.1存储器地址的分段

1)      允许的最大寻址空间是1MB

2)      16位字长的机器怎么提供20位地址? --采用存储器地址分段的方式

3)      每个段的大小可达64KB,也就是说,最大偏移地址是64KB

4)      偏移地址,段内相对于段起始地址的偏移值

5)      段必须从任一小段的首地址开始,所以低4位一定是0,这样就规定,段地址只取段起始地址的高16位值

6)      机器规定,从0地址开始,每16个字节为一小段。地址的第一列就是每个小段的首地址

7)      在1MB 的地址空间里,共有64K个小段首地址

8)      实模式下物理地址求法:16d(10H)*段地址 + 偏移地址 = 物理地址

1.4.2 段寄存器

b)      段寄存器和其对应存放偏移地址的寄存器之间默认组合关系

偏移

CS

IP

SS

BP\SP

DS

BX\DI\SI\或一个16位数

ES

DI(用于串指令)

1.4.3 保护模式存储器寻址

1)      保护模式使微机支持多任务处理

2)      对虚拟存储特性优很好的支持

3)      逻辑地址

                                i.           程序员给出存放在段寄存器中的段地址,并在指令中给出偏移地址

                               ii.           逻辑地址由,选择器 +偏移地址两部分组成。选择器存放在段寄存器中,不直接表示段基地址

                              iii.           偏移地址,32位长,最大段长可以从64KB扩大到4GB

4)      描述符

描述段的大小、段在存储器中的位置及其控制和状态信息。

由基地址、界限、访问权和附加字段四部分组成。

1.4.4 外部设备

1)      数据寄存器,存放要在外设和主机之间传送的数据,起到缓冲作用

2)      状态寄存器,存放外部设备或接口的状态信息

3)      命令寄存器,CPU给外设或接口的控制命令通过此寄存器送给外部设备

4)      端口地址范围:0000~FFFFH

5)      主机与外设之间信息传送方式有:直接、查询、中断、成组传送等

6)      为了便于用户使用外设,两种类型的例行程序供用户使用:BIOS(基本输入输出系统),DOS(磁盘操作系统)。都是系统编制的子程序,通过中断的方式转入所需要的子程序去执行

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值