汇编语言 王爽(第三版) 第一到三章 总结
2016-10-31 19:33
288 查看
CPU:
微处理器
执行机器指令,进行运算的芯片
16位结构的CPU表示:
运算器一次最多可以处理16位的数据
寄存器的最大宽度为16位
寄存器和运算器之间的通路为16位
寄存器:
CPU中可以存储数据的器件
CPU中程序员可以用指令读写的部件(通过改变寄存器中的内容来实现对CPU的控制)
8086CPU有14个寄存器(16位)
AX,BX,CX,DX:通用寄存器(存储一般性数据;可各分为两个8位寄存器,XH与XL,X=A,B,C,D)
CS,DS,SS,ES:段寄存器(提供内存单元的段地址)
IP,SP
段地址 × 16 + 偏移地址 = 物理地址(段地址和偏移地址移位相加法)
原因:内存的物理地址的存储宽度与段寄存器的段地址的存储宽度不一致
段地址:偏移地址 表示存储单元地址
段的起始内存单元地址为16的倍数(考虑计算前后)
偏移地址变化范围:0~FFFFH,寻址能力为64KB(16^4B)个内存单元,段的最大长度为64KB
CS与IP:代码段
CS:代码段寄存器,IP:指令指针寄存器
8086机中,任意时刻,CPU执行CS:IP指向的内容(即CPU将CS:IP指向的内存单元中的内容看作指令)
jmp 段地址:偏移地址 用给出的段地址,偏移地址修改 CS,IP 的值;jmp 某一合法寄存器 用寄存器中的值修改IP
(用jmp修改CS,IP的值与在debug中运用R指令修改CS,IP的内容有什么区别?考虑循环的实现)
8086CPU工作过程:
CS:IP通过地址加法器得到内存单元地址,送入输入输出控制电路
输入输出控制电路通过地址总线传递物理地址
数据总线传送该物理地址处存放的机器指令,送入输入输出控制电路(CPU如何取一条完整的指令?CPU会对第一个读取的进行解码,从而知道这条指令有几个字节)
输入输出控制电路将其送入指令缓冲器
IP中的值自动增加
执行指令缓冲器的机器指令
DS与[address]:数据段
DS:存放要访问的数据的段地址,[address]中address表示偏移地址
DS:[address] 读写对应内存单元的数据
SS与SP:栈段
SS:内存中栈顶段地址,SP:偏移地址
SS:SP指示栈顶元素,当栈为空,SP为栈最底部的字单元的偏移地址+2
栈中字的存储:高位字节放高位内存单元,低位字节放低位内存单元
push指令,pop指令(内存传送指令)
格式:push/pop 通用寄存器/段寄存器/内存单
(实验,push IP出现ERROR,为什么?实验,push 数据出现ERROR)
执行过程:
push:
SP = SP - 2
向SS:SP指向的字单元中送入数据
pop:
从SS:SP指向的字单元中读取数据
SP = SP + 2
8086CPU不保证程序员对栈的操作不会出界,入栈、出栈时注意最大栈空间
ES还未作介绍
SI,DI,BP,PSW还未介绍到
4000
汇编指令
是机器指令的助记符,同机器指令一一对应
已学的汇编指令:(注意格式)
mov
add
sub
jump
Debug
DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行(什么时候会用到?)
已学的几种命令:
R命令:查看、修改CPU中寄存器的内容
D命令:查看内存中的内容
E命令:修改内存中的内容
U命令:将内存中的内容解释为机器指令和对应的汇编指令
T命令:执行CS:IP指向的内存单元处的指令
A命令:以汇编指令的形式向内存中写入指令
实验中出现的困惑:
向显存中写入数据
T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行
地址总线(寻址能力为2^N个内存单元),数据总线,控制总线
内存地址空间
00000H~9FFFFH 主随机存储器地址空间(RAM),A0000H~BFFFFH 显存地址空间(随写随显示),C0000H~FFFFFH 各类ROM地址空间(只读)
对于CPU是一个统一的逻辑存储器,容量受CPU寻址能力的限制
微处理器
执行机器指令,进行运算的芯片
16位结构的CPU表示:
运算器一次最多可以处理16位的数据
寄存器的最大宽度为16位
寄存器和运算器之间的通路为16位
寄存器:
CPU中可以存储数据的器件
CPU中程序员可以用指令读写的部件(通过改变寄存器中的内容来实现对CPU的控制)
8086CPU有14个寄存器(16位)
AX,BX,CX,DX:通用寄存器(存储一般性数据;可各分为两个8位寄存器,XH与XL,X=A,B,C,D)
CS,DS,SS,ES:段寄存器(提供内存单元的段地址)
IP,SP
段地址 × 16 + 偏移地址 = 物理地址(段地址和偏移地址移位相加法)
原因:内存的物理地址的存储宽度与段寄存器的段地址的存储宽度不一致
段地址:偏移地址 表示存储单元地址
段的起始内存单元地址为16的倍数(考虑计算前后)
偏移地址变化范围:0~FFFFH,寻址能力为64KB(16^4B)个内存单元,段的最大长度为64KB
CS与IP:代码段
CS:代码段寄存器,IP:指令指针寄存器
8086机中,任意时刻,CPU执行CS:IP指向的内容(即CPU将CS:IP指向的内存单元中的内容看作指令)
jmp 段地址:偏移地址 用给出的段地址,偏移地址修改 CS,IP 的值;jmp 某一合法寄存器 用寄存器中的值修改IP
(用jmp修改CS,IP的值与在debug中运用R指令修改CS,IP的内容有什么区别?考虑循环的实现)
8086CPU工作过程:
CS:IP通过地址加法器得到内存单元地址,送入输入输出控制电路
输入输出控制电路通过地址总线传递物理地址
数据总线传送该物理地址处存放的机器指令,送入输入输出控制电路(CPU如何取一条完整的指令?CPU会对第一个读取的进行解码,从而知道这条指令有几个字节)
输入输出控制电路将其送入指令缓冲器
IP中的值自动增加
执行指令缓冲器的机器指令
DS与[address]:数据段
DS:存放要访问的数据的段地址,[address]中address表示偏移地址
DS:[address] 读写对应内存单元的数据
SS与SP:栈段
SS:内存中栈顶段地址,SP:偏移地址
SS:SP指示栈顶元素,当栈为空,SP为栈最底部的字单元的偏移地址+2
栈中字的存储:高位字节放高位内存单元,低位字节放低位内存单元
push指令,pop指令(内存传送指令)
格式:push/pop 通用寄存器/段寄存器/内存单
(实验,push IP出现ERROR,为什么?实验,push 数据出现ERROR)
执行过程:
push:
SP = SP - 2
向SS:SP指向的字单元中送入数据
pop:
从SS:SP指向的字单元中读取数据
SP = SP + 2
8086CPU不保证程序员对栈的操作不会出界,入栈、出栈时注意最大栈空间
ES还未作介绍
SI,DI,BP,PSW还未介绍到
4000
汇编指令
是机器指令的助记符,同机器指令一一对应
已学的汇编指令:(注意格式)
mov
add
sub
jump
Debug
DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行(什么时候会用到?)
已学的几种命令:
R命令:查看、修改CPU中寄存器的内容
D命令:查看内存中的内容
E命令:修改内存中的内容
U命令:将内存中的内容解释为机器指令和对应的汇编指令
T命令:执行CS:IP指向的内存单元处的指令
A命令:以汇编指令的形式向内存中写入指令
实验中出现的困惑:
向显存中写入数据
T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行
地址总线(寻址能力为2^N个内存单元),数据总线,控制总线
内存地址空间
00000H~9FFFFH 主随机存储器地址空间(RAM),A0000H~BFFFFH 显存地址空间(随写随显示),C0000H~FFFFFH 各类ROM地址空间(只读)
对于CPU是一个统一的逻辑存储器,容量受CPU寻址能力的限制
相关文章推荐
- 汇编语言 第三版 王爽 jmp转移指令笔记 思维导图总结
- 汇编语言 第三版 王爽 实验6 更改大写字母
- 汇编语言 第三版 王爽 实验12 编写0号终端的处理程序
- 汇编语言(王爽 第三版)实验十六
- 汇编语言 王爽(第三版)实验十五
- 汇编语言 王爽(第三版) 实验九
- 汇编语言 第三版 王爽 实验7 寻址方式在结构化数据访问中的应用
- 汇编语言(王爽 第三版)实验十
- 王爽汇编语言(第三版)环境搭建(附PDF及工具下载)
- 汇编语言(王爽 第三版)实验十三
- 汇编语言 王爽(第三版)实验十一
- 汇编语言 第三版 王爽 实验10-1 编写子程序 之 显示字符串
- 王爽前辈汇编语言第三版PDF下载
- 汇编语言 王爽(第三版) 实验3 编程、编译、连接、跟踪
- 汇编语言 第三版 王爽 实验四
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 汇编语言(王爽 第三版)检测点
- 汇编语言(王爽 第三版)实验五
- 汇编语言 王爽(第三版)课程设计一
- 汇编语言 王爽(第三版) 实验4 [bx]和loop的使用