java打印对象内存地址 分布式事务 事务消息 分布式事务 几种解决方案 分布式事务-Seata 分布式事务-Seata 分布式事务-LCN-TCC 分布式事务-LCN 分布式事务-消息队列-定时任务-本地事件表 Zuul网关实战02 Zuul网关实战01 灰度发布落地实战2 灰度发布落地实战1 Gsnova on Heroku build Systemd Debian system initialization manage multi id_rsa ubuntu 64bits cannot run 32bits app REHL power auditing Debug Assembly for ARMv8 on QEMU ARM体系结构--寄存器 Run Debian iso on QEMU ARMv8 QEMU ARM64 guide cross compiler install buildroot install QEMU install python入门--数据结构 python入门--内置数据类型 python入门--类 异常 python入门--条件表达式 方法 python入门--数字 字符串 数组 RTC驱动分析 块设备驱动 TCP UDP socket 触摸屏驱动 USB驱动 LED按键中断 LCD 驱动 驱动信号 根文件系统 实验 内核实验 字符设备驱动程序 绪论 uboot 实验 LCD 实验 系统时钟和UART 中断控制器 Nand Flash控制器 MMU 实验 储存管理器实验 GPIO实验 点亮LED 编译加载驱动 制作烧写内核 dnw替代方法 MINI2440 TQ2440安装配套Linux 使用NFS 制作烧写跟文件系统 grub引导Windows 烧写裸版程序-linux Ubuntu 网络没有 eth0 Linux自动挂载 烧写裸板程序 电路基础 Mac词典 Vim插件 Assembly 综合研究 Assembly 指令总结 Assembly 直接定址表 Assembly 使用BIOS进行键盘输入和磁盘读写 Assembly 外中断 Assembly 端口 Assembly int指令 Assembly 内中断 Assembly 标志寄存器 Assembly 转移指令的原理 Assembly Call和ret指令 Assembly 数据处理两个基本问题 Assembly 灵活定位内存地址 Assembly 包含多个段的程序 Assembly [bx] loop Assembly 第一个程序 Assembly 寄存器 (内存访问) Assembly 寄存器 AWS VPN with EC2 hidden file in picture(linux) Assembly 基础 idea shortcuts 常用快捷键 idea plugin folder install ruby and jekyll

Assembly 寄存器 (内存访问)

2014年09月18日

###内存中字的存储 CPU用16位寄存器来存储一个字,高8位存放高位字节,低8位存放低位字节

内存单元是字节单元(一个单元存放一个字节) 0号单元是低地址单元,1号单元是高地址单元

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

###DS和[address] DS寄存器存放要访问的数据的段地址


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

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

8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器

###字的传送 因为8086CPU是16位结构,有16根数据线,所以,可以一次性传送16位的数据,也就是说一次性传送一个字

###sub指令 sub ax,9

将寄存器AX中的数值减去9 (AX=AX-9)

###数据段 在编程时可以根据需要,将长度为N(N≤64KB)、地址连续、起始地址为16的倍数的内存单元当做专门存储数据的内存空间

###栈 LIFO(Last In First Out)后进先出

###CPU提供的栈机制 8086CPU的入栈和出栈操作都是以为单位进行的

任意时刻,SS:SP指向栈顶元素


push ax 的执行,由两步完成:

1.SP=SP-2,SS:SP指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶;

2.将ax中的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶


pop ax 的执行过程和push ax刚好相反,由以下两步完成:

1.将SS:SP指向的内存单元出的数据送入ax中

2.SP=SP+2,SS:SP 指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶

###栈顶超界问题 8086CPU 不保证我们对栈的操作不会超界

###push、pop指令 push 寄存器 ;将一个寄存器中的数据入栈

pop 寄存器 ;出栈,用一个寄存器接收出栈的数据

push 段寄存器

pop 段寄存器

push 内存单元

pop 内存单元


push,pop 等栈操作指令,修改的只是SP。栈顶的变化范围最大为:0~FFFFH

###栈段 同数据段,只不过是当做栈空间来用

###小结 CS:IP 指向代码段

SS:SP 指向栈段

DS:[idata] 指向数据段(内存)