《汇编语言》学习笔记2——寄存器

8086寄存器

CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW

  1.通用寄存器(数据寄存器):AX、BX、CX、DX。用于存放一般性的数据

    AX:作累加器用,是算术运算符的主要寄存器

    BX:基址寄存器

    CX:计数器

    DX:在做双精度运算时,用来与AX一起存放一个双字节操作数

  2.地址寄存器:指针、变址寄存器。(SI、DI、SP、BP)

    SI:源地址寄存器,用于存放源缓冲区的偏移地址

    DI:目的变址寄存器,用于存放目的缓冲区的偏移地址

    SP:堆栈指针寄存器,用于指出堆栈区的偏移地址

    BP:基址指针寄存器,用于指出堆栈去某个单元的偏移地址

  3.段寄存器:CS、DS、ES、SS

    CS:代码段寄存器,用于指出存放程序的代码段的段地址

    DS:数据段寄存器,用于指出存放数据的数据段的段地址

    ES:附加段寄存器,用于指出存放附加数据的附加段的段地址

    SS:堆栈寄存器,用于指出堆栈去的堆栈段的段地址

  4.控制寄存器:IP、FLAGS(PSW程序状态字)。控制程序的执行

    IP:指令寄存器,存放代码段的偏移地址、指出当前正在执行指令的下一条指令所在单元的偏移地址

一个16位的寄存器可以存储一个16位的数据(即数据最大值为2的16次方减1,65535)

其中又可分为两个8位寄存器:H、L。后缀为H的是高8位寄存器(AH),L是低8位寄存器(AL)

一个8位寄存器存数据最大为2的8次方减1,255

8086CPU可一次性处理两种尺寸的数据:

字节(byte):一个字节由8个比特(bit)(即二进制位)组成,可存在8位寄存器中

字(word):一个字由两个字节组成,两个字节分别为这个字的高位字节和低位字节

16位结构的CPU特性:

1.运算器一次最多处理16位的数据

2.寄存器的最大宽度为16位

3.寄存器和运算符之间的通路为16位

时间: 2024-08-28 08:55:53

《汇编语言》学习笔记2——寄存器的相关文章

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

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

小甲鱼零基础汇编语言学习笔记第六章之包含多个段的程序

在前面的几个章节中,我们的程序都是只有一个代码段,本章我们开始学习如何编写包含多个段的程序. 1.在代码段中使用数据 首先考虑这样一个问题,计算以下8个数据的和,结果存放在ax寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H 在前面的课程中,我们都是累加某些内存单元中的数据,并不关心数据本身,可现在我们要累加就是已经给定了数值的数据. 代码如下: 1 assume cs:codesg 2 codesg segment 3 dw 0123H

小甲鱼零基础汇编语言学习笔记第五章之[BX]和loop指令

这一章主要介绍什么是[BX]以及loop(循环)指令怎么使用,loop和[BX]又怎么样相结合,段前缀又是什么鬼,以及如何使用段前缀. 1.[BX]的概念 [BX]和[0]类似,[0]表示内存单元的偏移地址是0.要完整描述一个内存单元,需要两种信息:内存单元的地址,内存单元的长度(类型).[BX]同样也表示一个内存单元,它的偏移地址在bx中,比如指令:mov ax,[bx].这里我们以一个程序为例: 1 assume cs:codesg 2 codesg segment 3 start: mov

小甲鱼零基础汇编语言学习笔记第四章之第一个汇编程序

1.使用工具 代码编写:NotePad++,代码编译器:MASM 2.一个源程序从写出到执行的过程 第一步,使用文本编辑器,用汇编语言编写汇编源程序,这一步产生一个存储源程序的文本文件. 第二步,对源程序进行编译,连接.使用MASM.exe对源程序文件进行编译,产生目标文件,再使用LINK.exe对目标文件进行连接,生成可在操作系统中直接运行的可执行文件.可执行文件包括两个部分,程序(从源程序的汇编指令翻译过来的机器码)和数据(源程序中定义的数据):相关的描述信息 (程序有多大,要占多少内存空间

汇编语言学习笔记(8)——数据处理的基本问题

1.只有"bx.si.di. bp"四个寄存器可以用在[-]中来进行内存单元的寻址 2.这四个寄存器可以单个出现也可以以[by+zi]形式出现,其中y=x或p,z = s或d ,其他格式均为错误的. 3.当使用bp时,如果没有显性地给出段地址,则段地址默认在ss段寄存器中. 4.汇编语言中用三个概念来表达数据的位置: 立即数(idata): 直接包含在机器指令中的[数据](执行前在CPU的[指令缓冲器中]),在汇编指令中直接给出 寄存器 指令要处理的[数据]在[寄存器]中,在汇编指令中

汇编学习笔记02(寄存器CPU工作原理)

1. 什么是寄存器呢? 就是可以用指令进行读写的部件. 程序员通过改变各种寄存器中的内容实现对CPU的控制. 如果是16位CPU的话, 就是相当于2个存储单元. 2. 字在寄存器中的存储? 8086CPU可以一次性处理两种尺寸的数据 Byte: 字节型数据, 一个字节由8个bit组成, 可以存在8位寄存器中. Word: 字型数据, 一个字型由16个bit组成, 也就是两个字节, 称为这个字的高位字节和低位字节. 3. 常用汇编指令的学习(需要注意的是汇编指令是不区分大小写的) mov ax,

汇编语言学习笔记(二)

六.选择结构 if-then结构 C语言版本 if(count == 10) { count --; i++; } MASM汇编 .if count==10 dec count inc i .endif cmp指令,该指令用于比较两个参数大小 cmp mem, imm 比较内存mem和立即数imm大小 cmp reg, imm 比较寄存器reg和立即数imm大小 cmp reg, mem 比较寄存器reg和内存mem大小 cmp mem, reg 比较内存mem和寄存器reg大小 cmp imm

汇编语言学习笔记(五)

十六.数组 数组的基本表示方法 numary sdword 2,5,7 numary数组中有三个元素,为sdword类型,分别为2,5,7 empary sdword ?, ?,? empary数组为sdword类型元素,未初始化. 如果数组元素很多可通过 zeroary sdword 100 dup(0) zeroary数组中有100个0 empary sdword 3 dup(?) empary 数组中有3个未初始化的sdword类型数据 mov eax, numary+8; 表示把数组nu

汇编语言学习笔记(三)

八.逻辑运算指令 数字在计算机中以二进制存储,每个位数字为0或者1,当两个二进制数字进行逻辑按位&,逻辑按位|,逻辑异或^操作, 可以采用汇编语言提供的逻辑运算指令and,or, xor,not等指令. and指令: C语言&操作,将0110&1101得出结果为0100 C语言代码为 if(flag & maskit) count++; 汇编语言高级指令可实现: mov eax, flag .if eax & maskit inc count .endif 不采用高