您的位置 首页 元件

汇编入门学习笔记 (二)—— 寄存器(内存拜访)、栈

疯狂的暑假学习之汇编入门学习笔记(二)参考:《汇编语言》王爽第三章一、寄存器(内存访问)1.DS和[address]DS数据段寄存器,…

张狂的暑假学习之 汇编入门学习笔记 (二)

参阅:《汇编语言》 王爽 第三章

一、寄存器内存拜访

1.DS和[address]

DS 数据段寄存器,用来寄存数据段地址

[address] 用来表明数据段的偏移地址

相同跟CS相同,不可以经过 mov ds, 1000 给ds赋值

要经过通用寄存器ax等。

例如:

mov ax, 1000

mov ds, ax

mov al, [0]

把1000:0的内容存进al

mov bx, 1000

mov ds, bx

mov [0], al

把al写进1000:0中

由于ax、bx、cx是16为的,内存单元是8为的,所以 mov ax, [0]会一次交给ax [1]跟[0]中的内容

例如:

假如内存状况为

10000H 11

10001H 22

10002H 33

10003H 44

……..

——————————–

mov ax, 1000

mov ds, ax

mov ax [0]

mov bx [2]

mov cx [1]

这上面运转后 ax=2211H 、bx=4433H、cx=3322H

mov ax,1000

mov ds, ax

mov ax, 1234

mov [0], ax

这上面运转后内存内容变为

10000H 34

10001H 12

………

2. CPU

相关寄存器:

ss: 记载栈的段地址

sp:记载栈的段地址的偏移地址

相关指令:

push 入栈 如 push ax 表明将寄存器ax的内容写入栈

pop 出栈 如 pop ax 表明从栈顶取出数据送入ax

初始时,sp指向栈低的下一个单元的地址,每次push,sp减2,pop,sp加2

例如:

将10000H~1000FH这段内存作为栈来用

为了10000H~1000FH这段内存作为栈来用,要设置 ss=1000 sp=0010(栈底的下一个单元的地址)

假如内存内容如下:

—————————

10000H

……….

1000CH

1000DH

1000EH

1000FH

10010H <------- sp

—————————

mov ax,0123

push ax

后内存内容如下:

—————————

10000H

……….

1000CH

1000DH

1000EH

1000FH 23 <------- sp

10010H 01

—————————

pop bx

后bx=0123H内存内容如下:

—————————

10000H

……….

1000CH

1000DH

1000EH

1000FH

10010H <------- sp

—————————

3.CPU 栈顶越界

8086CPU 确保咱们对栈的操作不会越界。也就说,8086 CPU 只知道栈顶在何处,不知道栈底和栈空间的巨细。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/276853.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部