美文网首页
汇编语言:四、寄存器(内存访问)

汇编语言:四、寄存器(内存访问)

作者: Zidahong | 来源:发表于2019-04-27 17:23 被阅读0次

    内存字段的存储

    8086cpu用16位存储一个字。

    高八位存放高字节,低八位存放低字节。

    内存单元是字节单元(一个单元存放一个字节)。

    一个字用两个连续的内存单元存放。

    字单元:存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。

    高地址存放高字节,低地址存放低字节。

    以后,我们将起始地址为N的字单元称为N地址字单元。

    DS和[address]

    DS寄存器:存放要访问数据的段地址

    [addreess]:表示偏移地址

    用一个例子来说明:

    解析下列指令:

    指令

    1、 将数据1000H存入bx中,对应第一条指令。

    2、将bx中的数据存入ds中。

    3、将段地址为1000H,偏移地址为0的单元中的数据送入al中。

    在这段代码运行过程中,先将1000H存入ds中,存入之后,CPU读取数据时会以ds中的数据地址为段地址。

    第三条指令中[0]表示偏移地址为0,只有偏移地址是无法寻址的,CPU将ds中的数据作为段地址读取,这样就知道了其地址=段地址*16+偏移地址。从而将1000:0中的数据送入al中。

    字的传送

    字的传送例子

    mov、add、sub指令

    mov:移动,mov ax,bx 将bx中的值移动到ax中

    add:加,add ax,bx 将ax和bx的值相加然后放到ax中

    sub:减,sub ax,bx 将ax中的值减bx然后放到ax中

    1、mov的用法

    mov的用法

    2、add和sub的用法

    add和sub的用法


    栈:先进后出;

    CPU提供的栈机制

    8086CPU提供入栈和出栈两个命令

    两个最基本的为:

    PUSH:入栈

    POP:出栈

    8086CPU的栈操作

    SS和SP寄存器

    上文所描述的内容有两点疑问:

    1、CPU如何知道我们要用来当作栈使用的内存。

    2、执行push,pop时,如何知道哪个是栈顶单元。

    CPU通过SS和SP寄存器来解决上诉两个内容

    任意时刻,SS:SP指向栈顶元素,ss存放段地址,SP存放偏移地址。

    push指令的执行过程

    栈顶超界问题

    8086CPU无法保证我们所设定的栈的范围,所以编程时是否超界要自己注意。

    PUSH和POP指令

    push、pop的一些用法

    相关文章

      网友评论

          本文标题:汇编语言:四、寄存器(内存访问)

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