【汇编】学习笔记——第四篇

3.1~3.5  主记录  内存中字的存储  DS和[address]  字的传送  mov、add、sub指令  数据段


【3.1主要摘要】
1、CPU中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。
2、字单元概念:
字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。
高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放自行数据的低位字节。
3、任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可看成一个地址为N的字单元中的高位字节单元和低位字节单元。


【3.1个人思考】

1、 1字 == 2字节 == 16位
   (1字 == 2字节, 1字节 == 8位)
    那么就是说,一个16位寄存器就只能存储一个字的容量
2、内存单元的基本单位是字节。
3、一个字由两个连续的字节(也就是内存单元)来存储。


【3.2主要摘要】
1、CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址。
   (内存地址指系统RAM中特定位置,通常用十六进制来表示)
2、在8086PC中,内存地址由段地址和偏移地址组成。
3、8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
4、8086CPU不支持将数据直接送入段寄存器的操做。
例子:
mov al,[0]
“[…]”表示一个内存单元,“[…]”中的0表示内存单元的偏地址。
只有偏地址是不能定位一个内存单元的,在执行指令时,8086CPU将会自动取ds中的数据为内存单元的段地址。


【3.2个人思考】
1、首先,段寄存器不支持数据的直接输入,但可以通过寄存器中转,包括可以通过内存地址交互。
2、cs和ds同是段寄存器,它们之间有什么区别异同?
  (结合书上和网上及个人总结如下)
cs和ds同是段寄存器,同样存储着段地址,它们有什么区别呢?
cs表示代码段寄存器      ds表示数据段寄存器
cs:ip  指向的是cpu将从哪里执行找到将要执行的代码片段
cs表示存储的是cpu将要执行代码所在的物理内存的基地址
ds:[]  内存访问的数据的内存地址的基地址
借用百度网友的说法就是说:加入ds和cs同时指向一个内存单元,从ds的角度看来,这个内存单元里存储的就是一个数据,而从cs的角度看来,这个内存单元存储的就是一段可以执行的代码。
如果cs和ds同时出现,cpu听谁的呢?如检测点3.1第二小题
个人认为,cpu对代码的执行顺序取决于cs:ip的指向,而同时出现的ds作用于它对内存数据的读取,它们俩的同时出现,并不互相干扰。


【3.4主要摘要】
Mov 指令形式
mov 寄存器,数据
Mov 寄存器,寄存器
Mov 寄存器,内存单元
Mov 内存单元,寄存器
Mov 段寄存器,寄存器
Mov 寄存器,段寄存器
Mov 内存单元,寄存器
Mov 寄存器,内存单元
Add 指令形式
Add 寄存器,数据
Add 寄存器,寄存器
Add 寄存器,内存单元
Add 内存单元,寄存器
Sub 指令形式
Sub 寄存器,数据
Sub 寄存器,寄存器
Sub 寄存器,内存单元
Sub 内存单元,寄存器
注意:
段寄存器不可在算术指令中

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值