【不求甚解】《汇编语言》第 3 章:寄存器(内存访问)


前言

参考书籍:
王爽。汇编语言。北京:清华大学出版社, 2013:48-67

本人菜狗一枚,不敢咬文嚼字,只能站在巨人的肩膀上窥探一下未曾了解的世界。


一、DS 和 [address]

DS 寄存器存放要访问数据的段地址。
将内存单元中的内容送入一个寄存器中:mov 寄存器名, [内存单元地址]
需要使用其余寄存器作为中转来修改 ds 寄存器。

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

二、mov、add、sub 指令

指令形式(以 mov 举例)举例
mov 寄存器,数据mov ax, 8
mov 寄存器,寄存器mov ax, bx
mov 寄存器,段寄存器mov ax, ds
mov 寄存器,内存单元mov ax, [0]
mov 内存单元,寄存器mov [0], ax
mov 内存单元,段寄存器mov [0], ds
mov 段寄存器,寄存器mov ds, ax
mov 段寄存器,内存单元mov ds, [0]

三、栈

栈是一种具有特殊的访问方式的存储空间,最后进入空间的数据,最先出去,先进后出
8086CPU 的入栈出栈操作都是以字为单位。
8086CPU 并不会检测对栈操作是否超界,需自己注意栈满入栈超界栈空出栈超界问题。

SS:SP(指向栈顶元素)

任意时刻,进行入栈和出栈操作时,CPU 从 SS 和 SP 中得到栈顶的地址。

push(入栈)

push ax 表示将寄存器 ax 中的数据送入栈中。
先改变 SP,后向 SS:SP 处传送。

  1. SP = SP - 2,SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶。
  2. 将 ax 中的内容送入 SS:SP 指向的内存单元处,SS:SP 此时指向新栈顶

8086CPU 入栈时,栈顶从高地址向低地址方向增长。

pop(出栈)

pop ax 表示从栈顶取出数据送入 ax。
先读取 SS:SP处的数据,后改变 SP。

  1. 将 SS:SP 指向的内存单元处的数据送入 ax 中。
  2. SP = SP + 2,SS:SP 指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。

8086CPU 出栈时,原栈顶单元地址中的数据虽不在栈中,但依然存在。待再次入栈时,将被覆盖。

push 和 pop 指令格式

汇编指令语法描述
push 寄存器将一个寄存器中的数据入栈
pop 寄存器出栈,用一个寄存器接收出栈的数据
push 段寄存器将一个段寄存器中的数据入栈
pop 段寄存器出栈,用一个段寄存器接收出栈的数据
push 内存单元将一个内存字单元处的字入栈
pop 内存单元出栈,用一个内存字单元接收出栈的数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值