首页 > 其他 > 详细

8086汇编 ——02

时间:2020-04-13 17:45:16      阅读:66      评论:0      收藏:0      [点我收藏+]

8086汇编 (02)--------------------------------------寄存器

 

解剖cpu

cpu由运算器, 控制器.寄存器组成

在cpu中:

  运算器惊醒信息处理;寄存器惊醒信息存储;控制器控制各种器件进行处理

  内部总线链接跟中器件,在他们之间进行数据的传送,

  对于汇编来说,cpu中的主要部件是寄存器,寄存器是cpu中程序员可以用命令读写的部件.程序员通过改变各种寄存器中的内容来实现对cpu的控制.

  通用寄存器

  AX,BX,CX,DX

   16位寄存器=高八位+低八位

  AX=AH+AL;

  BX=BH+BL;

  CX=CH+CL;

  DX=DH+DL;

技术分享图片

  mov搬移指令

mov ax,18    AX=18

  add加指令

add ax,8     AX=AX+8

  sub加指令

add ax,8     AX=AX-8

格式:  sub/mov /add  寄存器,寄存器/立即数

 

  操作对象的一致性

无论add 还是 mov必须严格的操作对象一致,如果相加超位,则舍弃超出位(c语言溢出概念)

物理地址

  cpu访问内存单元时,要给出内存单元的地址.所哟没存构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中哦都有唯一的地址,我们将这个唯一的地址成为物理地址.

  cpu通过地址总线送入存储器,必须是一个内存单元的物理地址.在cpu向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址.不同的cpu可以有不同 的形成物理地址的方式.

 技术分享图片

 技术分享图片 

相当于我们在stm32中学到的基地址+偏移量  

CS:IP承载着代码段地址和偏移地址

看下面两张图,

1cs为代码段寄存器,ip为指令指针寄存器他们指示了cpu当前要读取指令的地址.

2..我们写的每一个地址都是存在

3.我们通过地址加法器来组合地址逻辑,每一个物理地址的段地址与偏移地址都不是固定的

4.cs+ip的是我们实现对指令处理的基础, ip=段地址cs +ip+所读指令长度

5.执行指令,转到1.重复过程

 技术分享图片技术分享图片

 jmp:(无条件跳转指令)

 

JMP 1000H 段内直接转移,转移地址的偏移量由指令给出
JMP CX
段内间接转移,转移地址的偏移量由CX指出
JMP 1000H:2000H
段间直接转移,段码和偏移量由指令给出
JMP DWORD PTR [SI] 段间间接转移转移地址在SI所指地址开始的4个单元中

(百度)

 

jmp可以强行改变 cs:ip读取的指令

1 锁定段地址 锁定偏移量读取指令

jmp 2AE3 :3;  执行后  CS=2AE3H,IP=OO3H处执行指令

锁定当前的段地址  锁定偏移量读取指令

jmp ax; 执行前 ax=1000H,CS-2000H,IP=0003H

   执行后  ax=1000H,CS=2000H,IP=1000H

DS数据段地址(Data  Segment)

DS用于存放要访问的数据的段地址

我们讲DS寄存器,不得不提一下cs:ip寄存器,先看一下例子哦

mov bx,1000H

mov ds,bx

mov al,[0]

第一句——BX = 1000H  将段寄存器 定格在1000H

第二句——DS = BX 将数据段寄存器等于代码段寄存器

第三句——将DS[0]处的值放入al中

先看[0]的意思是偏移地址为0 ,一般形式寄存器:[xxxxx](寄存器+偏移地址);如果 寄存器 缺省,则默认为DS段代码。

再看 整个代码的意思就将1000H处的数据放进al,我们将DS理解为一个渡口,负责将寄存器中的值拉到自己的船上,再将船上的值给对岸的变量。而这个渡口是必须的!!

这里注意一下

1. mov 指的是赋值并非地址意义上的的转移

 2. 8086  CPU  不支持直接将一个数据送入段寄存器中  mov ds ,1000H是错误的

备注:在8086中 在数字后面加H表示十六进制

8086汇编中的栈

push 和 pop 出栈和入栈

入栈图push

技术分享图片

 出栈图pop

 技术分享图片

 

两张流程图诠释了栈的filo(先进后出)的模式,值得注意的是

1  push和pop的数据长度以字为单位(2个字节)

 2  push 和 pop的操作对象可以是指令中的寄存器或内存单元

在push 和 pop 之后 就要要引出ss:sp概念(栈顶指针)

任意时刻ss:sp指向栈顶元素

上图

技术分享图片

 

 ss:sp是不是类似于cs:ip呢?

结合对[xxxx],ds,pop,push的概念体会下这个

 技术分享图片

 

 

 

 

8086汇编 ——02

原文:https://www.cnblogs.com/forup/p/12682913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!