基础-1

作者: 秣崖 | 来源:发表于2017-01-16 19:08 被阅读0次

存储单元

微型机存储器的存储单元可以存储1个byte(字节),1个byte包含8个bit(位)

byte=B     

1KB=1024B

1MB=1024KB

明确三个概念:

数据,控制,地址

一些基础操作及常识

MOV AX [3] ; //将3号单元的内容写入AX

8086数据线为16位 80396 32位 8088 8位

存储器

RAM 随机存储器  掉电丢     缓存等,显存,存放程序等

ROM 只读存储器  掉电不丢   多放模块的BIOS

由图可知:通过控制内部存储空间上数据的更改来控制外设。而注意这些逻辑地址是拟想的连续空间,其实是对器件的存储空间的连续寻址电路。

所以在对系统及其片上资源进行控制时,需要了解其内部空间地址的分布

寄存器

CPU内部是由运算器(信息处理),控制器,寄存器(信息存储)等构成。而程序员就是通过修改寄存器来实现对CPU的控制。

8086中 寄存器为16位

一般寄存器:AX(AH,AL) BX(BH,BL)等

两个BYTE(8位)组成一个字(16位)。

汇编不区分大小写

在使用寄存器需要注意:

1,AL,AH被使用时会被单独看成一个8位寄存器,AL的溢出进位不会存到AH中

2,寄存器与寄存器或者数据之间相互交换的时候,要注意位数相对应,以及存储数字的上下限。

16位CPU特征:

8086中地址总线为20位,其提供的数据位数为16为,所以要熟悉段地址+偏移地址的想法来进行寻址物理地址

这种方式形成了段思维,其完全以为这种寻址方式导致的,实际中不存在将内存分段,一般段地址需要在相加器中移位后和偏移地址相加

段寄存器cs和ip指令指针寄存器

8086中段寄存器有CS,DS,ES,SS  它们在8086要访问内存时提供内存单元的段地址

其中要主要地址合并时的操作

传送指令mov 不能修改cs和ip的值

可以通过转移指令修改,如 jmp 段地址:偏移地址

例:jmp 2AE3:3 执行后:CS=2AE3H  IP=0003H ,之后下一步将在2AE33H处取指令。

再如:jmp 3:0B16  ->: CS=0003H  IP=0B16H

仅修改IP寄存器:

jmp ax ;  //仅将ax中的值修改IP寄存器,CS寄存器中的值不变。

DEBUG SHELL

在DOSBOX环境下:

MOUNT C C:/DEBUG   //路径下有DEBUG.EXE

C:    //进入到挂载的C盘 即C:/DEBUG

DEBUG //进入DEBUG环境

R命令:查看或者修改当前所有寄存器的状态和值

-R   //查看

-R AX //修改AX寄存器的值

-D命令:例

-D 1000:0 //格式为段地址:偏移地址  (终止偏移地址)

-E 可以指定修改内存中的内容,以16进制形式数据

-U 下方

-T 下方

-A 下方

寄存器(内存访问)

一些称呼:

地址字单元---在地址开始的连续两个存储单元(16位,2个BYTE)

DS和[address]

DS段寄存器,用来存储默认的段地址:

mov bx,1000h

mov ds,bx

mov ax [0] ;//8086通过ds中默认的段地址加上[0]偏移地址,取出1000h地址处的数据传入AX寄存器。

且注意:8086不支持对段寄存器传入数据操作。

注意:字数据在内存的存储方式

2C34H在10000H上的存储方式(8086)

mov,add,sub

类似的add,sub指令不能对段寄存器进行直接操作,其他均可以

数据段:

自规定一段内存地址专门存放数据用,例如用DS存放数据段的段地址

实际上:数据和程序没有区别,被CS:IP指向的信息是程序;被传送,运算等指令操作的是数据。


reference:《汇编语言》王爽

相关文章

  • 1、基础

    创建项目 django-admin project_name cd project_name python ma...

  • 基础1

    什么是php? 什么是b/s &&c/s/和常用属性 程序语言 table 表格标签: 属性:border wi...

  • 基础1

    d键切换默认前景色、背景色 shift+ctrl+I 反选

  • 基础1

    ⒈文字:移动文字使用左最上方箭头 ⒉按住alt 切换放大镜放大缩小 ⒊Ctrl 0在图片放大缩小的情况下最快恢复到...

  • 基础-1

    递归 在递归中可以使用指针进行数字迭代操作,要注意*num++ (误) -----> (*num)++(对)层次...

  • 基础-1

    存储单元 微型机存储器的存储单元可以存储1个byte(字节),1个byte包含8个bit(位) byte=B ...

  • 基础-1

    Nest是一个渐进式的Node框架,可以在TypeScript和JavaScript(ES6、ES7、ES8)之上...

  • 基础-1

    主函数:程序有且只有一个主函数package main //导入主函数的包func main() {} 打印的模...

  • 基础1

    var / val 的区别 用kt文件转化成的java文件做对比 kotlin: decompile之后的jav...

  • 1、基础

    1、问题 答:7

网友评论

      本文标题:基础-1

      本文链接:https://www.haomeiwen.com/subject/lsnybttx.html