首页 /  技术专区  /  汇编语言 屏幕太窄?试试伸展一下吧 >

用DS和[address]实现字的传送

1、要解决的问题:CPU从内存单元中要读取数据 

要求:CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址; 

原理:在8086PC中,内存地址由段地址和偏移地址组成(段地址:偏移地址) 

解决方案:DS和[address]配合 ; 用 DS寄存器存放要访问的数据的段地址 ; 偏移地址用[...]形式直接给出

例1 将10000H(1000:0) 中的数据读到al中 

mov bx,1000H 
mov ds,bx 
mov al, [0]

例2 将al中的数据写到 10000H(1000:0)中

mov bx,1000H 
mov ds,bx 
mov [0],al

将段地址送入DS的两种方式

(1)错误❌ 

mov ds, 1000H

(2)正确✅

mov bx, 1000H 
mov ds, bx

8086CPU不支持将数据直接送入段寄存器 (硬件设计的问题) 

数据 ——> 一般的寄存器——>段寄存器

2、字的传送

8086CPU可以一次性传送一个字(16位的数据) 

mov bx, 1000H 
mov ds, bx 
mov ax, [0]     ;1000:0处的字型数据送入
ax mov [0], cx     ;cx中的16位数据送到1000:0处

image.png

3、案例1

image.png

mov ax, 1000H 
mov ds, ax 
mov ax, [0] 
mov bx, [2] 
mov cx, [1] 
add bx, [1] 
add cx, [2]

4、案例2

image.png

mov ax, 1000H 
mov ds, ax 
mov ax, 2C31 
mov [0], ax 
mov bx, [0] 
sub bx, [2] 
mov [2], bx



下一篇: DS与数据段

0/200
图片验证码