汇编语言 第三章 寄存器(内存访问)

1、字数据在内存中的存储

(1)内存以字节为单位划分为若干个单元。

(2)字在储存时要用两个地址连续的内存单元来存放。

(3)字数据的存-取原则:高-高,低-低。即小端法,低位字节存放在低地址内存单元,高位字节存放在高地址内存单元,并且取低地址内存单元地址作为字数据地址。

(4)在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8为寄存器相对应。

2、数据在内存单元和CPU之间的传送

(1)执行命令时,默认情况下,8086自动取寄存器DS中的值为内存单元的段地址。

1)将一段内存用作数据段,是编程时的一种安排;

2)在mov,add,sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。

3、汇编指令mov,add,sub

(1)mov:

可以将数据直接送到寄存器,也可以将一个寄存器的内容送入另一个寄存器

注意事项

1)两个操作数长度要一致。

2)常数不能作为第一个操作数(目的操作数)

3)常数作第二个操作数时,如果最高位是十六进制的A~F,前面要加零。

4)两个内存单元之间不能直接传送数据。

5)不能使用mov修改CS和IP的值

6)两个段寄存器之间不能直接传送。

7)不能把常数送到段寄存器。

(2)add:注意事项

1)add指令的操作数不能同时是内存单元。

2)add指令的操作数不能是段寄存器。

(3)sub:注意事项

1)两个内存单元不能直接用sub指令相减。

2)sub指令的操作数不能是段寄存器。

extra:mov,add,sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。

4、栈

(1)栈是一个逻辑概念。可以将一段内存空间当作栈来使用。

(2)栈顶的物理地址:SS:SP

1)SS:栈段段寄存器,存放栈段的段地址。

2)SP:栈指针寄存器,存放栈顶的偏移地址。

物理地址:(SS)×16+SP

(3)push和pop:

1)入栈和出栈均以字为单元

2)操作对象不能是常数

3)pop段寄存器中,段寄存器不能是CS和SS。

(4)栈顶超界

1)栈满时用push入栈

2)栈空时用pop出栈

原文地址:https://www.cnblogs.com/-Anguvia-/p/9852598.html

时间: 2024-10-10 14:02:00

汇编语言 第三章 寄存器(内存访问)的相关文章

汇编语言:第三章 寄存器(内存访问)

3.1内存中字的存储 CPU中寄存器是16位的,可以用高低字节存储一个字,但是每个内存单元是8位的,只能存储一个字节, 所以内存中用相邻2个内存单元存储一个字的高低字节 如:20000数值(4E20H)在地址0的内存单元数值为20H,在地址1的内存单元数值为4EH 两个内存单元存储一个字型数据叫做一个字单元, 字单元的起始地址为N就叫N地址字单元,表示一个字的低字节在地址N的内存单元,高字节在地址N+1的内存单元 任意连续的2个内存单元都可以组成一个字单元 3.2 DS和 [address] C

汇编语言第三章——寄存器(内存访问)

1.内存中字的存储 高位字节存放在高地址单元中,地位字节存放在低地址单元中. 将起始地址为N的字单元简称为N地址字单元. 2.DS和[address] 8086CPU自动取DS中的数据为内存单元的段地址. 8086CPU不支持将数据直接送入段寄存器的操作. 3.字的传送 mov ax,[0]:字型数据传送 mov al,[0]:字节数据传送 原因:高位字节存放在高地址单元中,地位字节存放在低地址单元中. 4.mov,add,sub指令 mov指令的几种形式: mov 寄存器,数据 mov 内存单

汇编语言(王爽) 第3章寄存器(内存访问)

3.1 内存中的字 内存中的字是16位的,以2个内存单元存储 地址大的存高位(字的左边8位),地址小的存低位(字的右边8位) 字单元:存放1个字形数据的内存单元,由2个内存单元组成,共16位 3.2 DS 一个寄存器的名字,用来放数据段的段地址 mov 指令可以把数据转到寄存器,一个寄存器的内容转到另一个寄存器,内存单元(字单元)转到寄存器 但是一般会mov ax,1000h;mov ds,ax而不是直接mov ds,1000h 因为8086CPU不支持直接把内存单元的东西转到段寄存器上面 3.

汇编语言 第三章 寄存器

3.1 内存中字的存储: 在内存存储时,由于内存单元是字节单元(一个单元存放一个字节),所以一个字要用两个地址连续的内存单元来存放,这个字的低位字节存放在低地址单元中,高位字节则会存放在高地址的单元中. 字单元,即存放一个字型数据的内存单元,由两个地址连续的内存单元组成.高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节. 3.2 Ds和address: CPU想要读取一个内存单元时,必须先给出这个内存单元的地址.8086中有一个DS寄存器,通常用来存放要用的数据的段

《java并发编程的艺术》读书笔记-第三章Java内存模型(二)

一概述 本文属于<java并发编程的艺术>读书笔记系列,第三章java内存模型第二部分. 二final的内存语义 final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.可以参照之前整理的关键字final.这里作者主要介绍final域的内存语义. 对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序. 初次读一个包含final域的对象的引用,与随后初次读这

&lt;java并发编程的艺术&gt;读书笔记-第三章java内存模型(一)

一概述 本文属于<java并发编程的艺术>读书笔记系列,继续第三章java内存模型. 二重排序 2.1数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性.数据依赖分下列三种类型: 名称 代码示例 说明 写后读 a = 1;b = a; 写一个变量之后,再读这个位置. 写后写 a = 1;a = 2; 写一个变量之后,再写这个变量. 读后写 a = b;b = 1; 读一个变量之后,再写这个变量. 上面三种情况,只要重排序两个操作的执行顺序,

3.寄存器(内存访问)

寄存器(内存访问) 看到标题才发现,第二章是寄存器直接与常量(数字)进行交互 内存中字的存储假设读取字节(流)为从左向右读对字的处理为从又向左正是因为不同,所以才会发问吧 DS与偏移地址:通用的获取地址的方式(CS:IP这个是给程序用的)类似于通用寄存器,但不能使用move ds,1:单纯的说指令太少了的话也对(jmp 不也就省2指令,还多出N多种),应该是跟指令流程相关(intel 指令手册,我的第一反应其实是是使用灵活的方式进行修改还是使用通用的方式进行修改...小学语文学太多了,自动升华)

第三章 寄存器(内存访问)

在第五章的学习之后,因为实验课在老师的抽查之后发现前面的知识很多都忘了,便对之前的知识进行了一遍系统的复习,对汇编的基础知识基本都已经掌握,也有了更加深刻的认识. 在第三章中我们主要从内存访问的角度来继续学习CPU执行指令的原理,并进一步的学习上一章的寄存器. <1>内存中字的存储 字由高位字节和低位字节组成,用16位寄存器来存储.高八位存放高位字节,低八位存放低位字节.字需要两个地址连续的内存单元(一个字节)来存储,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中.如下图,我们想要

汇编学习笔记03(寄存器内存访问)

1. 字在内存中存储时, 要有两个地址连续的内存单元来存放. 字的低位字节存放在低地址单元中, 高位字节存放在高地址单元中. 2. DS: 存放段地址的寄存器, 这个段是存放数据的. [address]: 偏移地址 mov指令在访问内存单元时, 只给出偏移地址, 段地址默认在DS段寄存器中 3. mov ax, 1000 mov ds, ax 8086CPU不支持将数据直接送入段寄存器, 所以只能通过通用寄存器来进行中转. 4. 字的传送 80806CPU是16位结构, 有16根数据线, 所以一