汇编语言大灰狼DOC文档格式.docx
- 文档编号:13638430
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:22
- 大小:979.58KB
汇编语言大灰狼DOC文档格式.docx
《汇编语言大灰狼DOC文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言大灰狼DOC文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
=1MB
4、继续探讨CPU执行程序
当内存将数据送到CPU之后,是不是立即就开始执行程序呢?
不是的,CPU是先将程序的数据放入寄存器,然后再从寄存器里取出数据来执行
寄存器概念
5、那什么事寄存器?
它有什么作用?
答:
存放CPU要执行的数据或指令
寄存器分为:
通用寄存器和段寄存器
寄存器知识补充:
1数据寄存器(或称通用寄存器)
数据寄存器包括AX,BX,CX,DX四个通用寄存器,他们可以以字16位的形式使用,也可以以字节8位的形式使用。
以字形式使用时四个通用寄存器称为AX,BX,CX,DX,以字节形式使用,高八位通用寄存器称AH,BH,CH,DH。
低八位称AL,BL,CL,DL。
这四个都是通用寄存器,又可用于专用的目的。
AX做累加器用(ACCUMALATOR)
BX在计算存储器地址时,经常用做基地址寄存器,所以又称基址寄存器。
(BASE)
CX(COUNT)可用做通用寄存器。
此外,在循环(
LOOP)和串处理指令中用做隐含的计数器。
DX(DATA)在做双字长的运算时,把DX和AX组合在一起存放I/O端口地址。
2,指针及变址寄存器
他们包括SP,BP,SI,DI四个16位寄存器。
他们可以象数据寄存器一样在运算过程中存放操作数,单他们只能以字16位为单位使用。
SP(STACK
POINTER)堆栈指针寄存器;
用来指示堆栈的栈顶的偏移地址,与SS堆栈段寄存器形成栈顶存储单元的物理地址。
BP(BASE
POINTER)基址指针寄存器。
用来指示堆栈中某个数据区的偏移地址-----基地址。
SI(SOURCE
INDEX)源变址寄存器;
DI(DESTINATION
INDEX)目的变址寄存器;
3,段寄存器
包括CS,DS,SS,ES四个16位段寄存器
CS(CODE
SEGMENT)代码段寄存器
SS(STACK
SEGMENT)堆栈段寄存器
DS(DATA
SEGMENT)数据段寄存器
ES(EXTRA
SEGMENT)附加段寄存器
8086/8088采用存储空间的分段技术来解决寻址1M字节的存储空间。
这些段寄存器的内容和有效的地址偏移量(称偏移地址)一起可确定内存的存储单元的物理地址。
CS控制程序区DS和ES控制数据区,SS控制堆栈区。
4控制寄存器
分为两个16位的寄存器IP和PSW。
IP(INSTRUCTION
POINTER)指令指针寄存器;
他用来存放代码段中的偏移地址。
程序运行中始终指向下一条指令的首地址。
计算机就是用IP寄存器来控制指令序列的执行流程的
PSW(PROGRAM
STATUS
WORD)程序状态字寄存器或称标志寄存器;
由状态码标志和控制标志构成,
OF溢出标志;
运算结果超出机器能表示的数值范围称溢出OF=1,否则OF=0;
SF符号标志;
运算结果的符号为负时置1否则置0
ZF;
零标志
CF进位标志
AF辅助进位标志
PF奇偶标志
DF方向标志
DF=1每次操作后使SI和DI减量,使串处理指令向低地址方向进行
IF中断标志
TF跟踪标志
控制标志是由系统程序或用户程序根据需要用指令来设置的。
AX寄存器(8086寄存器的一种.成为累加寄存器)
AX寄存器是通用寄存器,是专门用来存放数据的寄存器。
高8位成为AH,低8位成为AL。
它是如何组织数据的?
AX中有两个字节
字节:
用8个二进制数表示一个字节
字:
用两个字节表示一个字,即16位二进制数据
双字:
两个字表示,即32位二进制数
当然还有4字的。
CPU内部是由哪些部件构成的?
1、寄存器
2、运算器(+-*/)
3、控制器,控制各器件运行,发送一些命令(各个运算器做什么有这个决定)
4、内部总线连接各种器件,在它们之间进行数据传输
物理地址表示方法
8086主板地址线20根进行寻址必须一次传20位二进制数,但是CPU最大一次只能床16个二进制位,如何解决?
比如有两个小纸条,每张最低只能写三位数字,要求用这两张纸条来表示一个四位数字
CPU也是类似于这样进行处理的。
CPU用地址加法器完成这样的功能
如上图,234成为基地址,23成为偏移地址
CPU用基地址+偏移地址得到实际物理内存地址
内存地址的表示方法:
基地址:
偏移地址=实际内存地址
计算方法:
实际内存地址=基地址*16+便宜地址
解释:
我们人是基于十进制运算的,要想后面加一个0即加一位,所以用234*10然后加23,而8086计算机是基于16进制的,所以要乘以16然后加上偏移地址
具体例子:
1402:
100;
1402H*16(10进制,16基址的10H)+0100H=14120H
其中H表示16进制。
CPU如何对内存进行逻辑的分段处理
1000H转化为基地址:
偏移地址
1000H:
0000
寄存器分为公用寄存器和段寄存器,通用寄存器用来存放普通的数据,而段寄存器与这里的段地址是一个概念,就是存放基地址的。
段地址和偏移地址
CS和IP寄存器
主要内容:
CS、IP寄存器;
debug命令的使用;
内存访问
1、程序被载入内存后,CPU是从哪里开始执行程序代码的?
在C语言中main函数是第一个被执行的
那么在汇编语言中是从哪里开始的呢?
我们知道,段地址*16+偏移地址=实际物理地址
CS(codesegment)寄存器保存了要被CPU执行的代码的基地址
IP寄存器保存了要被CPU执行代码的偏移地址
IP寄存器别名为指令指针寄存器
也就是说:
CS*16+IP=实际地址
2、Debug工具
什么是debuge
Debug是DOS、Windows都提供的实模式程序调试工具可以查看CPU各种寄存器中的内容和机器码级跟踪程序的运行
Debug命令的使用
Debug的R命令用来查看和改变各个寄存器内容
Debug的D命令查看内存中的内容
屏幕上的内容有3部分:
左边显示的是用“基地址:
偏移地址”即“CS:
IP”的形式表示内存内容。
中间是用16进制的形式表示内存内容。
右边是由ASCII的形式表示内存内容
如果想查看某个寄存器的内容,可以在d的后面加相应的寄存器:
然而用16进制表示的内容我们看不懂,如果希望用汇编语言显示,则可以用下面的命令
Debug的U命令将内存机器码转为汇编指令
下面用ucs:
0100表示查找cs寄存器
其中左边是基地址:
偏移地址。
中间是16进制表示的操作指令。
右边两行表示的是汇编指令
Debug的T命令跟踪代码运行
Debug的A命令以汇编指令格式在内存中写入指令
以上是把1234赋值给ax寄存器
验证:
CSIP指定的存地址中的内容就是CPU要执行的内容
第一步:
看一下CS中当前的内容
之后我们用T命令跟踪程序的执行
看出:
第一个cs=0B6FIP=0103即ES:
命令
第二个CS=0B6FIP=0108即JZ命令
第三个CS=0B6FIP=010A即CALL命令
通过相邻两个ip的差可以算出上一个指令所占用的空间是多大
下面看一个例子:
intnumber;
intmain(){
inta=10;
if(a>
0)
a++;
return0;
}
程序分为:
数据段,,代码段,堆栈段
其中数据段用来存放应用程序的全局变量,如本例的intnumber
代码段:
if(a>
0)a++;
堆栈段:
inta=10;
局部变量
如果我们想为全局变量赋值,我们必须先找到其在内存中的地址
CPU根据什么指定内存中的哪些数据是我们定义的全局变量?
即DS寄存器(内存访问)
CPU是根据DS(DataSegment)这个寄存器和任意一个通用寄存器的值或其他数值组成数据段的物理地址如:
DS:
[0]或者DS:
[BX]
第一个表示方法是将一个内容直接保存在DS寄存器的一个地址中
第二种表示时将一个内容保存到另一个BX通用寄存器中
当然还有其他表示方式
上面两种方式表示的都是物理内存中具体的地址
因为全局变量保存在内存地址中,因此我们要访问这些物理地址
内存的表示方法:
在汇编语言中表示内存的两种写法
movds:
[13ABH],1234H
即把1234放入内存地址ds*16+13AB中
mov[13ABH],1234H
第二种更常见
堆栈
栈的概念ss寄存器和sp寄存器post和pop指令
栈的数据结构:
栈是一种具有特殊的访问方式的存储空间,它的特殊性就在于,最后进入这个空间的数据,最先出去。
数据出栈:
在内存中栈是从高字节向低字节存放数据
堆栈段存放的是函数的局部变量,数据段存放的是全局变量
ss、sp寄存器
同代码段和数据段一样,CPU如何知道一段内存空间被当做栈使用?
Cpu是根据ss这个段寄存器和sp这个通用寄存器来感知堆栈段的存在。
也就是说,cpu从ss中取出一个值,再从sp中取出一个值,ss*16+sp所指向的那个内存单元即是栈内存
段寄存器ss存放栈的基地址,sp存放的是栈顶的偏移地址
执行入栈和出栈的时候,如何知道哪个单元是栈顶单元?
cpu规定,任何时候ss:
sp都指向站顶元素
push指令的执行过程:
如果ax=1234h。
即ax寄存器中存放的是1234这个16进制的数,现在想把它放入栈中,假设现在是空栈,ss:
sp指针指向栈顶,此时,将34压入栈低,12放到栈顶,即先放低字节的数,再放高字节的数,最后ss:
sp指针指向12
具体过程:
pushax
(1)将ax中的内容送入ss:
sp指向的内存单元处,ss:
sp此时指向新栈顶
(2)Sp=sp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 大灰狼 DOC