1、对内存单元中数据的访问
对于8086PC机,可以根据需要将一组内存单元定义为一个段。
物理地址=段地址×16+偏移地址 ;
将一组长度为N(N≤64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数 据的内存空间,从而定义了一个数据段。
例:用123B0H~123B9H的空间来存放数据
段地址:123BH 起始偏移地址:0000H 长度:10字节
段地址:1230H 起始偏移地址:00B0H 长度:10字节 ;
....
处理方法:(DS):([address])
用DS存放数据段的段地址
用相关指令访问数据段中的具体单元,单元地址由[address]指出
2、将123B0H~123BAH的内存单元定义为数据段
累加数据段中的前3个单元中的数据
mov ax, 123BH mov ds, ax mov al, 0 add al, [0] add al, [1] add al, [2]
累加数据段中的前3个字型数据
mov ax, 123BH mov ds, ax mov ax, 0 add ax, [0] add ax, [2] add ax, [4]
3、练习
给出00000H-0001F的数据,请写出下面代码的执行结果:
mov ax,[0000] mov bx,[0001] mov ax,bx mov ax,[0000] mov bx,[0002] add ax, bx add ax,[0004] mov ax,0 mov al,[0002] mov bx, 0 mov bl, [000C] add al,bl
4、用mov指令操作数据
已知:mov 段寄存器,寄存器
推测1 mov 寄存器,段寄存器
已知:mov 内存单元,寄存器
推测2 mov 内存单元,段寄存器
推测3 mov 段寄存器,内存单元
已知:mov 寄存器,数据
推测4 mov 段寄存器,数据
5、加法add和减法sub指令
推测1 add 段寄存器,寄存器
推测2 add 内存单元,内存单元
推测..
6、用DS和[address]形式访问内存中数据段方法小结
指令
mov ax, 1000H mov ds, ax mov ax, 11316 mov [0], ax mov bx, [0] sub bx, [2] mov [2], bx
(1)字在内存中存储时 ,要用两个地址连续的内存单元来存放,字的 低位字节存放在低地址单元中,高位字节存放再高地址单元中。
(2)用 mov 指令要访问内存单元,可以在mov指令中只给出单元的偏 移地址,此时,段地址默认在DS寄存器中。
(3)[address]表示一个偏移地址为address的内存单元。
(4)在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、 低地址单元和低8位寄存器相对应。
(5)mov、add、sub是具有两个操作对象的指令,访问内存中的数据段 (对照:jmp是具有一个操作对象的指令,对应内存中的代码段)。
(6)可以根据自己的推测,在Debug中实验指令的新格式。