(三)DS段寄存器 和 [address]--汇编笔记

汇编语言

Posted by YiMiTuMi on March 12, 2020

内存中字的存储

CPU中,用16位寄存器来存储一个字。一个内存单元存放一个字节。

1个字 = 2个字节

1个字节 = 8位

一个内存单元一个字节,一共8位

一个字 = 2个内存单元,一共16位

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

DS 和 [address]

DS寄存器,通常用来存放要访问数据的段地址。(数据段地址寄存器)

mov指令将一个内存单元中的内容送入一个寄存器中。

  格式:mov  寄存器名,内存单元地址

[…] 表示一个内存单元,[…]中的数值表示内存单元的偏移地址。

指令执行时,8086CPU自动取ds中的数据位内存单元的段地址。

例:从10000H中读取数据:(10000H用段地址和偏移地址表示为1000:0)

mov bx, 1000H

mov ds, bx

mov al,[0]

[0]为偏移地址,段地址会自动从ds中获取。

8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器,所以需要一个寄存器来进行中转。

从寄存器到内存单元:

  格式:mov  内存单元地址,寄存器名

mov bx, 1000H

mov ds, bx

mov [0], al

数据段

累加数据段的前三个单元:一个单元是8位 al占8位

mov ax,123BH

mov ds,ax

mov al,0

add al,[0]

add al,[1]

add al,[2]

累加数据段中的前3个字型数据:一个字型数据占2个单元 16位

mov ax,123BH

mov ds,ax

mov ax,0

add ax,[0]

add ax,[2]

add ax,[4]

注意

mov ax, 1234H

mov al, 56H

此时 ax 的值为 1256H

总结

字在内存中存储时,要用两个地址连续的内存单元来存放,低位字节存放在低位地址单元中,高位字节存放在高地址单元中。

mov指令访问内存单元,可以在mov指令中只给处单元的偏移地址,此时,段地址默认在DS寄存器中。

[address]表示一个偏移地址位address的内存单元。

在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应。

mov、add、sub是具有两个操作对象的指令。jmp时具有一个操作对象的指令。

可以根据自己的推测,在Debug中实验指令的新格式。

迷迭香 – 回忆不想忘记得过去、纪念